Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Модули, записи и файлы

онентов, называемых полями записи.  В  отличие  от  массива,  компоненты
(поля) записи могут быть различного типа. Чтобы можно было ссылаться на  тот
или иной компонент записи, поля именуются.

Структура обьявления типа записи такова:

                 <имя типа> = RECORD <пс. полей> END

Здесь <имя типа> - правельный индификатор;
          RECORD, END – зарезервированные слова (запись, конец);
          <сп. полей> - список полей; представляют собой  последовательность

          разделов записи, между которыми ставится точка с запитой.

Каждый раздел записи состоит из одного или нескольких  индификаторов  полей,
отделяемых друг от друга запятыми. За  индификатором  ставится  двоеточие  и
описание типа поля например:

                  type
                          birthday = record
                       day, month : byte;
                  year  : word:
            end;
                  var
                        a,b : Birthday;
                        .  .  .  .  .  .  .  .

В этом примере тип Birthday  есть  запись  с  полями  DAY,  MONTH,  и  YEAR;
переменные А и В содержат записи типа Birthday.
Как в массиве, значения переменных  типа  записи  можно  присваивать  другим
переменным того же типа, например:
                       a : = b;
К каждому из компонентов записи можно  получить  доступ,  если  использовать
составное имя, т.е. указать имя переменной, затем точку и имя поля:
                       a.day := 27;     b.year := 1991;
Чтобы упростить доступ к полям записи, используется  оператор  присоединения
WITH:
            WITH <переменная> DO <оператор>

Здесь WITH, DO – ключевые слова (с, делать);
          <переменная> - имя переменной типа запись, за которым,
          возможно, следует список вложенных полей;
          <переменная> - любой оператор Турбо Паскаля.
Например:
                 with c.bd do month := 9;
Имена  полей  должны  быть  уникальными  в  пределах  той  записи,  где  они
обьявлены, однако, если записи содержат поля – записи, т.е. вложена  одна  в
другую, имена могут повторяться на разных уровнях вложенности.

      .



Глава 7. Файлы.


  Под файлом понимается именованная область памяти  на  магнитном  носителе,
используемая для  долговременного  хранения  некоторой  логически  связанной
информации. В эту область внешней памяти можно  как  поместить  определенные
данные, так и извлечь их из нее. Эти действия имеют общее название  -  ввод-
вывод.


      7.1. Операция с файлами как единое целое.


   Программирование доступа к  файлу  в  языке  Turbo  Pascal  начинается  с
описания файловой  переменной  (переменной  файлового  типа).  Это  описание
строится с помощью служебного слова file, после которого  (после  служебного
слова of) может быть указан тип отдельных элементов файла, например:
var
F : file of integer;
   При необходимости  можно  отдельно  определить  некоторый  файловый  тип,
которым в дальнейшем пользоваться при описании файловых переменных:
type
RecordFile = file of record
                А, В : real;
                        end;
var
Fl, F2 : RecordFile;
   Очень важно  различать  собственно  файл  (область  памяти  на  магнитном
носителе с некоторой информацией) и переменную файлового  типа  в  некоторой
Turbo  Pascal-  программе.  Считается,  что  файловая  переменная   является
представителем некоторого дискового  файла  в  программе.  Для  того,  чтобы
реализовать доступ к файлу па магнитном диске, программа должна связать  его
с файловой переменной. Для этого необходимо сопоставить переменную с  именем
файла. Это имя представляется в виде строки, содержащей полное имя файла  и,
быть может, цепочку объемлющих  каталогов  и  обозначение  дисковода.  Такая
строка носит название маршрута (или пути) к файлу  и  формируется  по  общим
правилам MS-DOS.
  Связывание  маршрута  и  файловой  переменной   производится   стандартной
процедурой  Assign,  которой  передаются  два  параметра:   имя   переменной
файлового типа и строка с именем (маршрутом) дискового файла, например:
Assign (F, 'с: booksbook4test3 .раз ' ) ;
  Помимо  маршрута,  во  втором  параметре  может  быть  указано   условное
(символическое) обозначение некоторого «псевдофайла» MS-DOS, то есть  файла,
связанного  с  конкретным  физическим  устройством.  Допускаются  имена,   в
основном совпадающие с принятыми в MS-DOS обозначениями  (‘con’  –  консоль,
то есть экран дисплея  и/или  клавиатура,  ‘lpti’  или  ‘prn’  –  печатающее
устройство и т. д.).
  До тех пор, пока файловая переменная не  связана  с  каким-либо  дисковым
файлом, никакие операции с ней в программе невозможны,  Заметим,  что  можно
связать файловую переменную с  еще  не  существующим  дисковым  файлом.  Это
может  быть  оправдано  для  случая  последующего  создания  Turbo   Pascal-
программой файла с данным именем с помощью некоторой системной процедуры.
  После того, как файловая переменная с помощью процедуры Assign связана  с
