Основы программирования на языке Паскаль

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

readln(avtor);

writeln(введите название книги);

readln(nazv);

writeln(введите значение индекса);

readln(index);

write(bf,rb);

end; end;

Procedure Obr2;

begin

Assign(bf, fl);

Reset(bf);

with rb do

while not Eof(bf) do

begin read(bf, rb);

writeln(nomer:5,avtor:16,Nazv:10,index:6);

end; Close(bf);

end;

Procedure Rash2;

begin assign(bf, fl);

Reset(bf);

Seek(bf,Filesize(bf));

with rb do

while True do

begin writeln(введите номер); readln(nomer);

if nomer=9999 then begin Close(bf);Exit end;

writeln(введите имя автора); readln(avtor);

writeln(введите название книги); readln(nazv);

writeln(введите значение индекса); readln(index);

write(bf,rb);

end;end;

 

10.5. Файлы произвольного доступа

 

Файлы произвольного доступа используются при наличии зависимости значения какого-либо поля компоненты от ее порядкового номера в файле. Порядковый номер компоненты иногда называют ключом компоненты файла.

Организовать файл произвольного доступа можно двумя способами:

  1. Создать последовательный файл и обращаться к компонентам по порядковому номеру, трактуя последовательный файл как файл прямого доступа.
  2. Создать файл фиктивных (с пустыми полями) компонент, затем загрузить его по ключу фактическими данными. этот способ создание файла с фиктивными компонентами называется форматизацией.

Пример. Форматировать файл произвольного доступа из 20 компонент c:\turbo\bibl.dos. Структура компонент такая же, как и в Prim 4749. Оформим алгоритм в виде процедуры form, запишем ее в c:\turbo\form.pas.

Procedure form;

Begin writeln (дайте имя форматизируемому файлу);

readln(filname);

assign(booksfile, filname);

rewrite(booksfile);

with recbooks do

Begin writeln (на сколько записей форматировать файл?);

readln(razmer);

for i:=l to razmer do

Begin nomer:=i; avtor:= ; index:=0; nazv:= ;

write ( books file, recbooks)

end; end; writeln(фopматизация ,razmer, запись выполнена);

close(booksflle); end;

Напишем процедуру загрузки (procedure zagruz), которая будет заменять поля фиктивных записей реальными значениями, и запишем ее в c:\turbo\zagruz.pas;

procedure zagruz; Begin writeln(дать имя загружаемого по ключу файла);

readln(filname);

assign(booksfile,filname); reset(booksfile);

writeln(сколько записей будете вводить?); readln(k);

with recbooks do

Begin for i:=1 to k do

Begin writeln(введите номер); readln(nomer);

writeln(введите имя автора); readln(avtor);

writeln(введите название книги); readln(nazv);

writeln(введите индекс); readln(index);

seek(booksfile,nomer-1); { номера компонент начинаются с 0 }

write(booksfile,recbooks); end; end;

close(booksfile); end;

Оформить процедуру прямого доступа по ключу к компонентам файла и выдачу их на экран монитора, записать ее в C:\TURBO\OBRAB.PAS;

Procedure Obrab;

Begin writeln(дайте имя файла); readln(filname);

assign(booksfile,filname); reset(booksfile);

while true do

Begin writeln(укажите ключ обрабатываемой записи); readln(k);

if k=9999 then Begin close(booksfile); exit; end;

seek(booksfile,k-1);

with recbooks do Begin read(booksfile,recbooks);

writeln(nomer:5,avtor:16,nazv:15,index:4);

end; end; end;

Написать процедуру корректировки файла произвольного доступа в которой будут предусмотрены режимы корректировки:

  1. Замена всех полей компоненты.
  2. Расширение файла в пределах отформатированного пространства.

все это делает процедура Кооr, записанная в c:\turbo\koor.pas.

Procedure Koor;

Var nevavtor:string[16]; nevnazv:string[30]; nevindex:integer;

Begin writeln(дайте имя файла); readln(filname);

assign(booksfile,filname); reset(booksfile);

with recbooks do

Begin writeln(сколько записей будете корректировать?); readln(k);

for i:=1 to k do

Begin writeln(дайте номер корректируемой записи); readln(k1);

nevavtor:= ; nevnazv:= ; nevindex:=0;

writeln(введите имя автора); readln(nevavtor);

writeln(введите название книги); readln(nevnazv);

writeln(введите индекс); readln(nevindex);

avtor:=nevavtor; nazv:=nevnazv; index:=nevindex;

seek(booksfile,k1-1); write(booksfile,recbooks);

end; end; close(booksfile); end;

В программе Prim 50, с помощью меню рассматриваются работа с файлами произвольного доступа во всех режимах; форматирование файла, его загрузка, обработка, корректировка. Здесь следует заметить, что программа универсальна в том смысле, что может работать с различными файлами.

Program Prim50;

Type books=record

nomer:integer; avtor:string[16];

nazv:string[30]; index:integer; end;

Var booksfile:file of books;

recbooks:books; razmer,k,k1,i,reg:integer;

filname:string[12];

{$i c:\turbo\form.pas}

{$i c:\turbo\zagruz.pas}

{$i c:\turbo\obrab.pas}

{$i c:\turbo\koor.pas}

Begin while true do

Begin writeln(укажите режим);

writeln(1: форматизация);