For faster navigation, this Iframe is preloading the Wikiwand page for Бесконечный цикл.

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

Материал из Википедии — свободной энциклопедии

Бесконечный цикл в программировании — цикл, написанный таким образом, что условие выхода из него никогда не выполняется. О программе, вошедшей в бесконечный цикл, иногда говорят, что она зациклилась[1].

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

  • бесконечных циклов,
  • команд выхода из цикла,
  • операторов ветвления (if-then),
  • последовательности команд, исполняемых одна после другой.


Бесконечный цикл на языке Паскаль:

//Вариант 1
while true do
   begin
      {что-нибудь делаем}
      if {условие выхода из бесконечного цикла} then break
   end;

//Вариант 2
repeat
{что-нибудь делаем}
until false;

Для си-подобных языков:[2]

//вариант 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;

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

Зацикливание (несрабатывание условия выхода из цикла) — нередкая ошибка программирования. Между тем, использование бесконечных циклов — это очень хороший профессиональный приём.

Так, например, при решении задач на олимпиадах по информатике (программированию) различных уровней основная задача участника — за отведённое время написать программы, решающие предложенные алгоритмические задачи. Как правило, такие задачи решаются с использованием циклов. Очевидно, что времени на обдумывание условия выхода из цикла (которое должно указываться в так называемом while-цикле) у участника недостаточно. Поэтому очень полезным приёмом является использование модифицированных бесконечных циклов.

Приём этот основан на том факте, что каждый современный язык программирования предлагает ряд операторов, позволяющих прервать выполнение тела цикла не после очередной итерации, а во время очередного выполнения (например, Break в Delphi, EXIT FOR в Бейсике и т. д.). Для экономии времени участник олимпиады пишет бесконечный цикл while с условием выполнения True (while True do ...), а затем по мере необходимости в теле цикла записывает операторы проверки условий, которые в случае необходимости прерывают выполнение цикла Break-подобными операторами.

Примечания

[править | править код]
  1. Использование этого глагола вышло далеко за пределы программирования, и он зачастую применяется по отношению к субъектам в смысле характеристики некорректного поведения.
  2. Бесконечный цикл в C/C++ - программирование (амер. англ.). Дата обращения: 2 апреля 2022.
  3. Ada (язык программирования) — Национальная библиотека им. Н. Э. Баумана. ru.bmstu.wiki. Дата обращения: 2 апреля 2022.
В статье не хватает ссылок на источники (см. рекомендации по поиску). Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (29 декабря 2015)
{{bottomLinkPreText}} {{bottomLinkText}}
Бесконечный цикл
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?