Справочное руководство по языку Ада-83


Объекты и именованные числа - часть 4


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

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

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

CONSTRAINT_ERROR.

Значение скалярной переменной после предвыполнения соответствующего описания объекта не определено, если начальное значение не было присвоено переменной при (явной или

неявной) инициализации.

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

Примеры описаний переменных:

COUNT, SUM : INTEGER; SIZE : INTEGER range 0 .. 10_000 := 0; SORTED : BOOLEAN := FALSE; COLOR TABLE : array(1 .. N) of COLOR; OPTION : BIT_VECTOR(1 .. 10) := (others => TRUE);

Примеры описаний констант:

LIMIT : constant INTEGER := 10_000; LOW LIMIT : constant INTEGER := LIMIT/10; TOLERANCE : constant REAL := DISPERSION(1.15);

Примечание

Выражение для инициализации константы не обязательно является статическим выражением (см. 4.9).




Начало  Назад  Вперед