Статус документа
Статус документа

ГОСТ 27831-88 (ИСО 8652-87) Язык программирования АДА

     3.5. Скалярные типы


Под скалярными типами подразумеваются перечислимые, целые и вещественные типы. Перечислимые и целые типы называются дискретными типами; каждое значение дискретного типа имеет номер позиции - целое значение. Целые и вещественные типы называются числовыми типами. Все скалярные типы упорядочены, т.е. для их значений предопределены все операции отношения.

ограничение_диапазона : : = range диапазон

диапазон : : = атрибут_диапазона

простое_выражение .. простое_выражение


Диапазон определяет подмножество значений скалярного типа. Диапазон Л .. П определяет значения от Л до П включительно, если истинно отношение Л <= П. Значения Л и П называются соответственно нижней границей и верхней границей диапазона. Значение Х удовлетворяет ограничению диапазона, если оно принадлежит диапазону; говорят, что значение Х принадлежит диапазону, если одновременно истинны отношения Л <= Х и Х <= П. Пустой диапазон - это диапазон, для которого истинно отношение П<Л; пустому диапазону не принадлежит никакое значение. Операции <= и < в вышеприведенных определениях являются предопределенными операциями над скалярными типами.

Если ограничение диапазона используется в указании подтипа, либо непосредственно, либо как часть ограничения плавающего или фиксированного типа, тип простых выражений (а также границ атрибута диапазона) должен быть тем же, что и базовый тип обозначения типа указания подтипа. Ограничение диапазона совместимо с подтипом, если каждая граница диапазона принадлежит подтипу или если ограничение диапазона определяет пустой диапазон; иначе ограничение диапазона не совместимо с подтипом.

Предвыполнение ограничения диапазона состоит из вычисления диапазона. Вычисление диапазона определяет его нижнюю и верхнюю границы. Если границы заданы простыми выражениями, вычисление диапазона вычисляет эти выражения в порядке, который не определен в языке.

Атрибуты.

Для любого скалярного типа Т или для любого подтипа Т скалярного типа определены следующие атрибуты:

Т'FIRST Вырабатывает значение нижней границы Т. Значение этого атрибута имеет тип Т;

Т'LAST Вырабатывает значение верхней границы Т. Значение этого атрибута имеет тип Т.

Примечание. Индексирование и правила итерации используют значения дискретных типов.

3.5.1. Перечислимые типы

Определение перечислимого типа задает перечислимый тип.

определение _перечислимого_типа : : =

(спецификация_литерала_перечисления

{, спецификация_литерала_перечисления})

спецификация_литерала_перечисления : : =

литерал_перечисления

литерал_перечисления : : =

идентификатор символьный_литерал


Идентификаторы и символьные литералы, перечисленные в определении перечислимого типа, должны быть различными. Каждая спецификация литерала перечисления является его описанием: это описание эквивалентно описанию функции без параметров, обозначение которой - этот литерал перечисления, а тип результата - определяемый перечислимый тип. Предвыполнение определения перечислимого типа создает перечислимый тип; это предвыполнение включает предвыполнение каждой спецификации литерала перечисления.

Каждый литерал перечисления вырабатывает отличное от других перечислимое значение. Предопределенные операции отношения упорядоченности между перечислимыми значениями учитывают порядок, соответствующий номеру позиции; номер позиции первого значения в списке литералов перечисления равен нулю; номер каждого следующего литерала перечисления на единицу больше номера предыдущего литерала в списке.

Если один и тот же идентификатор или символьный литерал задан в нескольких определениях перечислимого типа, соответствующие литералы называются совмещенными. В тексте программы тип совмещенного литерала перечисления должен быть определимым из контекста (см. 8.7).

Примеры:

type ДЕНЬ is (ПНД, ВТР, СРД, ЧТВ, ПТН, СББ, ВСК);

type МАСТЬ is (ТРЕФЫ, БУБНЫ, ЧЕРВЫ, ПИКИ);

type РОД is (M, Ж);

type УРОВЕНЬ is (НИЗШИЙ, СРЕДНИЙ, СРОЧНЫЙ);

type ЦВЕТ is (БЕЛЫЙ, КРАСНЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ,

КОРИЧНЕВЫЙ, ЧЕРНЫЙ);

type СВЕТ is (КРАСНЫЙ, ЯНТАРНЫЙ, ЗЕЛЕНЫЙ) :

- - КРАСНЫЙ и ЗЕЛЕНЫЙ совмещены.

type ШЕСТНАДЦАТЕРИЧНЫЕ is ('A', 'B', 'C', 'D', 'Е', 'F') ;

type СМЕШАННЫЙ is ('А', 'В', '*', В, НИЧТО, '?', '%') ;

subtype ДЕНЬ НЕДЕЛИ is ДЕНЬ range ПНД .. ПТН;

subtype КОЗЫРЬ is МАСТЬ range ЧЕРВЫ .. ПИКИ;

subtype РАДУГА is ЦВЕТ rangy КРАСНЫЙ .. ГОЛУБОЙ;

- - КРАСНЫЙ - цвет, но не свет.


Примечание. Если литерал перечисления встречается в контексте, недостаточном для определения типа литерала, то один из путей разрешения неоднозначности - это применение квалифицированного выражения с именем перечислимого типа (см. 8.7).

3.5.2. Символьные типы

Перечислимый тип называется символьным, если хотя бы один из его литералов перечисления является символьным литералом. Предопределенный тип CHARACTER - символьный тип, значения которого представляют собой 195 символов стандартного набора. Каждый из 161 графических символов этого символьного набора обозначен соответствующим символьным литералом.

Пример: