«Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения»
4. Процедура ввода данных
Для ввода значений величин типа: real, integer, char используется стандартная процедура, которую условно можно представить в следующем виде:
read[ln][([файл], идентификатор1[,идентификатор2,...])]
где: файл - имя логического файла для ввода значений с внешнего физического файла;
идентификатор1, идентификатор2… – идентификаторы переменных, которые последовательно получают необходимые для ввода значения.
В рассматриваемой записи процедуры ввода квадратными скобками отмечены те элементы, которые могут отсутствовать, например, могут встретиться такие записи:
read[(идентификатор1[,идентификатор2,...])];
readln(идентификатор1[,идентификатор2,...])];
readln,
то есть в программе это может быть записано в виде
readln(x,y,z);
Для рассматриваемых процедур выполняются два основных правила.
ПРАВИЛО 1. Если тип величины real, integer, то считывается одно число, знак пробела воспринимается как разделитель.
Это правило позволяет для переменных, если они типа real или integer, вводить значения в двух вариантах: или через пробел (при завершении набора значений нажимается клавиша <ENTER>), или просто через клавишу <ENTER>. Возможен также комбинированный вариант из этих двух.
При вводе с клавиатуры особого различия между read и readln нет. Это отличие характерно при считывании значений из файла, о чем будет сказано далее. Можно отметить, что дополнение ln обеспечивает переход для чтения новой строчки. При вводе значений с клавиатуры это проявится в том, что выполнение нескольких процедур read() может происходить без промежуточного нажатия <ENTER>, а процедуры readln() – только после нажатия <ENTER>.
ПРИМЕР. Необходимо задать значения переменных целого типа: i = 2, j = 5, k = 8.
1-й вариант:
VAR i,j,k: integer;
. . . . . . . . . . . . .
read(i, j);
read(k );
. . . . . . . . . . . . .
Для этого варианта при вводе значений с клавиатуры цепочка действий может иметь следующий вид:
2 [пробел] 5 [пробел] 8 <ENTER>
2-й вариант:
VAR i,j,k: integer;
. . . . . . . . . . . . .
readln(i, j);
read(k );
. . . . . . . . . . . . .
В этом случае при вводе значений с клавиатуры в виде
2 [пробел] 5 [пробел] 8 <ENTER>
они будут заданы только переменным i и j, а для того чтобы задать еще и значение k, необходимо набрать на клавиатуре
8 <ENTER>
Для этого варианта более простой ввод значений может иметь вид
2 [пробел] 5 <ENTER> 8 <ENTER>
или
2 <ENTER> 5 <ENTER> 8 <ENTER>
ПРАВИЛО 2. Если тип величины char – считывается один символ, знак пробела читается как символ. Поэтому при вводе символьных величин пробел как разделитель не используется, то есть символьные величины набираются последовательно, без пробела, с последующим нажатием <ENTER>. Можно также все значения набирать через <ENTER>.
ЗАМЕЧАНИЕ. В начале работы программа создает пустую строку, которая при введении символьных переменных воспринимается как символ, и его необходимо пропустить. Поэтому при введении символьных величин в начале программы пишут:
readln; read(c,cz);
Исходя из рассмотренных двух правил рекомендуется переменные разных типов вводить по группам, не смешивая типы.
ЗАМЕЧАНИЕ. Тип boolean вводить через процедуру ввода ЗАПРЕЩЕНО. Рекомендуется для этого использовать типизированную константу.
Процедуру readln без параметров можно использовать также для остановки выполнения программы до нажатия клавиши <ENTER>. Но если перед этим использовалась процедура read, остановка не произойдет.
«3. Описание величин»
5. Процедура вывода данных