Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чет про программирование / 12) Записи в ЯП Паскаль

.docx
Скачиваний:
23
Добавлен:
25.04.2015
Размер:
16.12 Кб
Скачать

Записи в ЯП Паскаль

Запись — это составной тип данных, состоящий из фиксированного числа элементов одного или нескольких типов. Описание типа записи начинается словом record и заканчивается словом end. Между ними заключен список элементов, называемых полями, с указанием идентификаторов полей и типа каждого поля:

  • type TPerson = record FirstName: string[20]; // имя LastName: string[20]; // фамилия BirthYear: Integer; // год рождения end;

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

Чтобы получить в программе реальную запись, нужно создать переменную соответствующего типа:

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

Чтобы получить в программе реальную запись, нужно создать переменную соответствующего типа:

  • var Friend: TPerson;

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

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

  • Friend.FirstName := 'Alexander'; Friend.LastName := 'Ivanov'; Friend.BirthYear := 1991;

Обращение к полям записи имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более 5 символов. Для решения этой проблемы в языке Delphi предназначен оператор with, который имеет формат:

  • with <запись> do <оператор>;

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

  • with Friend do begin FirstName := 'Alexander'; LastName := 'Ivanov'; BirthYear := 1991; end;

Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,

  • Friend := BestFriend;

После выполнения этого оператора значения полей записи Friend станут равными значениям соответствующих полей записи BestFriend.

Представление записей в памяти

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

  • type

rec = record

x, y: integer;

a: array[1..1] of byte;

end;

var

a: rec;

begin

writeln(sizeof(a)); // 12

end.

Размер данной записи должен составлять 10 Байт, однако компилятор осуществляет выравнивание – оставление пустых байт для выравнивания по границам слов для ускорения. Машинное слово – наименьшая единица информации, с которой работает ПК (разрядность).