Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр.на_ЯВУ_уч.пос.DOC
Скачиваний:
24
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Стандартные текстовые файлы

В любой программе считаются уже описанными и открытыми два текстовых файла, предназначенные для обмена со стандартными устройствами ввода-вывода. При вводе это файл 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, так как количество пробелов неопределенно.

Файлы без типа

Этот тип данных используется только в Турбо-Паскале и описывается следующим образом:

Var <имя>: File;

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

Открываются эти файлы теми же процедурами, что и обычные, но вторым параметром должен быть задан размер компонента в байтах, например:

Assign (Fil,’Data.dat’);

Reset (Fil,512);

Если параметр отсутствует, то по умолчанию размер предполагается равным 128 байт. Для обеспечения максимальной скорости обмена размер компонента рекомендуется выбирать кратным размеру физического сектора диска, например 512 байт. С другой стороны, размер файла может быть не кратен выбранному размеру, поэтому, чтобы гарантированно обеспечить полное чтение всего файла, нужно использовать размер компонента 1.

Для организации обмена с нетипизированными файлами используются специальные процедуры, здесь не рассматриваемые.