Знать: Составструктурированных типов данных; Приемы работы с файлами.
Уметь: Создавать файлы, добавлять, удалять, сортировать записи в файле.
В Паскале имеются три класса файлов:
· текстовый файл;
· типизированный файл;
· нетипизированный файл.
Файловый тип переменной — это структурированный тип, представляющий собой совокупность однотипных элементов, хранящихся на внешнем носителе, количество которых заранее не определено.
Структура описания файловой переменной:
Var <имя переменной>: File Of <тип элемента>;
где <тип элемента> может быть любым, кроме файлового. Например:
Var Fi: File Of Integer; Fr: File Of Real; Fc: File Of Char;
Файл можно представить как последовательную цепочку элементов, пронумерованных от 0, заканчивающуюся специальным кодом, называемым маркером конца. Количество элементов, хранящихся в данный момент в файле, называется его текущей длиной. Для того чтобы начать запись в файл, его следует открыть для записи. Это обеспечивает процедура Rewrite (FV); где FV — имя файловой переменной. При этом указатель устанавливается на начало файла. Если в файле есть информация, то она исчезает.
|
|
Запись в файл осуществляется процедурой write (fv, v); где v — переменная того же типа, что и файл FV. Запись происходит туда, где установлено окно (указатель). Сначала записывается значение,
Чтение из файла осуществляется процедурой Read (FV, V); где v — переменная того же типа, что и файл FV. Значение текущего элемента файла записывается в переменную V; указатель смещается к следующему элементу.
затем указатель смещается в следующую позицию. Если новый элемент вносится в конец файла, то сдвигается маркер конца.
Пример 1. В файловую переменную Fx занести 20 вещественных чисел, последовательно вводимых с клавиатуры.
Var Fx: File Of Real; X: Real; I: Byte;
Begin
Rewrite(Fx);
For I:=l To 2 0 Do
Begin
Write('?'); ReadLn(X); Write(Fx,X) End End.
Для чтения элементов файла с его начала следует открыть файл для чтения. Это делает процедура Reset (FV).
В результате указатель устанавливается на начало файла. При этом вся информация в файле сохраняется
Пример 2. В переменной х получить 10-й элемент вещественного файла Fx.
Program А;
Var Fx: File Of Real;
X: Real; Begin
Reset(Fx);
For I:=l To 10 Do Read(Fx,X) End.
Функция Eof (FV) проверяет маркер конца файла (end of file). Это логическая функция, которая получает значение true, если указатель установлен на маркер конца, в противном случае — false.
Пример 3. Просуммировать все числа из файла Fx, описанного в предыдущем примере.
Reset {Fx);
Sx:=0;
While Not Eof(Fx) Do
Begin
Read(Fx,X); Sx:=Sx+X End;
Последовательность действий для работы с файлами:
· Описать файловую переменную.
· Описать переменную того же типа, что и файл.
· Произвести назначение (Assign).
|
|
· Открыть файл для записи (Rewrite).
· Записать в файл данные (Write).
· Закрыть файл (Close).
Пример: Определить среднюю температуру для значений, хранящихся в файле Temp.dat.
Program Task2;
Var Ft: File Of Real;
T,St: Real; N: Integer;
Begin
Assign(Ft,'Temp.dat');
Reset (Ft); St:=0;
While Not Eof(Ft) Do Begin
Read(Ft,T);
St:=St+T
End;
N:=FileSize(Ft);
St:=St/N;
WriteLn('Средняя температура за',N:3, 'суток равна',St:7:2,'гр-в');
Close (Ft); End.
В этой программе использована функция определения размера
файла:
FileSize(<имя файловой переменной>);
Ее результат — целое число, равное текущей длине файла.