пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Записи 1. Фиксированные записи 2. Вариантные записи

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

Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

 

type TRec = Record

       FIO: String[20];

       TEL: String[7]

     end;

var rec: TRec;

 

Описание записей возможно и без использования имени типа, например:

 

var rec: Record

           FIO: String[20];

           TEL: String[7]

         end;

 

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

 

rec.FIO, rec.TEL

 

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен.

Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with.

Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:

 

with rec do оператор;

 

Здесь rec - имя записи, оператор - оператор, простой или составной. Оператор представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена. Например для нашего случая:

 

with rec do begin

              FIO:='Иванов А.А.';

              TEL:='2223322';

            end;

 

Такая алгоритмическая конструкция полностью идентична следующей:

 

rec.FIO:='Иванов А.А.';

rec.TEL:='2223322';

 

Инициализация записей может производиться с помощью типизированных констант:

 

type

   RecType = Record

        x,y: Word;

         ch: Char;

        dim: Array[1..3] of Byte

     end;

  

const

   Rec: RecType = ( x: 127;

                    y: 255;

                    ch: 'A';

                    dim: (2, 4, 8) );

 

 Особой разновидностью записей являются записи с вариантами, которые объявляются с использованием зарезервированного слова case. С помощью записей с вариантами вы можете одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во все структурах, и некоторые небольшие отличающиеся части.

Например, сконструируем запись, в которой мы будем хранить данные о некоторой геометрической фигуре (отрезок, треугольник, окружность).

 

type

TFigure = record

  type_of_figure: string[10];

  color_of_figure: byte;

  ...

  case integer of

    1: (x1,y1,x2,y2: integer);

    2: (a1,a2,b1,b2,c1,c2: integer);

    3: (x,y: integer; radius: word);

end;

var figure: TFigure;

 

Таким образом, в переменной figure мы можем хранить данные как об отрезке, так и о треугольнике или окружности. Надо лишь в зависимости от типа фигуры обращаться к соответствующим полям записи.

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

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


17.01.2014; 12:52
хиты: 119
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь