Досрочный выход из цикла

Можно выйти?

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

Есть несколько способов досрочного завершения циклов. Например, для этого в циклы whileи repeatможно добавить флаг (переменную логиче­ского типа), который будет сигнализировать об окончании работы цикла.

Рассмотрим практически бесполезную процедуру:


procedure _cycl; var
n,i: integer; flag: boolean; begin
J
flag:= FALSE; i:=0;
while not flag do begin i:= i+1;
//if i > 5 then flag:= TRUE; flag:= i > 5; end;
frmMain.lstProtokol.Items.add(inttostr(i));
end;

Перед началом цикла мы сбрасываем флаг, и теперь оператор whileбудет выполняться до тех пор, пока значение флага не станет равным TRUE. Мы сами должны «поднять флаг» в нужный момент. Например, мы отсчитали больше 5 проходов цикла (переменная iприняла значение 6). Нам этого вполне достаточно, что мы и сообщаем оператору while, который тут же заканчивается и передаёт управление оператору, следующему за структу­рой while, и мы в окне списка увидим число 6.

 

Как видите, всё очень просто. Главное - не забыть на каждой итерации увеличивать значение переменной i, в противном случае цикл не закон­чится никогда! Точно так же флаг используется и в цикле repeat:


repeat i:= i + 1; flag:= i > 5;
until flag; 
frmMain.lstProtokol.Items.add(inttostr(i));

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: