Структуры управления
Все структуры управления последовательностью выполнения (иначе, управляющие структуры) Ады имеют соответствующие закрывающие инструкции, такие как "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
должны указывать все возможные значения переменной выбора в неперекрывающейся манере.