Основы Ada 95 - Операторы цикла |
Страница 5 из 11
Операторы цикла
Оператор цикла 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.
|