Ответы на экзаменационные вопросы № 1-34 по дисциплине "Программирование" (Средства модульного программирования в системе Турбо-Паскаль. ООП. Объекты в динамической памяти), страница 9

program primer_record;

uses crt;

type kvartira=record

nomer:integer;

name:string[15];

square:real;

dolg:boolean;

end;

dom=file of kvartira;

var kv:kvartira; d:dom;

procedure form_file;

var ch:char;

begin

clrscr;

writeln('ФОРМИРОВАНИЕ ФАЙЛА');

rewrite(d);

repeat

writeln('Введите данные о квартире');

write('номер квартиры: '); readln(kv.nomer);

if kv.nomer>0 then

begin

write('фамилия владельца: '); readln(kv.name);

write('площадь квартиры: '); readln(kv.square);

write('задолженность по квартплате: d-есть,n-нет: '); readln(ch);

kv.dolg:=(ch='d');

write(d,kv)

end;

until kv.nomer=0;

close(d)

end;

procedure type_file;

begin

clrscr;

reset(d);

writeln('ДАННЫЕ О КВАРТИРАХ');

writeln('номер   владелец     площадь   долг');

repeat

read(d,kv);

write(kv.nomer,'         ',kv.name,'         ');

writeln(kv.square:2:1,'      ',kv.dolg);

until eof(d);

close(d);

readln

end;

procedure squ;

var s:real;

begin

clrscr;

writeln('ОБЩАЯ ПЛОЩАДЬ ВСЕХ КВАРТИР ДОМА');

s:=0;

reset(d);

repeat

read(d,kv);

s:=s+kv.square;

until eof(d);

close(d);

writeln('Общая площадь:  ', s:2:1);

readln

end;

procedure find_record;

var poisk:string[15];

begin

clrscr;

writeln('ПОИСК ЗАПИСЕЙ ПО ФАМИЛИИ');

write('Введите фамилию:  '); readln(poisk);

reset(d);

repeat

read(d,kv);

if kv.name=poisk then

writeln('номер: ',kv.nomer, ' площадь: ',kv.square:2:1,'  долг:',kv.dolg);

until eof(d);

close(d);

readln

end;

procedure change_record;

var nom:integer;ch:char;

begin

clrscr;

writeln('ИЗМЕНЕНИЕ ЗАПИСИ');

write('Введите номер записи, которая будет изменена:  ');

readln(nom);

reset(d);

seek(d,nom-1);  read(d,kv);

writeln('старые данные:');

write('номер: ',kv.nomer,'  владелец: ',kv.name);

writeln('  площадь: ',kv.square:2:1,'  долг: ',kv.dolg);

writeln('введите новые данные:');

write('номер квартиры:  '); readln(kv.nomer);

write('фамилия владельца: '); readln(kv.name);

write('площадь квартиры: '); readln(kv.square);

write('задолженность по квартплате: d-есть,n-нет: '); readln(ch);

kv.dolg:=(ch='d');

seek(d,nom-1);  write(d,kv);

close(d);

readln

end;

procedure menu;

var c:integer;

begin

repeat

clrscr;

writeln('Выберите действие');

writeln('0  - выход');

writeln('1  - формирование файла');

writeln('2  - просмотр файла');

writeln('3  - общая площадь');

writeln('4  - поиск записи');

writeln('5  - замена записи');

readln(c);

case c of

1: form_file;

2: type_file;

3: squ;

4: find_record;

5: change_record;

end;

until c=0;

end;

{ОСНОВНАЯ ПРОГРАММА}

begin

clrscr;

assign(d, 'dom.dat');

menu;

end.

4.(5 – 8 )Файловый тип данных, особенности файлового типа данных. Типизированные файлы: характеристика, способы объявления файлового типа и файловой переменной, процедуры и функции для работы с типизированными файлами.

Файловый тип данных  

1. Общее понятие о файле.  

Типы данных, с которыми мы до сих пор имели дело, предназначены для манипулирования информацией, содержащейся в оперативной памяти компьютера. Однако, часто возникает необходимость сохранения этих результатов с целью их постоянного использования. Для долговременного хранения информация из оперативной памяти переносится в файлы.  

Файл представляет собой некоторое поименованное место на внешнем носителе.  

Кроме "долговременности" хранения у файлов имеется еще одна отличительная особенность: их неопределенный объем (или длина). Если для каждого из прочих структурированных типов (например, массивов) всегда точно определено, сколько элементов содержит та или иная структура, то, сколько элементов должно быть в файле, при объявлении файлового типа не указывается. Максимальная длина файла ограничивается только свободным местом на диске, и это является основным отличием файлов от массивов.  

Для хранения информации в Turbo Pascal предусмотрена возможность определения файловых типов и файловых переменных. После этого информацию, которая может потребоваться впоследствии, можно перенести в файл на диске. Существуют три возможности определения файлового типа:  

Type f = file of <базовый тип элементов файла>;