Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕтодичка по практическим работам.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
156.28 Кб
Скачать

Контрольные вопросы

  1. Назначение процедуры assign ?

  2. Отличие процедур rewrite и append ?

  3. Типичный фрагмент последовательного чтения всего файла.

  4. Назначение функции eof.

  5. Вывод числовых переменных.

Лабораторная работа 9. Работа с типизированными файлами и записями Основные сведения

Типизированный файл состоит из последовательности записей одной и той же структуры. Структура записи задается типом, который может быть как стандартным, так и определенным в программе. Запрещено создавать файлы файлов и файлы объектов, а также файлы структурированных компонентов, содержащих файлы и объекты. Записи файла нумеруются начиная с 0.

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

Var имя_файловой_переменной : file of тип_записи_файла;

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

assign( var F; FileName:string ) связывает файловую переменную F с именем файла FileName.

reset( var F ) открывает существующий файл F для операций чтения и записи.

rewrite( var F ) создает новый файл F и открывает его для операций чтения и записи.

close( var F ) закрывает файл F.

eof( var F ):boolean возвращает TRUE, если достигнут конец файла, и FALSE в противном случае.

read( var F; var X1; var X2; … ) – ввод данных из файла F в переменные X1, X2, …, тип которых должен совпадать с типом записи файла. После чтения записи указатель файла устанавливается на запись, следующую за последней прочитанной.

write( var F; X1; X2; … ) – вывод в файл F переменных X1, X2, …, тип которых должен совпадать с типом записи файла. После вывода каждой переменной указатель файла устанавливается на запись, следующую за только что выведенной.

filesize( var F ): longint – возвращает количество записей в открытом файле F.

filepos( var F ): longint – возвращает номер записи открытого файла F, на которой находится указатель.

seek( var F; N: longint ) – устанавливает указатель в открытом файле F на запись с номером N.

truncate( var F ) – усекает открытый файл F отбрасыванием всех его записей, начиная с текущей, до конца файла.

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

Описание типа записи и переменной записи:

type имя_типа_записи = record

имя_поля_1: тип_поля_1;

имя_поля_2: тип_поля_2;

...

имя_поля_N: тип_поля_N

end;

Var имя_переменной_записи:имя_типа_записи;

Обращение к полям переменной записи: имя_переменной_записи.имя_поля

Над полями записей можно выполнять любые действия, доступные для переменных типа соответствующего поля.

Пример выполнения

Имеется файл STUD.DAT, содержащий данные о студентах: фамилию, имя, отчество, номер группы, номер курса. Из этого файла выбрать данные о студентах только 1 курса и записать их в файл STUD1.DAT, после чего циклически запрашивать фамилию студента и выводить на экран информацию о всех студентах 1 курса с такой фамилией.

program PRIMER;

type

STUD=record

sFAM : string[30]; {фамилия }

sNAME: string[20]; {имя }

sOTCH: string[20]; {отчество}

sGRUP: string[5]; {группа }

ICurs: integer {курс }

end;

var

F1,fOut: file of STUD;

ST : STUD;

sSF : string[30];

C : char;

begin

assign(F1,'STUD.DAT');

assign(fOut,'STUD1.DAT');

reset(F1);

rewrite(fOut);

while not eof(F1) do begin

read(F1,ST);

if ST.CURS=1 then write(fOut,ST)

end;

close(F1);

repeat

writeln('Введите фамилию');

readln(sSF);

seek(fOut,0);

while not eof(fOut) do begin

read(fOut,ST);

if ST.FAM=SF then begin

writeln('Студент ', ST.sFAM, ' ',ST.sNAME,' ', ST.sOTCH);

writeln('Курс 1, Группа ',ST.iGRUP);

end

end;

writeln('Продолжить работу?(N-нет)');

readln(C);

until (C='N') or (C='n');

close(fOut)

end.