Основы программирования на языке Паскаль
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
while not Eof(bf) do{ выйти из цикла, когда закончится файл }
begin read(bf,rb);
writeln(nomer:5,avtor:16,Nazv:10,index:6); { вывод на экран }
end; Close(bf); end;
procedure Rash;
begin Assign(bf,C:\TURBO\PRIM\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;
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
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;
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;
goto M;
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
begin writeln(введите номер книги);
readln(nomer);
if nomer=9999 then
begin close(bf); Exit end;
writeln(введите имя автора);