Под скалярными типами подразумеваются перечислимые, целые и вещественные типы. Перечислимые и целые типы называются дискретными типами; каждое значение дискретного типа имеет номер позиции - целое значение. Целые и вещественные типы называются числовыми типами. Все скалярные типы упорядочены, т.е. для их значений предопределены все операции отношения.
ограничение_диапазона : : = range диапазон диапазон : : = атрибут_диапазона | ||||
простое_выражение .. простое_выражение |
Диапазон определяет подмножество значений скалярного типа. Диапазон Л .. П определяет значения от Л до П включительно, если истинно отношение Л <= П. Значения Л и П называются соответственно нижней границей и верхней границей диапазона. Значение Х удовлетворяет ограничению диапазона, если оно принадлежит диапазону; говорят, что значение Х принадлежит диапазону, если одновременно истинны отношения Л <= Х и Х <= П. Пустой диапазон - это диапазон, для которого истинно отношение П<Л; пустому диапазону не принадлежит никакое значение. Операции <= и < в вышеприведенных определениях являются предопределенными операциями над скалярными типами.
Если ограничение диапазона используется в указании подтипа, либо непосредственно, либо как часть ограничения плавающего или фиксированного типа, тип простых выражений (а также границ атрибута диапазона) должен быть тем же, что и базовый тип обозначения типа указания подтипа. Ограничение диапазона совместимо с подтипом, если каждая граница диапазона принадлежит подтипу или если ограничение диапазона определяет пустой диапазон; иначе ограничение диапазона не совместимо с подтипом.
Предвыполнение ограничения диапазона состоит из вычисления диапазона. Вычисление диапазона определяет его нижнюю и верхнюю границы. Если границы заданы простыми выражениями, вычисление диапазона вычисляет эти выражения в порядке, который не определен в языке.
Атрибуты.
Для любого скалярного типа Т или для любого подтипа Т скалярного типа определены следующие атрибуты:
Т'FIRST Вырабатывает значение нижней границы Т. Значение этого атрибута имеет тип Т;
Т'LAST Вырабатывает значение верхней границы Т. Значение этого атрибута имеет тип Т.
Примечание. Индексирование и правила итерации используют значения дискретных типов.
3.5.1. Перечислимые типы
Определение перечислимого типа задает перечислимый тип.
определение _перечислимого_типа : : = | ||||
(спецификация_литерала_перечисления {, спецификация_литерала_перечисления}) | ||||
спецификация_литерала_перечисления : : = | ||||
литерал_перечисления | ||||
литерал_перечисления : : = | ||||
идентификатор символьный_литерал |
Идентификаторы и символьные литералы, перечисленные в определении перечислимого типа, должны быть различными. Каждая спецификация литерала перечисления является его описанием: это описание эквивалентно описанию функции без параметров, обозначение которой - этот литерал перечисления, а тип результата - определяемый перечислимый тип. Предвыполнение определения перечислимого типа создает перечислимый тип; это предвыполнение включает предвыполнение каждой спецификации литерала перечисления.
Каждый литерал перечисления вырабатывает отличное от других перечислимое значение. Предопределенные операции отношения упорядоченности между перечислимыми значениями учитывают порядок, соответствующий номеру позиции; номер позиции первого значения в списке литералов перечисления равен нулю; номер каждого следующего литерала перечисления на единицу больше номера предыдущего литерала в списке.
Если один и тот же идентификатор или символьный литерал задан в нескольких определениях перечислимого типа, соответствующие литералы называются совмещенными. В тексте программы тип совмещенного литерала перечисления должен быть определимым из контекста (см. 8.7).
Примеры:
type ДЕНЬ is (ПНД, ВТР, СРД, ЧТВ, ПТН, СББ, ВСК); | ||||||
КОРИЧНЕВЫЙ, ЧЕРНЫЙ); | ||||||
type СВЕТ is (КРАСНЫЙ, ЯНТАРНЫЙ, ЗЕЛЕНЫЙ) : | ||||||
- - КРАСНЫЙ и ЗЕЛЕНЫЙ совмещены. | ||||||
type ШЕСТНАДЦАТЕРИЧНЫЕ is ('A', 'B', 'C', 'D', 'Е', 'F') ; | ||||||
- - КРАСНЫЙ - цвет, но не свет. |
Примечание. Если литерал перечисления встречается в контексте, недостаточном для определения типа литерала, то один из путей разрешения неоднозначности - это применение квалифицированного выражения с именем перечислимого типа (см. 8.7).
3.5.2. Символьные типы
Перечислимый тип называется символьным, если хотя бы один из его литералов перечисления является символьным литералом. Предопределенный тип CHARACTER - символьный тип, значения которого представляют собой 195 символов стандартного набора. Каждый из 161 графических символов этого символьного набора обозначен соответствующим символьным литералом.
Пример: