Информация, выводимая любой программой должна быть легко читаемой, понятной для пользователя. Для этого, в частности, нужно, чтобы действительные числа были выведены в алгебраической форме, как число с точкой, а также в записях содержались пробелы, отделяющие числа от текста и др. Для этого в языках программирования используются форматы вывода.
При использовании форматов для вывода значений в текстовые файлы или на экран около имени, выводимого данного явно указывается размер поля для размещения его значения (после знака :), в виде переменная:ширина поля.
Форматы для данных различных типов
1. Для целых данных (integer и др.) - формат задается одним числом, определяющим число позиций, отводимых на это число. Например:
Writeln(i:5);
выведет на экран значение переменной i, используя для этого 5 позиций (даже если число занимает меньше 5 позиций, свободные позиции все равно будут отображаться).
Если переменная i:=34, то на экран будут выведены 3 пустых позиции (они для наглядности показаны знаком подчеркивания) и число 34, т.о. всего 5 позиций.
_ _ _ 34
Если переменная i:=2345666, то данный формат (i:5) не может быть использован (выводимое число занимает больше позиций) и будет просто игнорироваться и все значение переменной отобразиться на экране.
2345666
2. Для вещественных данных (real и др.) - формат задается либо одним числом, определяющим число позиций, отводимых на это число в экспоненциальной форме; либо двумя числами, первое из которых обозначает общий размер поля, отведенного под это число, второе - число знаков после запятой, т.е. точность. Например:
Writeln(p:12); или Writeln(p:6:2);
Если переменная p:=1234.,6789, то в первом случае на экране появится
_1.2346E+004
а во втором
1234.68
Еще один пример. Пусть значение переменной X равно 123.45678, тогда оператор
Write(X); выведет "_1.23456780000000000E+02"
Write(X:8:2); выведет "_ _123.46"
Write(X:10:5); выведет "_123.45678"
Write(X:10); выведет "_1.23E+002"
Write(X:8); выведет "_1.2E+002"
Write(X:1); выведет "_1.2E+002"
Пример программы, демонстрирующей возможности форматированного вывода числовых данных (3_1_7.exe).
3. Для строковых и символьных данных (string, char) - формат задается одним числом, определяющим число позиций, отводимых на значение этих данных (т.е. на символ или набор символов). Например, для строковой переменной ss:=’СТРОКА’ и для символьной переменной c:=’C’, операторы
Writeln(ss:8); Writeln(c:4);
выведут на экран
_ _ СТРОКА
_ _ _ С
Т.е. в первой строчке две первые позиции из восьми отводимых будут пустыми, а остальные занимаются словом СТРОКА. Во второй строке из 4 позиций отводимых под переменную, первые три будут свободными, а последняя занята символом С.
Может оказаться полезным, что оператор Write(' ':n) выведет на экран n пробелов. При n=6 будет
_ _ _ _ _ _
Если в разобранной выше задаче переписать оператор writeln, который выводит на экран значение времени и скорости троллейбуса, таким образом:
writeln(‘ За ’,t:6:2,’ сек. скорость троллейбуса v=’,v:5:1,’ м/с,’);
то на экране появится (знак подчеркивания показан для демонстрации пустых позиций форматированного вывода):
За _ _1.00 сек. скорость троллейбуса v= _ _1.5 м/c,
Покажем еще один пример использования форматированного вывода. Далее приведена программа и результаты ее работы.
program Format_Vyvod;
var
a,b : real;
i,j : integer;
s : string;
begin
a:=2e5; {вещественная переменная}
b:=3.1415926; {вещественная переменная}
s:=’privet’; {строковая переменная}
i:=2; j:=3; {целая переменная}
writeln(a:10:1 , s:15);
writeln(a:8, b:8:3);
writeln(‘i=’, i:1, ‘ j=’,j:5);
end.