Основы программирования

Основы Ada 95 - Операторы цикла
Индекс материала
Основы Ada 95
Текстовый и числовой ввод-вывод
Процедуры ввода
Основные операторы
Операторы цикла
Основные программные модули
Процедуры
Пакеты
Производные типы
Подтипы
Расширяемые типы
Все страницы
Операторы цикла

 

Оператор цикла loop

loop

<последовательность операторов 1>

exit when <условие выхода>

<последовательность операторов 2>

end loop;

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

Порядок выполнения.

1. Выполняется последовательность операторов 1.

2. Вычисляется значение условия выхода. Если значение равно True, происходит выход из цикла.

3. Выполняется последовательность операторов 2. Осуществляется переход к пункту 1.

ПРИМЕЧАНИЕ

Операторы тела повторяются, пока условие равно False. В теле должен быть оператор, влияющий на значение условия, иначе цикл будет выполняться бесконечно. В теле цикла возможно использование безусловного оператора выхода exit или условного оператора выхода exit when <условие>.

 

Пример:

Count := 1;

loop

Ada.Integer_Text_IO.Put ( Count );

exit when Count = 10;

Count := Count + 1;

end loop:

При выполнении цикла на экран выводится:

12345678910

Аналогичные вычисления можно задать в следующем виде:

Count := 1

loop

Ada.Integer_Text_IO.Put ( Count );

if Count = 10 then

exit;

end if;

Count := Count + 1;

end loop;

Оператор цикла while также позволяет определить цикл с заранее неизвестным количеством повторений, имеет вид

while <условие продолжения> loop

<последовательность операторов>

end loop;

Порядок выполнения.

1. Вычисляется значение условия. Если значение равно True, выполняется переход к пункту 2. В противном случае (при значении False) происходит выход из цикла.

2. Выполняются операторы тела цикла. Осуществляется переход к пункту 1.

Таким образом, это цикл с предусловием.

Перечислим характерные особенности оператора while.

1. Операторы тела могут выполняться нуль и более раз.

2. Операторы тела повторяются, пока условие равно True.

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

Пример:

Count :=1;

loop

while Count <= 10 loop

Put ( Count ):

Count := Count + 1;

end loop;

При выполнении цикла на экран выводится:

12345678910

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

Первая форма оператора for имеет вид:

for <параметр цикла> in <дискретный диапазон> loop

<операторы тела цикла>

end loop;

Параметр цикла — это переменная, которая заранее не описывается (в программе). Данная переменная определена только внутри оператора цикла. Параметру цикла последовательно присваиваются значения из дискретного диапазона. Дискретный диапазон всегда записывается в порядке возрастания в виде

min .. max;

Операторы тела повторяются для каждого значения параметра цикла (от минимального до максимального).

Пример:

for Count in 1 .. 10 loop

Put ( Count );

end loop;

При выполнении цикла на экран выводится:

1 2 3 4 5 б 7 8 9 10

Вторая форма оператора for имеет вид

for <параметр цикла> in reverse <дискретный диапазон> loop

<операторы тела цикла>

end loop;

Отличие этой формы состоит в том, что значения параметру присваиваются в порядке убывания (от максимального к минимальному). Диапазон же задается по-прежнему, в порядке возрастания.

Пример:

for Count in reverse 1 .. 10 loop

Put ( Count );

end loop;

При выполнении цикла на экран выводится:

10987654321

ПРИМЕЧАНИЕ

Операторы exit и exit when могут использоваться и в операторах цикла while, for.