Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_раб_5_7.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
349.7 Кб
Скачать

5. Устно ответить на контрольные вопросы (п. 7.9).

6. Оформить отчет (см. П. 1.10).

7.5. Справки по файловым процедурам и функциям

Файл – поименованная область памяти на внешнем запоминающем устройстве, предназначенная для хранения данных.

Файл можно представить как список значений одного и того же (базового) типа; количество значений в программе не ограничивается.

Все элементы файла считаются пронумерованными; начальный элемент имеет нулевой номер.

Как правило, действия с файлом (чтение из файла, запись в файл) производятся поэлементно; в действиях участвует тот элемент файла, который обозначается текущим указателем. Текущий указатель можно понимать как скрытую переменную (то есть неявно описанную вместе с файловой переменной), которая обозначает («указывает») на некоторый конкретный элемент файла. При выполнении операций текущий указатель может автоматически (без явного указания в программе) перемещаться.

7.5.1. Описание файловых переменных

Для работы с файлами в программе должны быть определены переменные файловых типов, которые считаются представителями файлов в Pascal-программе.

Переменные файлового типа определяются по следующему правилу:

<Имя переменной> : file of <базовый тип>;

где «базовый тип» – любой допустимый в Turbo Pascal тип, кроме файлового типа.

Примеры описаний файловых типов и переменных:

Type Person = record

Name : string[40];

Tarif : Longint

end;

FP = file of Person;

Var F1, F2 : FP; {F1, F2 - файловые переменные для представления

в программе файлов, которые могут содержать записи типа Person}

Symb_F : file of char; {переменная для работы с файлами, которые могут

содержать символы}

Table : file of String[80]; {переменная для работы с файлами, которые могут содержать символы}

InputData : file of real;

F : file of integer;

7.5.2. Установочные и завершающие операции с файлами

В эту группу входят четыре операции, реализованные в виде стандартных процедур со следующими именами: Assign, Reset, Rewrite, Flush, Close.

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

Правило обращения к процедуре Assign:

Assign (F, S);

F – имя файловой переменной,

S – строковое выражение, образующее имя файла по правилам, принятым в операционной системе MS-DOS (может включать в себя обозначение дисковода, цепочку каталогов и имя файла).

Примеры: Assign (F, ‘D:\MYDIR\MyFile.dta’ );

После выполнения данного вызова файловая переменная F будет связана с дисковым файлом MyFile.dta, расположенным в каталоге MYDIR из корневого каталога диска D).

.................

S:=’RESULT.DAT’;

Assign (F1, S);

.................

write(‘Введите имя файла для сохранения данных:’);

readln(S); Assign (F2, S);

.................

Процедура Reset(F) предназначена для открытия файлов для чтения. При этом файловая переменная F должна быть уже связана с конкретным дисковым файлом с помощью процедуры Assign.

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

Процедура Reset(F) предполагает, что открываемый дисковый файл уже существует, в противном случае возникает ошибка.

Процедура Rewrite(F) предназначена для открытия файлов для записи. При этом файловая переменная F должна быть уже связана с конкретным дисковым файлом с помощью процедуры Assign.

Процедура Rewrite допускает, что открываемый файл может еще не существовать; в этом случае она создает заданный файл. Если же файл существует, то Rewrite очищает его.

Процедура Flush(F) используется для завершения обменов с файлом без его закрытия. Обмены с файлами всегда реализуются через некоторый буфер в оперативной памяти, поэтому в процессе записи в файл последние записываемые элементы могут еще находиться («застрять») в буфере. Процедура Flush вызывает принудительный сброс этих элементов в файл.

Процедура Close(F) завершает действия с файлом. При этом ликвидируются внутренние буферы, образованные при открытии файла, оставшиеся в буфере данные сохраняются в файле.