Бесконечный циклБесконечный цикл в программировании — цикл, написанный таким образом, что условие выхода из него никогда не выполняется. О программе, вошедшей в бесконечный цикл, иногда говорят, что она зациклилась[1]. Представление о бесконечном цикле играет важную роль в понятии о тьюринг-полноте языков программирования: с одной стороны, любой цикл можно представить как бесконечный цикл, в теле которого есть проверка условия выхода и команда выхода из цикла, с другой — любая программа может быть написана при помощи:
Бесконечный цикл на языке Паскаль: //Вариант 1
while true do
begin
{что-нибудь делаем}
if {условие выхода из бесконечного цикла} then break
end;
//Вариант 2
repeat
{что-нибудь делаем}
until false;
//вариант 1
for (;;) {
/* что-нибудь делаем */
}
// вариант 2
while(true) {
/* что-нибудь делаем */
}
Язык Ада (а также ряд его потомков) имеют специальную конструкцию, описывающую бесконечный цикл:[3] loop
-- что-нибудь делаем
end loop;
Кроме того, Ада позволяет осуществить выход сразу из нескольких вложенных циклов, а также имеет условную форму оператора выхода, позволяющую избежать использования оператора ветвления: Out_Cycle:
loop
...
loop
...
exit Out_Cycle when Logic_Exp;
-- равносильно
if Logic_Exp then
exit Out_Cycle;
end if;
...
end loop;
...
end loop Out_Cycle;
--отсюда продолжится выполнение программы
--после выполнения инструкции exit Out_Cycle;
ПрактикаПрограммы, из которых выход возможен только выключением устройства или остановкой интерпретатора, представляют собой бесконечный цикл. К таким программам относятся:
Зацикливание (несрабатывание условия выхода из цикла) — нередкая ошибка программирования. Между тем, использование бесконечных циклов — это очень хороший профессиональный приём. Так, например, при решении задач на олимпиадах по информатике (программированию) различных уровней основная задача участника — за отведённое время написать программы, решающие предложенные алгоритмические задачи. Как правило, такие задачи решаются с использованием циклов. Очевидно, что времени на обдумывание условия выхода из цикла (которое должно указываться в так называемом Приём этот основан на том факте, что каждый современный язык программирования предлагает ряд операторов, позволяющих прервать выполнение тела цикла не после очередной итерации, а во время очередного выполнения (например, Примечания
|