
16.3. Записи.
Когда в программе должен быть использован сложный объект данных, удобно иметь общее имя для данных, которые его описывают и объявлять его без явного перечисления имен его частей. Записи Паскаля позволяют дать однажды описание объекта и использовать его далее по общему имени или по именам частей.
Записи позволяют группировать некоторое количество связанных данных, возможно разных типов, в один объект. Каждый элемент данных, называемых полем, состоит из имени, двоеточия и типа.
В следующем примере описано два типа записей, Date и WorkerInfo, каждый из которых содержит три поля. Некоторые из полей WorkerInfo таже являются записями. Таким образом, для описания сложных объектов, записи могут быть вложенными.
TYPE
Month = (NoMonth, Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec);
DayNum = 1 .. 31;
ValidYear = 1850 .. 2050;
Date = RECORD
Mo: Month;
Day: DayNum;
Year: ValidYear;
END;
WorkerInfo = RECORD
SSNumber: INTEGER;
BirthDay: Date;
FirstHired: Date;
END;
Когда переменная объявляется с типом записи, ее имя ссылается на всю запись. Как общее имя переменная полезна, например при передаче параметров в процедуру. Однако для манипулирования частями записи нужны другие имена. Поля могут именоваться добавлением их имен из определения типа с именем переменной через точку. Например, переменная
VAR
Worker: WorkerInfo;
описывает Worker как запись с тремя полями SSNumber, BirthDay и FirstHired. Имена частей этой переменной будут
Worker.SSNumber
Worker.BirthDay
Worker.FirstHired
Первый элемент является атомарным и ему может быть присвоено значение
Worker.SSNumber = 123456789;
Две другие части являются записями и мы должны обращаться к их частям.
Worker.BirthDay.Mo = Feb;
Worker.FirstHired.Day = 22;