Тип-диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона. Тип-диапазон задается границами своих значений внутри базового типа:
<мин.знач.>..<макс.знач.>
Здесь <мин.знач. > – минимальное значение типа-диапазона;
<макс.знач.> – максимальное его значение.
Например:
type
digit = '0'..'9';
dig2= 48..57;
Тип-диапазон необязательно описывать в разделе TYPE, а можно указывать непосредственно при объявлении переменной, например:
var date : 1..31;
month: 1. .12;
Ichr : 'A'..'Z';
При определении типа-диапазона нужно руководствоваться следующими правилами:
· два символа стоящих рядом, рассматриваются как один символ, если между ними нет пробела;
· левая граница диапазона не должна превышать его правую границу. Тип-диапазон наследует все свойства своего базового типа, но с ограничениями, связанными с его меньшей мощностью. В частности, если определена переменная:
type
days = (mo,tu,we,th,fr,sa,su);
WeekEnd = sa .. su;
var w : WeekEnd;
begin
w := sa;
end;
то ORD(W) вернет значение 5 , в то время как PRED(W) приведет к ошибке, так как попытка выйти за пределы диапазона.
В стандартную библиотеку Турбо Паскаля включены две функции, поддерживающие работу с типами-диапазонами:
НIGН(Х) – возвращает максимальное значение типа-диапазона, к которому принадлежит переменная X;
LOW(X) – возвращает минимальное значение типа-диапазона.
Следующая короткая программа выведет на экран строку
-32768...32767
var
k: Integer;
begin
WriteLn(Low(k),'..',High(k))
end.