Бесконечный цикл

Как можно понять из названия, бесконечный цикл – это цикл, написанный таким образом, что он никогда не прекратит своё выполнение, так как никогда не выполнится условие выхода из этого цикла.

В целом, бесконечные циклы считаются плохим тоном и почти всегда являются следствием неправильно написанной программы. Однако случаются моменты, когда такие циклы бывают довольно полезны. Например, если, необходимо, чтобы программа не закрывалась или чтобы из неё не было выхода. Операционные системы и некоторые программы микроконтроллеров зачастую также представляют собой бесконечные циклы.
В большинстве языках программирования создать бесконечные циклы можно тремя способами – при помощи циклов for, while и do…while. Мы разберём бесконечные циклы для языка C#, однако посмотрев на реализацию, очень просто спроецировать код на любой другой язык программирования. Также внизу статьи будут листинги бесконечных циклов на языках C, Java и С++.

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

Бесконечный цикл for на С#

Создать бесконечный цикл крайне просто. Например для того, чтобы сделать бесконечным цикл for, необходимо просто оставить пустые поля в скобках при нём: for ( ; ; ).
Давайте посмотрим, как это выглядит в программе. Для начала мы объявим и инициализируем переменную i нулем. С неё будет вестись отсчёт чисел. Затем идёт цикл for без условий в скобках. Внутри цикла мы сделаем инкремент переменной i, иными словами – прибавим к переменной единицу. Ну и, наконец, так же в цикле будем выводить значение переменной i в консоль.

Итого у нас получается следующий процесс выполнения программы: инициализация i=0, вход в цикл for, проверка условий for, отсутствие в цикле условий, переход к операциям внутри цикла – прибавка к i единицы (i становится равно 1), вывод i в консоль, возвращение к проверке условий for, отсутствие в цикле условий, снова прибавка к i единицы (i становится равно 2), вывод i в консоль, возвращение к проверке условий for, отсутствие в цикле условий и так далее до бесконечности.

Результат работы программы представлен на скриншоте ниже:

Бесконечный цикл C#

За несколько секунд цикл досчитал уже до 180 000, и будет продолжать работать дальше.Из-за отсутствия условий программа не сможет определить, когда необходимо прекратить свою работу. Остановить цикл мы сможем лишь принудительно закрыв программу.

Бесконечный цикл while на С#

Сделать бесконечный цикл while также легко, как и for. У данного цикла будет иметься условие, в отличие от цикла for, однако это условие никогда не измениться и из-за этого цикл никогда не прекратит свою работу.

Как мы видим, отличие этой программы от предыдущей имеется лишь в строке 8, где объявляется цикл while и ему присваивается значение true (также можно вместо «true» написать «1», так как для компьютера эти понятия эквивалентны). Цикл будет работать до тех пор, пока это значение не изменится на false (или «0»). Но так как в коде мы нигде больше не меняем это значение, программа продолжает работать бесконечно.

Результат работы программы такой же, как и у предыдущей.

Бесконечный цикл do…while на С#

Цикл do-while обязательно один раз будет выполнен (потому что он с постусловием). После первой итерации выполняется проверка условия выхода из цикла, затем цикл повторно выполняет блок операторов, пока условное выражение в while не примет значение false (но в нашем случае этого не будет). Исполнение программы с данным циклом идентично исполнению программы, описанной выше:

Так как мы нигде не меняем условие при while на значение «false», программа будет продолжать работу бесконечно, пока мы не закроем её принудительно, либо пока переменная не достигнет числа 2 147 483 647, так как целочисленный тип данных int вмещает в себя не больше указанного числа (в данном случае в программе возникнет ошибка).

Бесконечный цикл и оператор break на С#

Несмотря на то, что в бесконечном цикле никогда не выполняется условие выхода из него, можно произвести его остановку, например, при помощи оператора break. Используя данный оператор, можно вызвать немедленное прерывание цикла, даже если условие цикла ещё не было выполнено.
Простой пример, демонстрирующий это:

Как вы видите, мы взяли бесконечный цикл for и добавили в него условный оператор if и оператор break (строка 12). Таким образом мы дали команду, что, если переменная i будет равняться 12 345, необходимо будет выполнить выход из цикла, несмотря на то, что цикл может продолжать работу, так как условия выхода в нём не были выполнены.
Если запустить программу. то результат будет следующим:

Бесконечный цикл C#

Больше в консоль ничего не записывалось. После того, как переменная i достигнет своего значения в 12 345, вызывается оператор break, обеспечивающий принудительный выход из цикла.

Таким образом можно контролировать бесконечный цикл и прерывать его в необходимых местах или при достижении необходимых целей.

Спасибо за внимание! Скачать все описанные выше рабочие листинги вы можете по следующей ссылке:

Скачать исходник

 

 

Ниже будут представлены листинги бесконечных циклов на языках C, Java и С++


Язык C

Бесконечный цикл for на С

Бесконечный цикл while на С

Бесконечный цикл do…while на С


Язык Java

Бесконечный цикл for на Java

Бесконечный цикл while на Java

Бесконечный цикл do…while на Java


Язык C++

Бесконечный цикл for на С++

Бесконечный цикл while на С++

Бесконечный цикл do…while на C++

Бесконечный цикл
5 (100%) 6 votes

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">