Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чаплыгин А.Н. Учимся програмировать вместе с Пи...doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

§6.3. Бесконечные циклы

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

i =

0

whi

le

i

<

10:

print

i

Этот цикл будет выполняться бесконечно, т.к. условие i < 10 всегда будет истинным, ведь значение переменной i не изменяется: такая программа будет выводить бесконечную последовательность нулей. В отличие от рекурсивных функций, у циклов нет ограничения количества повторений тела цикла, поэтому программа с бесконечным циклом будет работать непрерывно, пока мы не произведем аварийный останов нажатием комбинации клавиш [Ctrl+C], не уничтожим соответствующий процесс средствами операционной системы, не будут исчерпаны доступные ресурсы компьютера (например, может быть достигнуто максимальное допустимое количество открытых файлов), или не возникнет исключение. В таких ситуациях программисты говорят, что программа зациклилась.

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

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

66

Ревизия: 170

Циклы

Циклы - это очень мощное средство реализации ваших идей, но они требуют некоторой внимательности.

§6.4. Альтернативная ветка цикла while

Язык Питон имеет много интересных и полезных особенностей, одной из которых является расширенный вариант оператора цикла:

wh

ile УСЛОВИЕ ПОВТОРЕНИЯ

ЦИКЛА:

ТЕЛО ЦИКЛА

el

se:

АЛВТЕРНАТИВНАЯ

ВЕТКА

ЦИКЛА

Пока выполняется условие повторения тела цикла, оператор while работает так же, как и в обычном варианте, но как только условие повторения перестает выполняться, поток выполнения направляется по альтернативной ветке else- так же, как в условном операторе if, оно выполнится всего один раз.

>» i = 0

>» while i < 3:

print i

i += 1 else:

print "end of loop"

0

1

2

end of loop

>»

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

Упражнение. Выясните, как поведет себя оператор, если условие повторения цикла будет ложным.