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

             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('введите имя автора');

                   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.

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);

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.