Основы программирования на языке Паскаль
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
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. Файлы произвольного доступа
Файлы произвольного доступа используются при наличии зависимости значения какого-либо поля компоненты от ее порядкового номера в файле. Порядковый номер компоненты иногда называют ключом компоненты файла.
Организовать файл произвольного доступа можно двумя способами:
- Создать последовательный файл и обращаться к компонентам по порядковому номеру, трактуя последовательный файл как файл прямого доступа.
- Создать файл фиктивных (с пустыми полями) компонент, затем загрузить его по ключу фактическими данными. этот способ создание файла с фиктивными компонентами называется форматизацией.
Пример. Форматировать файл произвольного доступа из 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;
Написать процедуру корректировки файла произвольного доступа в которой будут предусмотрены режимы корректировки:
- Замена всех полей компоненты.
- Расширение файла в пределах отформатированного пространства.
все это делает процедура Коо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: форматизация);