Разумеется, этими операторами нам приходилось пользоваться постоянно. Теперь изучим их максимально подробно.
ОПЕРАТОРЫ ВВОДА
Ввод данных с клавиатуры в программе осуществляется с помощью операторов обращения к стандартным процедурам, имеющих вид Read(<список переменных>); и ReadLn(<список переменных>);.
Вводиться могут значения только переменных, и только простых типов, за исключением логического. Имена переменных в списке указываются через запятую. Список переменных может быть пустым (в этом случае скобки не используются). Например, Read(A,B,C);
ReadLn(x,y); Read; ReadLn; и т.п.
Основные особенности применения операторов ввода данных с клавиатуры таковы:
1. Выполнение оператора ввода данных с клавиатуры состоит в совместной деятельности компьютера, выполняющего программу, и пользователя, который запустил эту программу на выполнение. Встретив в программе оператор ввода, компьютер переходит в состояние ожидания потока исходных данных. В этот момент задача
пользователя состоит в том, чтобы сформировать этот поток данных с помощью клавиатуры.
2. Поток исходных данных представляет собой строку печатаемых на клавиатуре знаков, которая заканчивается нажатием клавиши <Enter>. При этом должны учитываться следующие особенности:
-каждое числовое значение в этой строке должно отделяться от соседнего значения по крайней мере одним пробелом;
-символьные значения (типа Char), в том числе и пробелы, воспринимаются из строки подряд;
-в качестве значения типа String (текстового фрагмента) воспринимается весь остаток строки, который может быть произвольной длины и даже
пустым.
3. Для каждой очередной переменной из списка оператора ввода данных из потока исходных данных выбирается очередное значение и проверяется на соответствие типу переменной. В случае положительного результата проверки это значение присваивается переменной, после чего осуществляется переход к очередному значению
из потока и к очередной переменной из списка. Например, при наличии в программе описания Var a:Real; b:Integer; c:String;, оператора ввода Read(a,b,c);, и при необходимости придать переменным значения a=2.35, b=14, c=’ X’, поток исходных данных должен быть построен в виде строки “2.35 14 X”. Выполнение оператора ввода в этом случае равносильно выполнению последовательности операторов присваивания: a:=2.35;
b:=14; c:=’ X’;.
4. При несоответствии типов переменной из списка и значения из потока в процесс ввода прекращается и появляется сообщение об ошибке. В частности, если переменная из списка – числового типа, а очередное значение из потока данных – нет, то появляется сообщение об ошибке “Error 106: Invalid numeric format” – неправильный числовой формат. Такое же сообщение появится и в том случае, если переменная из списка – целочисленная, а значение из потока – числовое вещественное. Этим часто пользуются, когда в процессе ввода числовых данных возникает необходимость быстро прекратить исполнение программы. Нужно просто ввести любую букву.
5. Поскольку в качестве значения переменной типа String выбирается весь остаток строки потока исходных данных, то из этого следует, что в списке оператора ввода
может быть только одна переменная типа String и стоять она должна на последнем месте.
6. Если в потоке исходных данных значений оказалось недостаточно и список переменных данного оператора ввода не был исчерпан, то ЭВМ снова переходит в состояние ожидания нового потока исходных данных. Например, при тех же переменных a, b, c (см. выше) поток исходных данных “2.35” не исчерпывает список переменных оператора ввода Read(a,b). Точно также не исчерпывается список ввода Read(c,b,a) потоком исходных данных “2.3514 X”.
7. Если в потоке исходных данных оказалось достаточное количество значений, то список переменных исчерпывается полностью и оператор ввода считаться выполненным. Программа переходит к выполнению последующих операторов. Неисчерпанный поток исходных данных может быть использован последующими операторами
ввода, если они есть в данной программе. В противном случае остаток потока будет проигнорирован.
8. Поток исходных данных считается исчерпанным полностью в двух случаях:
-значений в потоке действительно не осталось;
-для ввода был использован оператор ReadLn.
9. Оператор ввода Read без списка переменных игнорирует значения из потока исходных данных.
10. Оператор ввода ReadLn без списка переменных приводит к исчерпанию потока исходных данных и, кроме того, требует обязательного нажатия клавиши <Enter>.
Это свойство оператора ввода ReadLn очень часто используютдля задержки экрана вывода результатов работы программы. Если его разместить в самом конце программы, то на завершающем этапе своего выполнения она перейдёт в состояние ожидания нажатия клавиши <Enter>. Это даёт возможность пользователю просмотреть всё то, что было выведено
на экран в процессе работы программы.
Уважаемые подписчики!При необходимости задать вопрос, проконсультироваться, уточнить или обсудить что-либо обращайтесь через Гостевую книгу моего персонального сайта http://a-morgun.narod.ru. При этом настоятельно рекомендую пользоваться браузером Internet Explorer.