КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Вывод данных в окно программыВ консольных приложениях для вывода данных на экран есть два оператора вызова процедур с именами 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).
|