Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль-конспект ИНФОРМАТИКА.doc
Скачиваний:
59
Добавлен:
09.04.2015
Размер:
639.49 Кб
Скачать

10.7. Типизированные файлы

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

Такой способ доступа называется последовательным. В Турбо – Паскале имеется также возможность организациипрямогодоступа к компонентам типизированного файла (процедураSeck).

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

Процедура Read(файловая переменная, список ввода).

Обеспечивает чтение очередных компонентов типизированного файла.

Здесь «список ввода» - содержит одну или более переменных такого же типа, что и компоненты файла.

10.8. Текстовые файлы

10.9. Нетипизированные файлы

Program PP71;

Type ZAP=Record

FIO:Array[1..10] of Char;

God:Integer

end;

FPK=File;

Var FIZAP:FPK;

A,B:ZAP;

J,I:Integer;

BeginAssign(FIZAP,'pp71.dat');

Rewrite(FIZAP, 12);

For J:=1 to 3 do

Begin Write('=>');

For I:=1 to 10 do Read(B.FIO[I]);

Readln(B.God);

BlockWrite(FIZAP,B,1)

end;

Close(FIZAP);

Reset(FIZAP, 12);

For J:=1 to 3 do

Begin BlockRead(FIZAP,A,1);

Writeln(J:2,'-ая запись ',A.FIO,A.God:5);

end

end.

Program PP74;

Type ZAP=Record

FIO:Array[1..10] of Char;

God:Integer

end;

FPK=File;

Var FIZAP:FPK;

A:ZAP;

I:Integer;

BeginAssign(FIZAP,'pp74.dat');

Rewrite(FIZAP, 12);

Repeat

Write('=>');

For I:=1 to 10 do Read(A.FIO[I]);

Readln(A.God);

BlockWrite(FIZAP,A,1);

Until A.FIO='**********';

Close(FIZAP);

Reset(FIZAP,12);

I:=1;

Repeat

BlockRead(FIZAP,A,1);

Writeln(I:2,'-ая запись ',A.FIO,A.God:5);

I:=I+1

Until A.FIO='**********'

end.

Program PP75;

Type ZAP=Record

FIO:Array[1..10] of Char;

God:Integer

end;

FPK=File;

Var FIZAP,RB:FPK;

A:ZAP;

I:Integer;

{-------------------------------------------------------------------------}

{ВВОД ИСХОДНЫХ ДАННЫХ В ФАЙЛ FIZAP}

BeginAssign(FIZAP,'C:\program\t-pas\pp75.dat');

Rewrite(FIZAP, 12);

Repeat

Write('=>');

For I:=1 to 10 do Read(A.FIO[I]);

Readln(A.God);

BlockWrite(FIZAP,A,1);

Until A.FIO='**********';

Close(FIZAP);

{------------------------------------------------------------------------}

{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО ОБРАБАТЫВАЕМОГО ФАЙЛА FIZAP}

Writeln;

Writeln('Обрабатываемый файл:');

Reset(FIZAP,12);

I:=1;

Repeat

BlockRead(FIZAP,A,1);

Writeln(I:2,'-ая запись ',A.FIO,A.God:5);

I:=I+1

Until A.FIO='**********';

Close(FIZAP);

{------------------------------------------------------------------------}

{ПЕРЕПИСЬ ИЗ ОБРАБАТЫВАЕМОГО ФАЙЛА FIZAP В РАБОЧИЙ ФАЙЛ RB ЛЮДЕЙ, }

{ РОДИВШИХСЯ НЕ РАНЕЕ 1970 ГОДА }

Reset(FIZAP,12);

Assign(RB,'C:\program\t-pas\ppr75.dat');

Rewrite(RB,12);

Repeat

BlockRead(FIZAP,A,1);

If A.God>=1970 then BlockWrite(RB,A,1)

Until A.FIO='**********';

Close(RB);

Close(FIZAP);

{------------------------------------------------------------------------}

{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО РАБОЧЕГО ФАЙЛА RB}

Writeln;

Writeln('Рабочий файл:');

Reset(RB,12);

I:=1;

Repeat

BlockRead(RB,A,1);

Writeln(I:2,'-ая запись ',A.FIO,A.God:5);

I:=I+1

Until A.FIO='**********';

Close(RB);

{------------------------------------------------------------------------}

{ПЕРЕПИСЬ ИЗ РАБОЧЕГО ФАЙЛА RB В ОБРАБАТЫВАЕМЫЙ ФАЙЛ FIZAP}

Reset(RB,12);

Rewrite(FIZAP,12);

Repeat

BlockRead(RB,A,1);

BlockWrite(FIZAP,A,1)

Until A.FIO='**********';

Close(RB);

Close(FIZAP);

{-------------------------------------------------------------------------}

{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО ОБРАБАТЫВАЕМОГО ФАЙЛА FIZAP}

Writeln;

Writeln('Обработанный файл:');

Reset(FIZAP,12);

I:=1;

Repeat

BlockRead(FIZAP,A,1);

Writeln(I:2,'-ая запись ',A.FIO,A.God:5);

I:=I+1

Until A.FIO='**********';

Close(FIZAP);

{------------------------------------------------------------------------}

Writeln('ok')

end.

Program z3;

type zap=record

nazv:array[1..15] of char;

cena:real

end;

tov=file;

var nov,star:tov;

b:zap;

i:integer;

begin

{----------------------------------------------------------------------}

{ОТКРЫТИЕ ФАЙЛА STAR НА ЗАПИСЬ}

assign(star,'c:\program\t-pas\star.dat');

rewrite(star,24);

{---------------------------------------------------------------------}

{ЗАПОЛНЕНИЕ ФАЙЛА STAR УПОРЯДОЧЕННЫМИ ПО НЕУБЫВАНИЮ ЦЕН ТОВАРОВ ЗАПИСЯМИ}

writeln('НАЗВАНИЕ ТОВАРА',' ЦЕНА(руб.)');

repeat

for i:=1 to 15 do read(b.nazv[i]);

readln(b.cena);

blockwrite(star,b,1)

until b.nazv='***************';

close(star);

{-----------------------------------------------------------------------}

{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО ФАЙЛА star}

writeln;

writeln('Обрабатываемый файл:');

reset(star,24);

repeat

blockread(star,b,1);

writeln(b.nazv:15,' ',b.cena:6:2)

until b.nazv='***************';

close(star); end.

{-----------------------------------------------------------------------}

{ВВОД С ТЕРМИНАЛА ПОЛЕЙ НОВОЙ ЗАПИСИ}

{-----------------------------------------------------------------------}

{ВСТАВКА НОВОЙ ЗАПИСИ}

{-----------------------------------------------------------------------}

{ПЕРЕПИСЬ ДАННЫХ ИЗ НОВОГО ФАЙЛА В СТАРЫЙ И ИХ ПЕЧАТЬ}

{----------------------------------------------------------------------}

{ЗАКРЫТИЕ ФАЙЛОВ}

{------------------------------------------------------------------------}

end.