Данные типа Запись.

Это группа данных, состоящая из фиксированного числа компонентов, называемых полями. В каждом поле данные должны быть одного типа. Разные поля могут иметь разные типы.

Запись отличается от массива тем, что компоненты записи могут иметь различный тип. На практике часто встречаются данные этого типа (обычно их называют структурами). Например, простейшей структурой представленной на рис.4.18.1 являются данные комплексного типа.

 

Рис.4.18.1

При графическом изображении структуры изображают овалами, а поля-прямоугольниками.

Элементами структур могут быть структуры, то есть структуры являются иерархическими. Пример иерархической структуры приведен на рис.4.18.2.

 

Рис.4.18.2.

Здесь Stud и FIO структуры; NR (номер зачетной книжки) – поле целого типа; FAM, IM, OT (фамилия , имя, отчество) поля строкового типа; BALL (средний балл) – поле вещественного типа. Часто структуру входящую в другую структуру называют подструктурой.

Общая форма объявления данных типа запись имеет вид

Type TZ = RECORD

pd11, pd12,....pd1k : type1 ;

pd21, pd22, . . . pd2k : type2 ;

. . . . . . . . . . .

pdn1, pdn2, . . . pdnk : typen

End ;

Здесь TZ - идентификатор типа,

Record - ключевое слово,

pd11, pd12, ...-идентификаторы полей,

type1, type2,... typen - типы полей.

Пример объявления записи.

 

Type Cmp=Record

Re, IM: Extended;

End;

 

Var X, Y, Z : Cmp;

 

Здесь сначала в разделе Type объявляется идентификатор типа (Cmp), а затем он используется в разделе Var при объявлении переменных (X,Y,Z) как данных типа запись. Как и в случае массивов к данным типа запись можно применять операцию присваивания:

X : = Y;

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

Запись можно объявить и непосредственно в разделе переменных, например так

Var X, Y , Z: Record

Re, Im : Extended;

End;

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

При объявлении типа терархической структуры разделителем между тдентификаторами типа и ключевыми словами Record является символ "двоеточие".

Пример объявления идентификатора типа для иерархической записи .

Type

Strok = String [ 15 ] ;

Stud = Record

Nr : Integer ;

Fio : record

Fam , Im , Ot : Strok

End ; { конец Fio}

Adr : Record

Gor , Yl : Strok ;

Dm , KB : Integer

End ; { конец Adr}

End ; {конец Stud}

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

Теперь если мы желаем обрабатывать одну запись о студенте, то в разделе переменных надо объявит переменную типа запись, например так

Var Anketa : Stud ;

Если же надо обрабатывать данные о группе студентов, то можно объявить массив записей, например так

Var Spisok : Array [1..30 ] Of Stud ;.

Обращение.

Для обращения к отдельному полю записи используется составное имя, представляющее собой комбинацию из имени переменной типа запись и идентификатора поля, разделенных точкой, например

Dt . Day : =

Anketa . Fio . Fam : = ‘ Иванов‘ ;

Если уровней иерархии много, то составное имя получается длинным .