Через диапазон можно определить тип, который будет содержать значения только из ограниченного поддиапазона некоторого базового типа. Базовым типом может быть любой целочисленный тип, тип CHAR или любой из введенных программистом перечислимых типов. Определяется тип-диапазон в разделе TYPE указанием имени типа и границ диапазона, разделенных двумя точками:
TYPE <ИмяДиапазона> = < НачальноеЗначение> . . <КонечноеЗначение>;
Начальное значение при определении такого типа не должно быть больше конечного.
Пример: TYPE
TEST1 = (test1, test2, . . . ,test5 );
H= 1.. 20; {поддиапазон для типа Integer}
LETERS = 'A' ..'Я'; {базовый тип Char}
TESTOD = test2 ..test5; {базовый тип TEST1}
Определение переменных для диапазона производится в разделе VAR. Они могут принимать любые значения из указанного диапазона, включая граничные.
При конструировании диапазона в описании типа можно использовать несложные арифметические выражения для вычисления границ. Но при этом надо следить, чтобы запись выражения не начиналась со скобки (скобка - это признак начала перечисления).
Пример:
CONST N = 30;
TYPE date = 1..31;
kv2 = 3*N+1..6*N;
VAR L, L1: date;
k: kv2;
BEGIN
L:=2*10+5; ...
L1:=2*10+60; {неверно, т.к. L1 выходит за пределы диапазона}
END.
Применение ограниченных типов усиливает контроль данных при выполнении программы. Значения переменных типа «диапазон» могут выводиться на экран и вводиться с клавиатуры только в том случае, когда диапазон взят из базового стандартного типа.
Пример и задания для двумерных массивов
Пример. Вычислить суммы элементов в столбцах двумерного числового массива А размером [1..3,1..4].