Основы программирования на языке Паскаль
writeln('ввестиимяавтора'); readln(avtor);
writeln('ввести название книги'); readln(nazv);
writeln('ввести значение индекса'); readln(index);
write(bf,rb); end;end;
BEGIN { основнаяпрограмма }
Org; Obr; Rash; Obr; readln;
END.
При создании больших программ их части у
добно создавать в виде отдельных файлов (объектов), которые затем с помощью директивы компилятора {$i .} можно объединить в одну программу. Это удобно еще и тем, что несколько программистов могут создавать различные программы, что в несколько раз может ускорить процесс их создания.
Создадим ту же программу, что и Prim 47, только пообъектно, тогда процедуру Org запишем в C:\TURBO\Org1.pas, процедуру Obr – в C:\TURBO\Orb1.pas, процедуру Rash – в C:\TURBO\Rash1.pas, а вызывающую (основную программу – в C:\TURBO\Prim. 48, в которой предусмотрим подключение объектов – процедур Org, Obr, Rash к основной программе через директивы компилятора $i.
procedure Org1;
begin
assign(bf,'C:\TURBO\bibl.dos');
Rewrite(bf);
with rb do
while True do
beginwriteln('ввести номер книги');
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;
procedure Obr1;
begin
Assign(bf,'C:\TURBO\bibl.dos');
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);
writeln('нажмите enter'); readln;
end;
procedure Rash1;
begin Assign(bf,'C:\TURBO\bibl.dos');
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;
Работу построим в режиме меню.
Program Prim48;
label M;
type books=record
nomer:integer;
avtor:string[16];
nazv:string[30];
index:integer; end;
Var bf:file of books;
rb:books; regim:byte;
{$i C:\TURBO\Org1.pas}
{$i C:\TURBO\Obr1.pas}
{$i C:\TURBO\Rash1.pas}
BEGIN
M: writeln('введите режим работы');
writeln('1 – создание, 2 – обработка',
'3 – расширение, 4 – выход');
readln(regim);
case regim of
1:Org1;
2:Obr1;
3:Rash1;
4:Exit; else writeln('неправильнозаданрежим'); end;
gotoM;
END.
Для обеспечения работы с различными именами файлов имя файла вначале запрашивается, а затем передается в процедуры. Таким образом, мы можем создавать несколько файлов, содержащих данные о книгах, их обрабатывать, расширять и т.п.
Program Prim49;
label M1,M2 ;
type books=record
nomer:integer;
avtor:string[16];
nazv:string[30];
index:integer; end;
Var bf:file of books;
rb:books; regim:byte; si:char; fl:string;
{$i C:\TURBO\Org.pas}
{$i C:\TURBO\Obr.pas}
{$i C:\TURBO\Rash.pas}
BEGIN
M1: writeln('где будет храниться файл? диск:\каталог\имя'),
readln(fl);
M2: writeln('введите режим работы');
writeln('1 – создание, 2 – обработка',
'3 – расширение, 4 – выход');
readln(regim);
case regim of
1:Org;
2:Obr;
3:Rash;
4:begin writeln('будемещёработатьсфайлами? - "Y"');
writeln('или конец работы – любая клавиша');
readln(si);
if (si='Y')or(si='y') then goto M1 else HALT; end;
else begin writeln('неправильно задан режим');
goto M2; end; end; goto M2;
END.
Procedure Org2;
begin
assign(bf, fl);
Rewrite(bf);
with rb do
while True do
beginwriteln('введите номер книги');
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;
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 47–49. Оформим алгоритм в виде процедуры form, запишем ее в c:\turbo\form.pas.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности