Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
16_bilet.docx
Скачиваний:
4
Добавлен:
05.08.2019
Размер:
22.74 Кб
Скачать

Вывод на экран

При выводе выполняется преобразование из внутреннего представления в символы, выводимые на экран. Для этого определены стандартные процедуры write и writeln.

write(список);

writeln[(список)];

Процедура write выводит указанные в списке величины на экран, а writeln вдобавок к этому переводит курсор на следующую строку. Процедура writeln без параметров просто переводит курсор на следующую строку.

Выводить можно величины логических, целых, вещественных, символьного и строкового типов. В списке могут присутствовать не только имена переменных, но и выражения, а также их частный случай — константы. Кроме того, для каждого выводимого значения можно задавать его формат, например:

writeln('Значение a = ', a:4, ' b = ', b:6:2, sin(a) + b);

Рассмотрим этот оператор подробно (переменные a и b описаны выше). В списке вывода пять элементов, разделенных запятыми. В начале записана строковая константа в апострофах, которая выводится без изменений, со всеми пробелами. В непосредственной близости от нее будет выведено значение целой переменной a. После имени переменной через двоеточие указано количество отводимых под нее позиций, внутри которых значение выравнивается по правому краю.

Третьим элементом списка является строковая константа, поясняющая расположенное после нее значение переменной b. Для b указаны две форматные спецификации, означающие, что под эту переменную отводится всего шесть позиций, причем две из них — под дробную часть (еще одна позиция будет занята десятичной точкой, итого на целую часть остается три позиции).

Последний элемент списка вывода — выражение, значение которого будет выведено в форме по умолчанию (с порядком):

Значение a = 2 b = 3.78 4.6892974268E+00

Теперь, когда мы познакомились с примером, можно сформулировать общие правила записи процедур вывода.

  • Список вывода разделяется запятыми.

  • Список содержит выражения, а также их частные случаи — переменные и константы логических, целых, вещественных, символьного и строкового типов.

  • После любого значения можно через двоеточие указать формат, то есть количество отводимых под него позиций. Если значение короче, оно 'прижимается' к правому краю отведенного поля, если длиннее, поле 'раздвигается' до необходимых размеров.

  • Для вещественных чисел можно указать второй формат, указывающий, сколько позиций из общего количества отводится под дробную часть числа. Необходимо учитывать, что десятичная точка также занимает одну позицию. Если второй или оба формата не указаны, вещественное число выводится в форме с порядком.

  • Если форматы не указаны, под целое число, символ и строку отводится минимально необходимое для их представления количество позиций. Под вещественное число всегда отводится 17 позиций, причем 10 из них — под его дробную часть.

  • Форматы могут быть выражениями целого типа.

Теперь наконец-то мы изучили достаточно материала, чтобы с полным пониманием написать первую законченную программу.

Пример. Программа, которая переводит температуру в градусах по Фаренгейту в градусы Цельсия по формуле: С = 5/9 (F – 32), где C — температура по Цельсию, а F — температура по Фаренгейту.

program temperature;

var fahr, cels : real; { 1 }

begin

writeln('Введите температуру по Фаренгейту'); { 2 }

readln(fahr); { 3 }

cels := 5 / 9 * (fahr – 32); { 4 }

writeln('По Фаренгейту: ', fahr:6:2, ' в градусах Цельсия: ', cels:6:2); { 5 }

end.

Для хранения исходных данных и результатов требуется выделить место в памяти. Это сделано в операторе 1. Для переменных fahr и cels выбран вещественный тип real. Оператор 2 представляет собой приглашение ко вводу данных.

Ввод выполняется в операторе 3 с помощью процедуры readln. В операторе 4 вычисляется выражение, записанное справа от операции присваивания, и результат присваивается переменной cels. При вычислении целые константы преобразуются компилятором в вещественную форму. В пятом операторе выводятся исходное и рассчитанное значение с соответствующими пояснениями.

Совместимость типов

Операнды в выражениях должны быть совместимых типов. Совместимость типов величин, участвующих в каждой операции, достигается при выполнении по крайней мере одного из следующих условий.

  • Оба типа одинаковые.

  • Оба типа вещественные.

  • Оба типа целочисленные.

  • Один тип является поддиапазоном другого.

  • Оба типа являются отрезками одного и того же основного типа.

  • Оба типа являются множественными типами с совместимыми базовыми типами.

  • Один тип является строковым типом, другой — строковым типом или типом pchar.

  • Один тип — pointer, другой — любой тип указателя.

  • Один тип — pchar, другой — символьный массив с нулевой базой вида array [0 .. X] of char (только при разрешении расширенного синтаксиса директивой {$X +}).

  • Оба типа являются указателями идентичных типов (только при разрешении расширенного синтаксиса директивой {$X+}).

  • Оба типа являются процедурными с идентичными типами результатов, одинаковым числом параметров и соответствием между параметрами.

Совместимость по присваиванию

Этот вид совместимости требуется при присваивании значений, например в операторе присваивания или при передаче значений в подпрограмму.

Значение типа T1 является совместимым по присваиванию с типом T2 (то есть допустим оператор T1 := T2), если выполняется одно из следующих условий.

  • T1 и T2 — тождественные типы (кроме файловых или типов, содержащих элементы файлового типа).

  • T1 и T2 — совместимые порядковые типы, при этом значения типа T2 попадают в диапазон возможных значений T1.

  • T1 и T2 — вещественные типы, при этом значения типа T2 попадают в диапазон возможных значений T1.

  • T1 — вещественный тип, а T2 — целочисленный.

  • T1 и T2 — строковые типы.

  • T1 — строковый тип, а T2 — символьный (char).

  • T1 и T2 — совместимые множественные типы, при этом все значения типа T2 попадают в диапазон возможных значений T1.

  • T1 и T2 — совместимые типы указателей.

  • T1 — тип pchar, а T2 — строковая константа (только при разрешении расширенного синтаксиса директивой {$X+}).

  • T1 — тип pchar, а T2 — символьный массив с нулевой базой вида array [0 .. n] of char (только при разрешении расширенного синтаксиса директивой {$X+}).

  • T1 и T2 — совместимые процедурные типы.

  • T1 представляет собой процедурный тип, а T2 — процедура или функция с идентичным типом результата и соответствующими параметрами.

На этапе компиляции и выполнения выдается сообщение об ошибке, если совместимость по присваиванию необходима, а ни одно из условий предыдущего списка не выполнено.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]