Программирование на Pascal / Delphi / Лекции по Паскалю / 07_Перечисляемый тип
.doc7. ПЕРЕЧИСЛЯЕМЫЙ ТИП
Классификация: нестандартный, простой, порядковый тип.
Имя определяет программист.
Это абстрактный тип данных, в котором значения задаются именами.
0. Определение типа
Перечисляемый тип по правилам структурного программирования всегда определяется в разделе нестандартных типов программы (см. структуру текста программы). Определение производится по правилу, заданному синтаксической диаграммой, которая изображена на рис. 7.1.
Рис. 7.1. – Определение перечисляемого типа
Именем в Турбо Паскале может быть любая последовательность латинских букв, арабских цифр и знаков подчеркивания, начинающаяся с буквы.
Примеры определения типов:
RADUGA=(KRASN, ORAN, GELT, ZELEN, GOLUB, SINIY, FIOLET)
№ п.п. 0 1 2 3 4 5 6
NEDEL=(PONED, VTORN, SRED, CHETV, PIATNIC, SUBBOT, VOSCRES)
№ п.п. 0 1 2 3 4 5 6
SEZON=(LETO, OSEN, ZIMA, VESNA)
№ п.п. 0 1 2 3
1. Множество значений
Включает множество имен, которые перечислил программист в непосредственном определении перечисляемого типа. Номера значений определяются автоматически в порядке перечисления значений, начиная от 0 по 255.
2. Множество операций
2.1. Операции отношения (сравнения)
6 бинарных операций сравнения (отношения) со знаками =|<>|<|>|<=|>= . Оба операнда одного и того же типа. Результат логического типа BOOLEAN. Сравнение производится в соответствие с порядковыми номерами значений в множестве значений.
Таблица 7.1. Примеры операций сравнения
Операция |
Результат |
LETO>ZIMA 0 2 |
FALSE |
VESNA>ZIMA 3 2 |
TRUE |
LETO<=ZIMA 0 2 |
TRUE |
LETO=PONED 0 0 |
ошибка, так как разные типы |
2.2. Операция определения адреса переменной
Унарная операция определения адреса со знаком @. Операндом является переменная любого перечисляемого типа. Результат - данное типа ^<имя перечисляемого типа> со значением - указатель на место в оперативной памяти, где располагается переменная этого перечисляемого типа.
2.3. Стандартные функции
Таблица 7.2. Стандартные функции
Назначение функции |
Функция |
Пример |
|
Операция |
Результат |
||
Порядковый номер в множестве значений |
ORD(P) |
ORD(SRED) |
2 |
Предыдущее значение из множества значений |
PRED(P) |
PRED(SRED) |
VTORN |
Следующее значение из множества знаний |
SUCC(P) |
SUCC(SRED) |
CHETV |
Значение по порядковому номеру |
<имя типа>(byte) |
RADUGA(4) |
GOLUB |
3. Структурная организация
Данное любого перечисляемого типа представляет собой один неделимый, с точки зрения использования, компонент, занимающий в памяти один байт, т.е. имеет простую структуру.