Перечисляемый тип - это определяемый пользователем тип данных, при котором количество всех возможных значений ограничено. Перечислимые данные должны иметь синтаксис идентификаторов, и поэтому не могут перечисляться цифры, символы, строки.
Type
<имя типа>:(<элемент 1>, [<элемент 2>, ..., <элемент n>]);
Функции обработки данных перечисляемого типа:
Succ (x) – возвращает следующее за x значение в перечислимом типе.
Pred (x) - возвращает предыдущее значение в перечислимом типе.
>, <, >=, <=, <>, = - операции сравнения.
Интервальный тип - это определяемый пользователем тип данных, который содержит значения только из ограниченного поддиапазона некоего базового типа. Базовым типом, из которого вычленяются диапазоны, может быть любой целочисленный тип, тип Char и любой из введенных программистом перечислимых типов.
Type
<имя типа>:<интервал>
Пример:
Type
Days_weeks: 1..7;
Примеры решений задач
1. Для целого числа k от 1 до 99 напечатать фразу "мне k лет", учитывая при этом, что при некоторых значениях k слово "лет" заменить на слово "год" или "года";
Program how_old_year;
Const t=10;
Var a,b:Integer;
k:1..99;
Begin
Readln(k);
If (k>=5) and (k<=19) then Writeln(k,'лет');
a:=k div t;
b:=k-a*t;
If (b>=5) and (b<=9) then Writeln(k,'лет');
If b=0 then Write(k,'лет');
If (b>=2) and (b<=4) then Writeln(k,'года');
If b=1 then Write(k,'год');
End.