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

           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: форматизация');

              writeln('2: загрузка по ключу');

              writeln('3: обработка по ключу');

              writeln('4: корректировка');

              writeln('5: выход из программы');

              readln(reg);

              case reg of 1:form; 2:zagruz; 3:obrab; 4:koor; 5:halt;

   end;

end;

 end.

10.6. Текстовые файлы


Компонентами текстовых файлов являются строки. Длина строки – 0-255 символов. Каждая строка завершается маркером строки, а файл – маркером конца файла. Для описания файловых переменных текстового типа используется зарезервированное слово text.

Var instrl, instr2: text;

dokulnent: text;

Для работы с текстовыми файлами используются упомянутые выше функции и процедуры assign, rewrite, reset, close, read, readln, write, writeln, seekeof, однако имеются и специфические функции и процедуры:

Append (fv) – открыть текстовый файл и установить указатель на маркер конца файла.

Eoln (fv) – возвратить true, если указатель файла достиг маркера конца строки, в противном случае, возвратить значения false.

Seekeoln(fv) – функция, аналогичная предыдущей, но указатель проходит все пробелы и знаки табуляции. возвращает true при достижении маркера конца строки.

Seekeof(fv) – возвращает true, если указатель файла находится на маркере конца файла.

Организация текстового файла производится по схеме:

1) объявляется файловая переменная текстового типа;

2) присваивается файлу имя (assign);

3) открывается файл (rewrite);

4) подготавливается строка - компонента для записи в файл;

5) записывается строка - компонента в файл (writeln);

6) повторяются п. 4, 5 столько раз, сколько нужно;

7) закрывается файл.

Доступ к компонентам текстового файла:

1) присвоить файлу имя (assign);

2) открыть файл для чтения (reset);

3) прочитать компоненту-строку (readln);

4) обработать компоненту-строку (например вывести на экран);

5) повторить п. 3, 4 столько раз, сколько нужно.

6) закрыть файл (close);

Расширение текстового файла производится путем добавления в конец файла компонент-строк:

1) присвоить имя файлу (assign);

2) установить маркер на конец файла (append);

3) подготовить строку для записи;

4) записать строку (writeln);

5) повторить нужное количество раз п. 3, 4.

6) закрыть файл (close).

Замечание. При записи файлов прямого и последовательного доступа, созданных пользователем, содержимое компонент упаковывается, и поэтому посмотреть их в vc или nc по f3 или f4 нельзя, а текстовый файл не упаковывается, и его можно просмотреть.

 procedure sozdt;

   Begin  writeln('дайте имя создаваемому текстовому файлу');

          readln(filename);

        assign(stro,filename);    rewrite(stro);

          while true do

    Begin  writeln('напишите содержимое строки');

           readln(s); if s='zzz' then     {'zzz' – признак окончания ввода }

      Begin  close(stro); exit; end;

          writeln(stro,s); end;end;  

     procedure obrt;

  Begin writeln('дайте имя обрабатываемого файла');

; readln(filename);

        assign(stro,filename); reset(stro);

        repeat readln(stro,s);   writeln(s);

               until seekeof(stro); close(stro); exit; end;

      procedure rasht;

 Begin writeln('укажите имя корректируемого файла'); readln(filename);

          assign(stro,filename);   append(stro);

          while true do

    Begin writeln('введите строку');  readln(s);

          if s='zzz' then Begin close(stro); exit; end;

          writeln(stro,s);  end; end;

        Program Prim51;

     Type  dlina=string[60];

     Var   stro:text;   s:dlina;   reg:char;   filename:string[12];

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

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

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

    Begin    while true do

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

       writeln('1: создание, 2: вывод на экран, 3: расширение, 4: выход');

       readln(reg);

          case reg of '1': sozdt;

                      '2': obrt;

                      '3': rasht;

                     '4': halt  else writeln('повторите номер режима');

       end;end;end.

11. Использование библиотеки CRT


Разработчики Турбо-Паскаля предусмотрели несколько подпрограмм, существенно увеличивающих возможности текстового ввода-вывода. Эти подпрограммы сосредоточены в библиотеке (модуле) CRT, входящей в комплект поставки Турбо-Паскаля. В модуль включены также процедуры sound, no sound, delay, позволяющие программировать звуковой генератор компьютера.

 

11.1. Программирование клавиатуры


Дополнительные возможности управления клавиатурой реализуются двумя функциями: keypressed и ReadKey.

Функция keypressed возвращает значение типа boolean, указывающее состояние буфера клавиатуры: false означает, что буфер пуст, а true – что в буфере есть хотя бы один символ, еще не прочитанный программой.

В       реализуется так называемый асинхронный буферизованный ввод с клавиатуры. По мере нажатия на клавиши соответствующие коды помещаются в особый буфер, откуда они могут быть затем прочитаны программой. Стандартная длина буфера рассчитана на хранение до 16 кодов символов. Если программа достаточно долго не обращается к клавиатуре, а пользователь нажимает клавиши, буфер может оказаться переполненным. В этот момент раздается звуковой сигнал и «лишние» коды теряются. Чтение из буфера обеспечивается процедурами read/rеadln и функцией ReadKey. обращение к функции keypressed не задерживает исполнения программы: функция немедленно анализирует буфер и возвращает то или иное значение, не дожидаясь нажатия клавиши.

Страницы: 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 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.