Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКД-Паскаль-2012.docx
Скачиваний:
39
Добавлен:
01.05.2015
Размер:
561.45 Кб
Скачать

Тема 13. Записи

Продолжая изучение структурированных типов данных, переходим к записям.

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

Таким образом, запись - это вектор, компоненты которого (поля) могут относиться к разным типам данных.

Описание записей

В разделе var переменную типа запись описывают так:

Имена полей должны подчиняться общим правилам построения идентификаторов. Повторение имен полей внутри одной записи не допускается.

Замечание: Имена полей могут совпадать с именами других переменных, поскольку на самом деле являются составными:

Поэтому можно записать:

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

Если несколько подряд идущих полей принадлежат к одному типу данных, их описания можно объединить:

Например:

Эта запись содержит 9 полей, три из которых сами являются составными. Наиболее распространенный способ использования записей - двумерная таблица, каждый столбец которой имеет свой тип. Такую структуру описывают, например, следующим образом:

Задание записей константой

Как и массивы, записи не могут быть заданы неименованной или нетипизированной константой.

Для того чтобы задать запись типизированной константой, следует вначале описать соответствующий тип в разделе type, а затем воспользоваться им в разделе const:

Начальное значение для переменной типа запись задается перечислением в круглых скобках начальных значений для всех полей (соответствующих типов!) с обязательным указанием имени задаваемого поля. Имя поля от его начального значения отделяется двоеточием, значения соседних полей разделяются точкой с запятой:

Например:

Можно, конечно, не описывать тип константы отдельно, а объединить оба определения:

Если описана двумерная таблица, то ее начальные значения задаются как вектор, каждый компонент которого является записью. Таким образом, правила задания типизированной константы-таблицы сочетают в себе правила задания массива и записи:

Доступ к полям

Обратиться к полю записи можно следующим способом:

Например:

Как уже было упомянуто, коллизий между переменной с именем month и полем записи my_birthday.month не возникает. Доступ к полю двумерной таблицы осуществляется аналогичным образом (жирные скобки являются обязательным элементом синтаксиса):

Эту запись можно трактовать так:

Например:

Оперирование несколькими полями

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

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

Например:

Замечание. Для того чтобы внутри оператора with можно было обратиться не к полю записи, а к глобальной переменной с таким же именем, перед этой переменной нужно указать (через точку) имя программы: <имя_программы>.<имя_переменной>.

Например: