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

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

Общий вид:
a: min..max;

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

Константы min и max должны принадлежать одному и тому же типу. Они определяют базовый тип переменной 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);
readln
end.

Пусть i – переменная, принимающая значения года рождения сотрудника какого-либо учреждения. Имеет смысл ограничить диапазон значений i подмножеством, т.е. описать примерно так: i: 19302000.

Комментарии

Позволю себе оставить

Позволю себе оставить небольшое замечание: приведенная в примере программа некорректна, т.к. переменные перечислимого типа выводить и считывать нельзя.

Во Freepascal код работает.

Это интервальный, а не перечисляемый тип. Хотя константа - да, перечисляемого типа.

почему мне пишет что

почему мне пишет что переменная a(red) и что не может прочитать тип этой переменной, на паскаль АБС и турбо паскаль выдает одно и тоже.

без кода трудно сказать

без кода трудно сказать "почему"