Вывод данных в окно программы

В консольных приложениях для вывода данных на экран есть два оператора вызова процедур с именами Write и WriteLn (далее их будем называть просто операторами вывода или операторами Write и WriteLn). Оператор WriteLn отличается от оператора Write тем, что после завершения вывода курсор в окне программы переводится в начало следующей строки, и если текущая строка была последней, то внизу окна программы появляется новая, пустая, а все другие смещаются вверх.

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

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

Пример. Составить программу вычисления с повышенной точностью (Extended) тангенса угла, значение которого (целое число) в градусах вводится с клавиатуры в ответ на приглашение к вводу. Вывести на экран с пояснениями введенное значение угла в градусах, соответствующее ему значение в радианах и вычисленное значение тангенса этого угла.

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils, Math;

var

R:Extended;

Fi:Integer;

begin

//Вывод приглашения к вводу угла в градусах

Write('Введите значение угла в градусах: ');

ReadLn(Fi);//Ввод значения угла в переменную Fi

R:=Fi*Pi/180;//Перевод угла в радианы и присвоение переменной R

//Вывод значения R

WriteLn('Значение угла в радианах = ',R);

WriteLn; //Пропуск строки

//Вывод R и tg(R) с поясняющими текстами

WriteLn('tg(', R, ') = ', Tan(R));

ReadLn;

end.

где заключенные в апострофы тексты, например, 'Fi = ', 'tg( ' и ' ) = ' – строковые константы, R и выражение Tan(R) представляют данные типа Extended.

Протокол ввода–вывода при выполнении этой программы при вводе для Fi значения 30 будет иметь вид:

а курсор перейдет в начало следующей, новой строки.

Первый оператор Write выводит приглашение к вводу, в ответ на которое пользователь вводит величину угла, в данном случае 30. Ввод данных заканчивается нажатием клавиши Enter, что приведет к переводу курсора в начало новой строки. Следующий далее оператор WriteLn('Значение угла в радианах = ',R) выводит значение угла в радианах и переводит курсор на начало следующей, пустой строки, оператор WriteLn без параметров оставит эту строку пустой и переведет курсор в начало еще одной новой пустой строки, в которую оператор WriteLn('tg(', R, ') = ', Tan(R)) выведет последовательность символов:

tg( 5.23598775598299E-0001) = 5.77350269189626E-0001.

В этом примере для всех типов данных использовались принятые по умолчанию (что не всегда удобно) форматы вывода: вещественные выводятся в экспоненциальной форме в 23 позициях с четырьмя цифрами порядка; целые и строковые занимают минимально необходимое число позиций, причем целые положительные изображаются без знака +.

Программисту, чтобы определить свою форму вывода, следует использовать один из форматов вывода, записываемый непосредственно за элементом списка вывода либо в виде :n – для любого типа данных, либо в виде :n:m – при выводе вещественного числа в естественной форме (<целая часть><точка><дробная часть>), где n – выражение целого типа, значение которого задает длину поля (число знакомест) в строке на экране, отводимых для изображения значения, а m – выражение целого типа, значение которого задает количество цифр в дробной части числа.

Значение выражения n может быть больше или меньше требуемого для представления значения количества знакомест. В первом случае выводимое значение будет расположено в правой части поля вывода. Во втором случае под вывод значения отводится минимально необходимое число позиций (для вещественных в экспоненциальной форме оно равно 10).

Например, при выполнении следующей программы:

program Project2;

{$APPTYPE CONSOLE}

uses

SysUtils, Math;

var

R:Extended;

Fi:Integer;

begin

//Вывод приглашения к вводу угла в градусах

Write('Введите значение угла в градусах: ');

ReadLn(Fi);//Ввод значения угла в переменную Fi

R:=Fi*Pi/180;//Перевод угла в радианы и присвоение переменной R

//Вывод значения R

WriteLn('Значение угла в радианах = ',R:0);

WriteLn; //Пропуск строки

//Вывод R и Tan(R) с поясняющими текстами

WriteLn('tg(', R:0:2, ') = ', Tan(R):14);

ReadLn;

end.

протокол ввода–вывода при вводе для Fi значения 30 будет иметь вид:

Значение R первый раз выведено в экспоненциальной форме в минимально необходимое число позиций (формат вывода :0), а второй раз – в естественной форме также в минимально необходимое число позиций (формат вывода :0:2), так как в обоих случаях длина поля вывода указана равной нулю, то есть меньше минимально необходимой. Значение выражения Tan(R) выведено в экспоненциальной форме в поле из 14 позиций с 6 значащими цифрами мантиссы (формат вывода :14).

Наши рекомендации