Примеры

Вывод данных – это процесс их передачи из оперативной памяти на внешний носитель информации или устройство вывода данных.

Вывод данных

Примеры

Предыдущий пример с процедурой readln (I, K, L – целого типа) после выполнения процедур:

 

readln (I, K);

read (L);

 

и ввода из клавиатуры строки

 

5 10 15

обеспечит значения переменных

 

I = 5, K = 10.

 

После этого программа будет ждать нажатия клавиши Enter и ввода нового числа с новой строки, чтобы присвоить его переменной L.

 

Также возможно после каждого значения нажимать клавишу Enter.

 

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

 

Если вызвать процедуру readln без параметров, программа будет ждать нажатия клавиши Enter для продолжения своей работы.

 

 

Вывод, или запись (от англ. write – писать), значения выражения на дисплей осуществляется с помощью процедуры writeln или write.

 

Синтаксис процедуры write:

write (элемент1, элемент2, ..., елементN);

где write – имя процедуры, стандартный

идентификатор;

элемент1, элемент2, ..., елементN – список вывода.

Важно:

Элементом списка вывода может быть целое или действительное число (3, 42, –1732.3), символ (‘a’, ’z’), строка (‘Hellow world’), логическое значение (true), именованная константа, переменная, выражение, обращение к функции (если результатом функции является целый, действительный, символьный, строчный или логический тип).

Действие процедуры:

Все элементы списка вывода процедуры write печатаются в одной строке дисплея в заданном порядке.

 

Курсор остается на той же строке после последнего элемента.

Т.е. процедура не закрывает текущую строку.

 

Формально размер строки не ограничен.

Но если строка символов, которая выводится, имеет длину, превышающую ширину окна дисплея, то символы переносятся на новую строку.

 

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

 

Процедура writeln имеет синтаксис:

writeln (элемент1, элемент2, ..., елементN);

где writeln – имя процедуры, стандартный идентификатор;

элемент1, элемент2, ..., елементN – список вывода.

Действие процедуры: все элементы печатаются в одной строке дисплея в заданном порядке. После этого курсор устанавливается в начало следующей строки.

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

 

 

Когда распечатываются элементы списка вывода с помощью процедуры write (writeln), между ними пробелы автоматически не вставляются.

Если надо разделить выведенные значения пробелами, то они должны быть указаны в списке вывода непосредственно, например:

 

writeln (a,' ',b,' ',c);

 

Пусть переменные x, y, z, student, flag имеют следующие значения:

x := 3; y := 4; z := 6; student := 'Ivan'; flag := true;

 

Тогда вывод может выглядеть:

Процедуры вывода Результат
writeln (x,y,z);
writeln (x,’ ‘,y,’ ‘,z); 3 4 6
writeln (‘Hellow’, student); HellowIvan
writeln (‘Hellow ’, student,’.’); Hellow Ivan.
writeln (flag); true

 

С помощью процедур write, writeln возможно осуществить форматный вывод данных, т.е. представление результатов в нужном для пользователя виде.

 

Для этого после элемента в списке вывода записывают формат – двоеточие и число целого типа, которое означает количество позиций на экране (элемент : m).

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

 

Т.е. в этом случае процедура вывода выглядит так:

writeln (элемент1: ширина1, элемент2 : ширина2, ..., елементN : ширинаN);

 

Когда ширина поля больше количества цифр в числе, элемент автоматически дополняется начальными пробелами.

Внутри поля значения выравнивается по правой границе поля.

Если ширина поля недостаточная, ОР автоматически увеличивает ее до минимально необходимого размера.

 

Например, для переменных целочисленного типа, которые имеют значения k = 50, L = 3, d = 200, форматный вывод на экран дисплея выглядит следующим образом:

 

Процедуры вывода Результат
writeln (k, L, d)
writeln (k : 2, L : 2, d : 2); 50 3200
writeln (k, L : 2, d : 4); 50 3 200

 

Рассмотренный выше способ задания формата можно использовать для целых и действительных значений, символов, строк и логических выражений.

 

Но при таком задании формата действительные числа выводятся в экспоненциальной форме (или форме с плавающей точкой). Так для w = 123,45 имеем (пример для Lazarus):

Процедуры вывода Результат Количество позиций на экране
writeln (w); 1. 234500000000000E+002
writeln (w : 9); 1.2E+002
writeln (w : 15); 1. 2345000E+002

 

Если не использовать форматный вывод, то для данных действительного типа на экране выделяется 22 позиции, т.е. число представляется в виде:

,

где Х – число, по модулю меньше, чем 10;

Е – специальный символ;

± – знак «плюс» или «минус».

Это продемонстрировано использованием первой процедуры writeln (w).

Такой способ вывода называют стандартным.

Второй и третий пример использует формат в экспоненциальной форме. Еще вывод такого типа называют выводом с плавающей точкой.

 

Необходимо отметить, что ширину поля для действительных чисел необходимо указывать не меньше 10 (Delphi 6) и 9 (Lazarus).

 

В OP для действительных чисел предусмотрен еще один тип вывода – с фиксированной точкой.

 

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

 

Если количество цифр, которые выводятся, меньше ширины поля, то значение выравнивается по правой

границе, т.е. слева добавляются пробелы.

Если перед числом, которое означает ширину поля, поставить минус, значения выравниваются по левой границе.

 

Например, переменную w можно вывести на экран таким образом:

Процедуры вывода Результат
writeln (w : 6:2); 123.45
writeln (w : 8:2); 123.45
writeln (w :– 8:2); 123.45
writeln (w : 8:4); 123. 4500

 

Если нужно осуществить пропуск n пустых позиций, то это возможно сделать с помощью спецификации