Ада-95. Компилятор GNAT

         

Структуры управления


Все структуры управления последовательностью выполнения (иначе, управляющие структуры) Ады имеют соответствующие закрывающие инструкции, такие как "if ... end if", "loop ... end loop", "case ... end case".

Далее, в Аде символ двоеточия ';' используется для завершения инструкции, а не для разделения инструкций, как в Паскале.

Это обеспечивает синтаксис, который, по сравнению с синтаксисом Паскаля, легче использовать корректно.

Например, инструкция Паскаля:

if X < Y then

A := B;

будет написана в Аде следующим образом:

if X < Y then

A := B; end if;

А инструкция Паскаля:

if X < Y then



begin

A := B; Z := X end

else

begin

A := X; Z := B end;

будет написана в Аде следующим образом:

if X < Y then

A := B; Z := X; else

A := X; Z := B; end if;

Использование подобного синтаксиса в Аде гарантирует остутствие "висячих" else.

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

Счетчик цикла for локален для тела цикла.

Описание счетчика цикла for как переменной, так как это принято в Паскале, не наносит реального ущерба, но описывает самостоятельную переменную, которая спрятана за фактическим счетчиком цикла и, следовательно, не видима в теле цикла.

Диапазоны, для цикла for, часто назначаются как имена типов или подтипов, подобно следующему:

for Count in Index'Range loop

Ада не имеет структуры цикла repeat.

Вместо этого используется "loop ... end loop" с инструкцией выхода из цикла "exit when" в конце тела цикла.

Переменная выбора в инструкции case

должна быть дискретного (целочисленного или перечислимого) типа.

Различные альтернативы выбора case

должны указывать все возможные значения переменной выбора в неперекрывающейся манере.



Содержание раздела