В программу можно ввести переменные какого-либо типа, не совпадающие ни с одним из стандартных типов. Такой тип задается перечислением значений при объявлении типа; любое из этих значений может принимать переменная данного типа, объявленная далее в программе.
Общий вид описания перечисляемого типа:
type
nm = (word1, word2, …, wordN);
var
w: nm;
здесь nm – идентификатор типа (произвольный), word1
, word2
, … - значения, которые может принимать переменная w, принадлежащая типу nm.
Значения данного типа считаются упорядоченными, то есть описание типа одновременно вводит упорядочение word1 < word2 < wordN
. Порядковые значения отсчитываются с 0.
К переменным типа перечисления можно применять функции ord, pred, succ и процедуры inc и dec.
Ко всем переменным одного и того же скалярного типа применимы операции отношения: =, <>, <=, >=, <, >.
Пример 1. type color = (red, yellow, green, blue);
Здесь определено, что red < yellow < green < blue
. Переменная типа color может принимать одно из перечисленных значений.
type
color = (red, yellow, green, blue);
var
a: color;
b: color;
begin
a := red;
writeln(a);
writeln(succ(a));
readln(b);
writeln(ord(b));
end.
Пример выполнения:
red
yellow
blue
3
По элементу x определяется та упорядоченная последовательность, которой принадлежит x, и выдается элемент, следующий за x в этой последовательности.
Пример 2. Пусть задана последовательность букв в алфавитном порядке. Тогда succ(A)
есть B
, succ(L)
есть M
.
Для примера 1 succ(red)
есть yellow
.
По элементу x определяется последовательность, которой принадлежит x, и выдается предыдущий элемент этой последовательности.
Пример 3. pred(B)
есть A
; pred(Z)
есть Y
.
Выдается номер элемента x в последовательности. Исчисление начинается с нуля.
Пример 4. ord(red)
равен 0, а ord(green)
равен 2.