конкретным дисковым файлом, можно  выполнить  любую  допустимую  операцию  с
ним.  Здесь  рассмотрим   две   операции   общего   характера,   позволяющие
переименовывать и уничтожать существующие  дисковые  файлы.  Такие  операции
выполняются  системными  подпрограммами  Rename  и   Erase   со   следующими
спецификациями:
Rename ( var f; nevname : string );
Erase ( var f );
   Основным параметром этих  процедур  является  файловая  переменная   (она
может идентифицировать файл любого типа, и к  ней  должна  была  быть  ранее
применена процедура Assign), а  процедуре  Rename  дополнительно  передается
новое   имя   файла.   Действие   указанных   процедур    основывается    на
соответствующих DOS-функциях и функционально  эквивалентно  командам  ren  и
del командного процессора.


      7.2. Структура файлов


      7.2.1Открытие и закрытие файлов
  В этом и следующем разделах рассматриваются файлы традиционной  для  языка
Pascal структуры, которые описываются в программе  в  терминах  составляющих
компонент.  Кроме  таких   файловых   переменных   (они   также   называются
"типизированными"  файлами),  в  языке  Turbo  Pascal  имеются  также  файлы
специального типа - текстовые файлы, которые введены  для  поддержки  одного
практически важного частного случая файловых  структур,  и  нетипизированные
файлы, которые используются для более  эффективной  организации  обменов  на
низком уровне.
  Важнейшим моментом при использовании переменных  файловых  типов  является
интерпретация файла как потенциально бесконечного списка значений  одного  и
того же (базового) типа. Например, описание переменной F вида
  var
  F : file of integer;
понимается как определение в программе под именем F  списка  неопределенного
количества целых чисел, расположенного  на  некотором  внешнем  запоминающем
устройстве (например, на магнитном диске).
   С  каждой  переменной  файлового  типа  также  связано  понятие  текущего
указателя файла. Текущий указатель можно  понимать  как  скрытую  переменную
(то есть переменную, неявно описанную вместе с файловой
переменной),  которая  обозначает  ("указывает"  на)  некоторый   конкретный
элемент   файла.   Таким   образом,   можно   графически   так   представить
интерпретацию файла, связанного с переменной F:              0      1      2
        N

|Целое|Целое|Целое|. . .|Целое|. . .  |
|     |     |     |. .  |     |       |


  Текущий указатель —————
  Как правило, все действия с  файлом  (чтение  из  файла,  запись  в  файл)
производятся поэлементно, причем в  этих  действиях  участвует  тот  элемент
файла, который обозначается  текущим  указателем.  В  результате  совершения
операций текущий указатель может перемещаться, настраиваясь на тот или  иной
элемент файла. Все  элементы  файла  считаются  пронумерованными;  начальный
элемент имеет нулевой номер. Имеется возможность  явной  установки  текущего
указателя на некоторый элемент файла.
  Заметим, что один  и  тот  же  внешний  файл  в  различных  Turbo  Pascal-
программах (или даже в различных частях одной  и  той  же  программы)  может
интерпретироваться  по-разному,  например,  как   последовательность   целых
чисел, или  как  последовательность  символов,  или  как  последовательность
некоторых записей, и т. д. Эта возможность очень важна и часто  используется
в работе  с  файлами  сложной  структуры.  Например,  в  процессе  работы  с
внутренним представлением файлов баз данных  (в  частности,  с  DBF-файлами)
может понадобиться интерпретировать файл по-разному в зависимости  от  того,
какую его компоненту (заголовок или содержательную часть) мы обрабатываем.
  Нужно также отметить, что все операции с  файлами  в  языке  Turbo  Pascal
реализованы  с  использованием  базовых  средств  операционной  системы;   в
частности, понятие текущего указателя файла поддержано в MS-DOS. Однако  все
перемещения по файлу (как явное управление  указателем,  так  и  сдвиги  при
обменах)  выполняются  в  терминах  байтов.  Таким  образом,  все   аспекты,
связанные с типизацией  содержимого  файлов,  представляют  собой  системную
надстройку языка Turbo Pascal.
  Для выполнения некоторой операции по вводу-выводу необходимо прежде  всего
открыть дисковый файл (напомним, что предварительно нужно  связать  файловую
переменную с дисковым файлом с помощью процедуры Assign).  Под  открытием  в
данном случае понимается подготовка к обмену с файлом со стороны  программы,
заключающаяся прежде всего в поиске файла  на  внешнем  носителе,  установке
его текущего указателя на определенный  (как  правило,  нулевой  элемент)  и
формировании  буфера  в  оперативной  памяти,  посредством  которого   будут
производиться обмены.
  Обычные типизированные файлы открываются с помощью одной из двух 
12345
скачать работу

Модули, записи и файлы

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