В любой программе считаются уже описанными и открытыми два текстовых файла, предназначенные для обмена со стандартными устройствами ввода-вывода. При вводе это файл Input, связанный с клавиатурой, при выводе – Output, – монитор.
Эти файлы рассматриваются как параметры по умолчанию в операциях работы с текстовыми файлами, когда файл явно не указан. Таким образом:
Write (CH) соответствует Write (Output,CH);
Read (CH) соответствует Read (Input,CH);
WriteLn соответствует WriteLn (Output);
ReadLn соответствует ReadLn (Input);
EOF соответствует EOF (Input);
EOLn соответствует EOLn (Input).
В соответствии с общими правилами MS-DOS стандартные файлы могут быть переназначены, то есть связаны с другими устройствами или дисковыми файлами. Для этой цели можно использовать процедуру Assign, например:
Assign (Output, ‘myfile.out’);
После этого все операции вывода, неявно использующие этот файл, будут выводить информацию на диск в текущий каталог и файл myfile.out.
При вводе и выводе числовых данных (как и других констант простых типов) в текстовый файл они представляются в литерном виде и разделяются либо произвольным количеством пробелов, либо признаком окончания строки. Перевод чисел из машинного представления в литерное и наоборот осуществляется автоматически. При чтении только числовых данных можно не анализировать конец строки, процедура Read сама осуществляет переход к другой строке. Например, вводятся исходные данные
|
|
3.51 -16 15 14
5.6 -10.2Е-3
для фрагмента программы
Var i,j,k: Integer;
r,s,t: Real;
...
Begin
Read (r,i,j,k,s,t);
...
Более сложная организация ввода потребуется, если исходные данные содержат смесь литерных и числовых данных. Например, вводится календарная дата, состоящая из дня (целое), месяца (три символа) и года (целое). Между этими тремя данными может быть произвольное количество пробелов, а может и не быть ни одного. Хотя после первого числа обязательно должен быть пробел, — как разделитель, иначе произойдет ошибка ввода.
Program Input_Date;
Var i,j: integer;
ch: char;
mch: array [1..3] of char;
Begin
Read(i);
Repeat
Read(ch);
Until ch <> ' ';
mch[1]:=ch;
Read (mch[2]);
Read (mch[3]);
Read (j);
{ Writeln (i,' ',mch,' ',j); }
end.
В данном случае нельзя целиком ввести массив mch, так как количество пробелов неопределенно.