![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Тип данных - запись
ЗАПИСЬ
- это структура данных, состоящая из фиксированного числа компонентов – полей записи, но в отличие от массивов компоненты могут быть разных типов, а для удобства ссылки они именуются.
В памяти поля располагаются в той последовательности, в которой они перечислены в описании. Смещение от начала записи определяется размером предыдущих полей.
Описание:
TYPE <ИМЯ ТИПА>=RECORD <СПИСОК ПОЛЕЙ> END; |
Где <СПИСОК ПОЛЕЙ> - список имен полей и их типов.
ПРИМЕРЫ:
TYPE BirthDay= RECORD DAY,MONTH:BYTE; YEAR:WORD; END; VAR A,B:BirthDay; {две переменные типа день рождение} C: RECORD NAME STRING[10]; BD:BirthDay; END; {переменная содержит два поля: имя и день рождения } |
Операции, используемые при работе с записями
Ø ОПЕРАЦИЯ УТОЧНЕНИЯ
используется для доступа к полям записи
ПРИМЕРЫ:
A.DAY:=1; A.MONTH:=5; {дата 1 мая} |
Ø ОПЕРАЦИЯ ПРИСВАИВАНИЯ
ПРИМЕРЫ:
B:=A; {все значения полей A копируются в B } |
Ø ОПЕРАТОР WITH…DO…
упрощает доступ к полям записи.
Описание:
WITH<СПИСОК ПОЛЕЙ> DO<ОПЕРАЦИЯ>; |
НАПРИМЕР, СЛЕДУЮЩИЕ ЗАПИСИ РАВНОСИЛЬНЫ:
WITH C,BD DO MONTH:=4; WITH C.BD DO MONTH:=4; WITH C DO WITH BD DO MONTH:=4; C.BD.MONTH:=4; |
Обычно используется для группы операторов:
WITH C.BD DO BEGIN MONTH:=4; YEAR:=2004; DAY:=1; END; |
Вариантные записи
Используются для записей с переменной структурой полей.
Вариантная часть всегда одна и располагается в конце структуры после фиксированных полей. Для описания используется конструкция CASE…OF (без END)
Описание:
TYPE <ИМЯ ТИПА>=RECORD <СПИСОК ФИКСИРОВАННЫХ ПОЛЕЙ> CASE <ТИП> OF <К1>:(<СПИСОК ПОЛЕЙ 1>); … <Кn>:(<СПИСОК ПОЛЕЙ n>); END; |
Где <ТИП> - любой базовый или пользовательский тип, причем константы <К1>,…, <Кn> могут и не относится к этому типу.
ПРИМЕР ВАРИАНТНОЙ ЗАПИСИ
TYPE PUBLICATION= RECORD {тип - публикация} AUTHOR,TITLE:STRING; {общие поля – автор, заголовок, год} YEAR:WORD; CASE BOOLEAN OF BOOK:(BUBHOUSE:STRING: PAGES:WORD); {книга} ARTICLE:(JOURNAL:STRING; NUMBERJ:BYTE;PREMIER,LAST:WORD); {статья} PEPER:(NUMBERJR:BYTE; PREMIER,LAST:WORD); {реферат} END; |
Дата публикования: 2015-02-22; Прочитано: 217 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!