Ввод и вывод данных

Для ввода и вывода информации используются файлы. При выполнении программ на Паскале автоматически открываются два файла со специальными именами INPUT и OUTPUT. Файл INPUT обеспечивает ввод символов с клавиатуры, а файл OUTPUT – вывод символов на экран.

Для ввода данных используются процедуры READ и READLN, а для вывода - WRITE и WRITELN. У компьютера есть и другие устройства ввода-вывода – дисководы, принтер и др. К каждому из них можно обратиться путем определения соответствующих файлов.

 

Процедуры ввода-вывода имеют следующий формат:

 

READ(<файловая переменная>,<список ввода>);

READLN(<файловая переменная>,<список ввода>);

WRITE(<файловая переменная>,<список вывода>);

WRITELN(<файловая переменная>,<список вывода>);

 

В качестве файловой переменной для ввода данных с клавиатуры используется INPUT, а для вывода на экран – OUTPUT. Список ввода включает имена переменных, которым будут присвоены введенные данные. Список вывода включает имена переменных, содержимое которых будет выведено на экран. Для ввода данных с клавиатуры можно использовать как процедуру READ, так и READLN.

При вводе числовых данных с клавиатуры с помощью процедуры READ введенные символы запоминаются в буфере и передаются программе только после нажатия на клавишу ENTER. Так как вводимые символы отображаются эхо-повтором на экране, то до момента нажатия на клавишу ENTER их можно удалять или изменять. Процедура READ хорошо приспособлена для ввода числовых данных. Она игнорирует все пробелы и символы конца строк, воспринимая остальные символы как вводимые данные. При этом пробелы и символы конца строк выступают как разделители данных.

Рассмотрим работу программ READ_IN.PAS и READ_RE.PAS.

Однако эти особенности процедуры READ существенно усложняют ввод символьных и строковых данных.

Рассмотрим работу программ READ_CH.PAS и READ_ST.PAS.

Процедура READLN может вводить данные любого типа, поэтому для ввода данных с клавиатуры предпочтительнее использовать именно ее.

Рассмотрим работу программ READLN_I.PAS, READLN_R.PAS, READLN_C.PAS, READLN_S.PAS.

Как только программа подходит к оператору READLN, компьютер приостанавливает свою работу и ждет ввода с клавиатуры соответствующих данных. После окончания ввода данных следует обязательно нажать клавишу [ENTER]. Только после этого вводимые данные присвоятся соответствующим переменным. Если при вводе в строке было введено больше данных, чем параметров в списке ввода, то лишние данные будут игнорироваться. При последующем появлении в программе новой процедуры READLN, вводить данные для нее придется снова.

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

Числовые данные (целые или вещественные) можно вводить в одной строке, разделяя пробелом. Если происходит ввод значений символьных или строковых переменных, то разделять их пробелом нельзя, т.к. пробел сам является обычным символом. В этом случае следует обязательно использовать процедуру READLN и после каждого введенного символа (для символьной переменной) или строки символов (для строковой переменной) нажимать клавишу [ENTER].

Для вывода на экран можно использовать процедуры WRITE или WRITELN. Отличие их заключается в том, что после процедуры WRITE курсор остается в той же строке после последнего выведенного символа, а после процедуры WRITELN он переводится в начало следующей строки.

На экран можно вывести любой текст, заключив его в ‘ ‘ (апострофы), например WRITELN(‘Программа разработана студентом гр. 232 Ивановым А.Р.’).

Если в переменных X и Y хранятся целые числа, то вывести их на экран можно с помощью процедуры WRITELN(X,Y). Если в переменных X и Y хранятся соответственно значения 5 и 13, то после этой процедуры на экране будет 513, т.е. эти значения выведутся слитно. Чтобы не путаться в выведенных значениях их лучше разделить пробелом: WRITELN(X,’ ‘,Y). Можно сделать более полный комментарий: WRITELN(‘X=’,X,’ Y=’,Y). В этом случае на экране появится: X=5 Y=13.

Рассмотрим работу программы WRITE1.PAS.

В некоторых случаях требуется, чтобы выводимое значение занимало определенное число позиций. Оно задается через двоеточие после соответствующей переменной: WRITELN(‘X=’,X:3,’ Y=’,Y:3). Тогда под каждое значение на экране отведется по три позиции и в результате будет выведено: . Но если при выводе значение какой-то переменной не умещается в трех позициях, то будет выделено столько позиций, сколько нужно для вывода.

При выводе вещественных чисел они выводятся в экспоненциальной форме (форме с плавающей запятой) с мантиссой и порядком, например 2.1345678912E+01. Можно ограничить общее число выводимых символов, указав его после двоеточия, например WRITELN(X:9). Тогда на экране в девяти позициях будет выведено значение вещественной переменной X , например .

Первая позиция будет отводиться под знак мантиссы.

Чтобы вывести вещественное число в форме с фиксированной запятой необходимо после общего числа выводимых символов поставить еще двоеточие и указать после него число разрядов, отводимых под дробную часть. Так после оператора WRITELN(X:7:3) на экране будет выведено: