Диапазонный, или интервальный, тип данных в Pascal

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

a: m1..m2;

здесь a — интервальная переменная, m1 — левая граница, m2 — правая граница подмножества (диапазона). Границы диапазона разделяются двумя точками; граница m1 всегда должна быть меньше m2.

Константы m1 и m2 должны принадлежать одному и тому же типу. Они определяют базовый тип переменной a. Так, если границы являются целыми числами типа integer, то под переменную a будет выделен такой же объем памяти, что и под тип integer. Однако переменная a сможет принимать только те значения, которые определены границами ее диапазона.

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

Если переменная b может принимать одно из значений red, yellow, green, то эту переменную можно описать так: b: red..green;. Базовым типом для b является тип color:

type
    color = (red, yellow, green, blue);

var
    b: red..green;

begin
    b := red;
    writeln(b);

    b := yellow;
    writeln(b);

    b := green;
    writeln(b);
end.