Отправляет email-рассылки с помощью сервиса Sendsay

Всё о работе в Интернет

  Все выпуски  

Занятие 36.


Сегодняшнее наше занятие, уважаемые подписчики, посвящено операторам ввода.

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

ОПЕРАТОРЫ ВВОДА

Ввод данных с клавиатуры в программе осуществляется с помощью операторов обращения к стандартным процедурам, имеющих вид 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.35 14 X”.

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

8. Поток исходных данных считается исчерпанным полностью в двух случаях:

-       значений в потоке действительно не осталось;

-       для ввода был использован оператор ReadLn.

9. Оператор ввода Read без списка переменных игнорирует значения из потока исходных данных.

10. Оператор ввода ReadLn без списка переменных приводит к исчерпанию потока исходных данных и, кроме того, требует обязательного нажатия клавиши <Enter>. Это свойство оператора ввода ReadLn очень часто используют  для задержки экрана вывода результатов работы программы. Если его разместить в самом конце программы, то на завершающем этапе своего выполнения она перейдёт в состояние ожидания нажатия клавиши <Enter>. Это даёт возможность пользователю просмотреть всё то, что было выведено на экран в процессе работы программы.

Уважаемые подписчики! При необходимости задать вопрос, проконсультироваться, уточнить или обсудить что-либо обращайтесь через Гостевую книгу моего персонального сайта http://a-morgun.narod.ru. При этом настоятельно рекомендую пользоваться браузером Internet Explorer.

С уважением, Александр.


В избранное