Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ПАСКАЛЕ.doc
Скачиваний:
12
Добавлен:
04.09.2019
Размер:
2.98 Mб
Скачать

10.3. Основные приемы работы с файлами

Известно существование многих версий Паскаля, каждая из которых имеет свои особенности и отличия от стандарта Паскаля. Рассмотрим некоторые приемы работы с файлами в системе TurboPascal.

Перед началом работы с файлами (до первого обращения к файлу) должна быть выполнена процедура ASSIGN. Эта процедура отождествляет имя файла с соответствующей файловой переменной:

assign (var F: file; NAME: string),

где NAME – имя файла на диске; F – имя файловой переменной.

После выполнения этой процедуры NAME и F отождествляются. Например, ASSIGN (F, 'nomfile') отождествляет файловую переменную F с его именем на диске. В качестве имени файла может быть указано его полное имя, т.е. путь к этому файлу, например:

ASSIGN (F, 'С:\WORK\ MIM\nomfile').

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

CLOSE (var F:file),

где F – имя файловой переменной.

Процедуры ASSIGN и CLOSE взаимосвязаны и работают в паре друг с другом. Как уже было сказано, перед началом работы с файлом выполняется процедура ASSIGN (F, 'nomfile'), которая для логического файла F готовит (ищет) на диске в указанной директории файл с именем NOMFILE. При окончании работы с файлом по выполнению процедуры CLOSE происходит его обновление (в случае записи) и закрытие (в случае чтения).

В программе надо уметь задавать исходные файлы. Эти файлы надо делать в цикле, используя при этом формирование компонент, либо в форме некоторого выражения по RANDOMIZE, либо задействовать обычную команду READ для ввода данных с клавиатуры. Цикл можно делать FOR, если формирование файла идет по RANDOMIZE, или WHILE (REPEAT), если файл формируется по признаку конца ввода.

Напомним, что RANDOMIZE – процедура инициализации генератора случайных величин; RANDOM – функция генерации случайных чисел.

Рассмотрим все эти особенности на примере формирования, обработки и вывода файлов.

П р и м е р. Для двух целочисленных файлов F и G одинаковой длины образовать третий целочисленный файл H, компоненты которого определяются по правилу: Hi = MAX{Fi, Gi}. В программе предусмотреть вывод на экран всех трех файлов.

program MAXELEM;

type FT = file of integer;

var F, G, H: FT;

I, J: integer;

procedure VIVODFILE (var A:FT);

begin

reset (A);

while not eof (A) do

begin

read (A, I); write (I:4);

end; writeln;

end;

begin {формирование исходных файлов}

assign (F, 'F'); assign (G, 'G');

randomize; rewrite (F); rewrite (G);

for I := 1 to 10 do

begin

J := random (10) - 5; write (F, J);

J := random (10) - 5; write (G, J);

end;

VIVODFILE (F); close (F);

VIVODFILE (G); close (G);

Assign (H,'H');

{формирование файла результата}

reset (F); reset (G); rewrite (H);

while not eof (F) do

begin

read (F, I); read (G, J);

if I > J then write (H, I) else write (H, J);

end; VIVODFILE (H);

close (H);

end.