Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Все Разделы.docx
Скачиваний:
17
Добавлен:
21.09.2019
Размер:
607.75 Кб
Скачать
  1. Записи

    1. Общая характеристика записей и способы описания в Delphi

Запись (record)  это структура данных, представляющая собой конечное множество эле­ментов, называемых полями записи или просто полями. Поля записи в общем случае имеют различные типы. Обычно данные типа «запись» используются в качестве элементов структур, называемых таблицами.

Запись, хранящаяся в оперативной памяти, относится к классу оперативных последовательных структур, поскольку 

а)  в течение всего времени существования запись занимает сплошной участок памяти, в котором хотя могут находиться «пустоты», обусловленные выравниванием, однако между слотами её полей недопустимо существование слотов других данных;

б)  поля в физической памяти располагаются в той последовательности, в которой они перечисляются при объявлении типа Record;

в)  адресом всей записи в целом является адрес слота ее начального поля.

Правилами языка Object Pascal не запрещается описывать переменную‑запись непосредственно в ее объявлении, используя следующий формат:

Var

<имя переменной>: Record

<список имен полей 1>: <тип 1>;

  

<список имен полей m>: <тип m>;

End;

Однако с точки зрения хорошего стиля описание переменной типа «запись» следует начинать с явного объявления ее типа, которое (объявление типа) выглядит следующим образом:

Type

<имя типа> = Record

<список имен полей 1>: <тип 1>;

  

<список имен полей m>: <тип m>;

End;

Var <имя переменной> : <имя типа>;

Пример объявления типа «запись» и переменной-записи, содержащей сведения о студенте, приводится ниже:

Type

TStud = Record

Fam, Name, Par: String[35];

Year: 1950..2000;

Sex : (Male, Female);

Group: String[7]

End;

Var StudFITR, StudMSF: TStud;

Доступ к любому элементу записи осуществляется с помощью имени, называемого селектором поля записи. Селектор состоит из имени переменной типа Record, и по­сле точки записывается имя поля, например, StudFITR.Fam, где StudFITR  имя переменной, Fam имя поля.

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

Рисунок 4.1 – Логическая структура записи типа TStud

Обычно любой физической структуре ставится в соответствие дескриптор (description  описание, приметы) или заголовок, который содержит общие сведения о физической структуре. Дескриптор является записью, в которой количество, размеры и содержимое полей зави­сят от той структуры, которой поставлен в соответствие дескриптор. Например, дескриптор записи может содержать:

  • код структуры (Record),

  • имя записи,

  • число входящих в нее полей,

  • имена, типы и длины полей,

  • адреса (указатели) слотов полей.