Опасность бесконечного цикла

К сожалению, в циклах while очень легко создать ситуацию, при которой количество повторов цикла становится бесконечным, то есть цикл повторяется снова и снова, и повторения эти в принципе никогда не прекратятся. А это означает, что класс просто "зависает", то есть фактически никогда не произойдет передача выполнения класса команде, следующей за циклом.

Например, если при проверке условия в заголовке цикла:

while (x>0)

окажется, что переменная х содержит положительное значение, цикл выполнится в первый раз. Но если внутри, в теле цикла, переменная х не изменяется, следовательно, условие снова окажется верным, и цикл выполнится во второй раз… и условие снова окажется верным, и цикл выполнится в третий раз… в четвертый… в пятый… в шестой… и так без конца…

В результате возникает так называемый "бесконечный цикл" – или, точнее сказать, бесконечное повторение цикла.

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

Но и этого – недостаточно! Необходимо так изменять значение переменной, проверяющейся в условии, чтобы в какой-то момент проверка условия обнаружила бы, что оно неверное – и исполнение цикла завершилось бы.

Например, если фрагмент класса выглядит следующим образом:

int a=1;

while (a>0)

{

a++;

System.out.print(a+" ");

}

то мы снова получим бесконечный цикл, так как значение переменной а все время увеличивается, увеличивается и увеличивается… И все время остается положительным… В результате чего условие, записанное в заголовке цикла, выполняется "всегда"… Снова получается бесконечный цикл, то есть бесконечное повторение цикла…


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: