Интервальный тип

ЛОГИЧЕСКАЯ СТРУКТУРА. Один из способов образования новых ти-

пов из уже существующих - ограничение допустимого диапазона зна-

чений некоторого стандартного скалярного типа или рамок описанно-

го перечислимого типа. Это ограничение определяется заданием ми-

нимального и максимального значений диапазона. При этом изменяет-

ся диапазон допустимых значений по отношению к базовому типу, но

представление в памяти полностью соответствует базовому типу.

МАШИННОЕ ПРЕДСТАВЛЕНИЕ. Данные интервального типа могут хра-

ниться в зависимости от верхней и нижней границ интервала незави-

симо от входящего в этот предел количества значений в виде,

представленном в таблице 2.4. Для данных интервального типа тре-

буется память размером один, два или четыре байта, например,

var A: 220..250; (* Занимает 1 байт *)

В: 2221..2226; (* Занимает 2 байта *)

C: 'A'..'K'; (* Занимает 1 байт *)

begin A:=240; C:='C'; B:=2222; end.

После выполнения данной программы содержимое памяти будет

следующим: A - 11110000; C - 01000011; B - 10101110 00001000.

ОПЕРАЦИИ. На физическом уровне над переменными интервального

типа определены операции создания, уничтожения, выбора, обновле-

ния. Дополнительные операции определены базовым типом элементов

интервального типа.

Таблица 2.4

┌────────────┬──────────────────────────┬────────────────┐

│ БАЗОВЫЙ │ МАКСИМАЛЬНО ДОПУСТИМЫЙ │ РАЗМЕР ТРЕ- │

│ ТИП │ ДИАПАЗОН │БУЕМОЙ ПАМЯТИ │

├────────────┼──────────────────────────┼────────────────┤

│ ShortInt │ -128..127 │ 1 байт │

│ Integer │ -32768..32767 │ 2 байта │

│ Longint │ -2147483648..2147483647 │ 4 байта │

│ Byte │ 0..255 │ 1 байт │

│ Word │ 0..65535 │ 2 байта │

│ Char │chr(ord(0))..chr(ord(255))│ 1 байт │

│ Boolean │ false..true │ 1 байт │

└────────────┴──────────────────────────┴────────────────┘

Примечание: запись chr(ord(0)) в таблице следует понимать

как: символ с кодом 0.

А) Интервальный тип от символьного: определение кода символа

и, наоборот, символа по его коду.

Пусть задана переменная типа tz:'d'..'h'. Данной переменной

присвоено значение 'e'. Байт памяти отведенный под эту переменную

будет хранить ASCII-код буквы 'e' т.е. 01100101 (в 10-ом предс-

тавлении 101).

Б) Интервальный тип от перечислимого: определение порядково-

го номера идентификатора по его значению и, наоборот, по номеру

идентификатора - его значение.

На логическом уровне все операции, разрешенные для данных

базового типа, возможны и для данных соответствующих интервальных

типов.