Среди типов данных особо выделяются порядковые типы. Такое название можно обосновать двояко:
Каждому элементу порядкового типа может быть сопоставлен уникальный (порядковый) номер. Нумерация значений начинается с нуля. Исключение - типы данных shortint, integer и longint. Их нумерация совпадает со значениями элементов.
Кроме того, на элементах любого порядкового типа определен порядок (в математическом смысле этого слова), который напрямую зависит от нумерации. Таким образом, для любых двух элементов порядкового типа можно точно сказать, который из них меньше, а который - больше.
Только для величин порядковых типов определены следующие функции и процедуры, представленные в следующей табл. 3:
Таблица 3 – Стандартные подпрограммы, обрабатывающие порядковые типы данных
Функция/Процедура
Назначение
Ord(X: Char): Byte;
Функция возвращает порядковый номер значения переменной X
Pred(X: Integer): Integer;
Функция возвращает значение, предшествующее X
Succ(X: Integer): Integer;
Функция возвращает значение, следующее за X
Inc(var X: Integer);
Процедура возвращает значение, следующее за X
Inc(var X: Integer; N: Integer);
Процедура возвращает N-е значение, следующее за X
Dec(var X: Integer);
Процедура возвращает значение, предшествующее X
Dec(var X: Integer; N: Integer);
Процедура возвращает N-e значение, предшествующее X
Low(var X: Type): Integer;
Функция возвращает наименьшее значения величины типа X
High(var X: Type): Integer;
Функция возвращает наибольшее значения величины типа X
На первый взгляд кажется, будто результат применения процедуры inc(x) полностью совпадает с результатом применения функции succ(x). Однако разница между ними проявляется на границах допустимого диапазона. Функция succ(x) неприменима к максимальному элементу типа, а вот процедура inc(x) не выдаст никакой ошибки, но, действуя по правилам машинного сложения, прибавит очередную единицу к номеру элемента. Номер, конечно же, выйдет за пределы диапазона и за счет усечения превратится в номер минимального значения диапазона. Получается, что процедуры inc() и dec() воспринимают любой порядковый тип словно бы "замкнутым в кольцо": сразу после последнего вновь идет первое значение.