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

Top  Previous  Next

Оператор цикла многократно выполняет некоторую последовательность операторов.

 

Цикл, начинающийся ключевым словом for, неявно вводит переменную цикла.

Переменная цикла имеет указанное после ключевого слова for имя и тип integer (int). Область действия переменной цикла ограничена циклом.

 

Для синтаксиса Ada диапазон изменений переменной цикла задаётся явно двумя выражениями, каждое из которых также должно иметь тип integer. Выполнение цикла начинается с вычисления выражений для границ диапазона. Затем переменной цикла присваивается значение нижней границы диапазона, после чего происходит выполнение тела цикла с этим значением переменной. После этого значение переменной цикла увеличивается на 1, и снова выполняется тело цикла с новым значением переменной. Это повторяется для всех значений переменной цикла от нижней до верхней границы включительно.

Если после ключевого слова in указано ключевое слово reverse, то значение переменной цикла меняется в обратном порядке - от верхней границы диапазона до нижней.

 

Для синтаксиса C# диапазон изменения переменной цикла задается неявно начальным значением переменной цикла, условием продолжения цикла и оператором инкремента или декремента переменной цикла.

 

Цикл while выполняется следующим образом.

В первую очередь происходит вычисление значения условного выражение после ключевого слова while. Если оно истинно, то происходит выполнение тела цикла. После этого снова вычисляется значение условного выражения после while, и если оно истинно, снова происходит выполнение тела цикла. Это повторяется до тех пор, пока значение условного выражения не оказывается ложным.

 

Бесконечный цикл (начинающийся с ключевого слова loop и не имеющий условия повторения для синтаксиса Ada или с условием повторения while (true) для синтаксиса C#), выполняет тело цикла до тех пор, пока в теле цикла не будет выполнен оператор выхода из цикла (см. раздел "Оператор выхода из цикла").

 

 

Примеры (синтаксис Ada):

 

for k in 1..10 loop -- k = 1,2,3,..,10
 z := z + y;

 sz: double := sin(z); -- локальная переменная, определенная только для тела этого цикла

 y := y+sz;

end loop;

 

for k in reverse 1..10 loop -- k = 10,9,8,..,1
 z := z + y;

 y := y+0.5;

end loop;

 

while z > 0 loop
 z := z - x;
 n := n+1;
end loop;

 

loop -- бесконечный цикл

 y := z/y;

end loop;

 

 

Примеры (синтаксис C#):

 

for (int k=1; k<=10; k++) { // k = 1,2,3,..,10
 z = z + y;

double sz = sin(z); // локальная переменная, определенная только для тела этого цикла

 y += sz;

};

 

for (int k=10; k>=1; k--) { // k = 10,9,8,..,1
 z = z + y;

 y = y+0.5;

};

 

while (z > 0) {
 z -= x;
 n++;
};

 

while (true) // бесконечный цикл

 y = z/y;