Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_raboty_PASKAL.doc
Скачиваний:
15
Добавлен:
25.03.2015
Размер:
969.22 Кб
Скачать

Файлы с типом

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

Процедуры для работы с файлами с типом

Для обработки файлов с типом применяются следующие процедуры:

Rewrite(F) – создает новый файл; если файл с таким именем уже существует на диске, то он удаляется и создается новый. Записывать в файл информацию можно только непосредственно за концом файла.

Reset(F) – открывает существующий файл. В файл можно записывать информацию и читать из него. Записывать в файл дополнительную информацию можно только в конец файла.

Write(F,V1,[V2…])–записывает в файл содержимое указанных переменных. Тип файла и переменных может совпадать.

Read(F,V1,[V2…])–читает из файла компоненты в указанные переменных. Тип файла и переменных может совпадать.

Seek (F, N:LongInt)- передвигает указатель файла на n-й компонент (n – целое выражение). Первый компонент имеет номер 0.

Функции для обработки файлов с типом

Кроме функции Eof для файлов с типом существуют такие функции:

FileSize(F):LongInt – возвращает количество компонентов в файле (файл может быть уже открытый). Это номер компонента, который вытекает за последний.

FilePos(F):LongInt – возвращает номер текущего компонента в файле (первый компонент имеет номер нуль).

Обработка и корректировка файла

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

а) запросить в диалоге количество вводимых записей и ввести при помощи цикла с параметром ровно N записей;

б) организовать ввод при помощи цикла с постусловием до тех пор, пока не будет введен признак конца ввода.

Для расширения существующего файла с типом (занесение записей в конец файла), следует выполнить позиционирование в конец файла, а потом делать запись:

Var

F : File Of <Type>;

X : <Type>

…………………………

Seek (F, FileSize(F));{позиционирование за последним компонентом файла}

Write(F,X); {запись нового компонента в конец файла}

Пример выполнения задания лабораторной работе.

Пример 37. Сформировать файл из квадратов целых чисел. Найти сумму четных чисел и количество нечетных чисел среди компонентов файла.

Программа имеет вид:

program pr37;

uses crt;

var f:file Of integer;

x,n,s,k:integer; c:char;

begin clrscr;

ASSIGN(F,'D:\FA.DAT');

REWRITE(F);

WRITELN('УВОДИ ЦЕЛЫЕ ЧИСЛА'); READ(X);

while x<>0 do begin

n:=sqr(x); write(f,n);

read(x) end;

RESET(F); CLRSCR;

WRITELN('СОДЕРЖАНИЕ ФАЙЛА:');

s:=0; k:=0;

while not eof(f) do

begin

read(f,x); write(x:4);

if x mod 2 =0 then

S:=S+X ELSE K:=K+1 END;

CLOSE(F); WRITELN;

WRITELN('СУММА ЧЕТНЫХ ЧИСЕЛ =',S:5);

WRITELN('КОЛИЧЕСТВО НЕЧЕТНЫХ ЧИСЕЛ =',K:2);

c:=readkey

end.

В этой программе признаком конца записи в файл является ввод числа нуль.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]