Урок 10. Операторы break и continue

В этой статье будет сказано о циклах for и while, операторах break и continue, а также о слове else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.

Операторы break и continue

Ходом выполнения цикла можно управлять с помощью двух операторов break и continue.

break – прерывает выполнение цикла, управление передается операторам, следующим за оператором цикла.

continue – прерывает выполнение очередного шага цикла и возвращает управление в начало цикла, начиная следующий шаг.

Например:

?

  for n:=1 to 10 do  begin    if n mod 2 = 0 then      continue;    if n = 7 then      break;    writeln(n);  end;

Данная программа будет печатать только нечетные числа (из-за срабатывания continue). Цикл прекратит выполняться, когда n станет равно 7. В итоге будут напечатаны числа: 1, 3, 5.

Как перебрать значения списка циклом for?

Циклы for перебирают коллекцию элементов, таких как list или dict, и запускают блок кода с каждым элементом из коллекции.

for i in [0, 1, 2, 3, 4]: print(i) # Вывод: # 0 # 1 # 2 # 3 # 4

Вышеприведенный цикл for выполняет итерацию по списку итерация устанавливает значение i для следующего элемента списка. Итак, сначала это будет , затем 1, затем 2 и т.д

Аналогично, цикл работает с любыми типами списков, например, со списком строк:

for x in [‘one’, ‘two’, ‘three’, ‘four’]: print(x) # Вывод: # one # two # three # four

Часто, необходимо сгенерировать последовательность чисел и обойти ее, для этого удобно использовать функцию range:

Читайте также:  CHKDSK Как проверить и исправить ошибки жесткого диска

for x in range(1, 6): print(x) # Вывод: # 1 # 2 # 3 # 4 # 5

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

Создать бесконечный цикл легко — достаточно не указывать параметры в for:

for (; 😉 {}

Сложнее извлечь из этого пользу. Обычно бесконечность цикла – критическая ошибка, которая мешает выполнению программы. Поэтому каждый цикл стоит проверять на способность корректно завершиться в нужный момент. Для этого нужно:

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

Советуем также посмотреть мастер-класс по созданию приложения «Погода», где рассматривается работа с циклами 

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

Бесконечными циклами в программировании называются те, в которых условие выхода их них не выполняется.

Цикл while становится бесконечным, когда его условие не может быть ложным. Например, при помощи него можно реализовать программу «Часы», которая бесконечно отображает время.

Примером реализации в Python бесконечного цикла будет такой код:

Num = 3 while num < 5: print «Привет»

Очевидно, что заданная переменная всегда останется цифрой 3, поскольку никак не задано ее увеличение, поэтому на экране просто будет появляться слово «Привет».

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

Операторы break и continue

Циклом можно управлять с помощью операторов break и continue.

Оператор break приводит к выходу из цикла или инструкции switch и передает управление операторам, следующим за ними.

Читайте также:  Установка «Telegram» на Linux Mint и Ubuntu

В следующем примере создаётся счётчик, значения которого должны изменяться от 1 до 99, однако оператор break прерывает цикл после 4 итераций:

for (var count = 1; count < 100; count++) { if (count == 5) { break; } alert( "count" + ": " + count ); } Выполнить код » Скрыть результаты

Для вложенных циклов оператор break используется с меткой, с помощью которой завершается работа «меченой» инструкции. Метка позволяет выйти из любого блока кода. Метка имеет вид «имя_метки:», имя должно быть уникальным. Она ставится перед циклом или блоком инструкций, которые нужно завершить с помощью break:

outer: // метка внешнего цикла for(var i = 0; i < 10; i++) { inner: // метка вложенного цикла for(var j = 0; j < 10; j++) { if (j > 3) break; // Выход из самого внутреннего цикла if (i == 2) break inner; // То же самое if (i == 3) break outer; // Выход из внешнего цикла alert( «i = » + i + » j = » + j ); } } alert( «∑ i = » + i + » j = » + j ); Выполнить код » Скрыть результаты

Указание имени метки (без двоеточия) за ключевым словом break приводит к выходу из цикла или инструкции. Между ключевым словом break и именем метки не допускается перевод строки. Вызов break inner завершит вложенный цикл, а break outer ищет ближайший внешний цикл с такой меткой и переходит в его конец.

Оператор continue прерывает текущее выполнение цикла и переходит к выполнению следующего шага этого цикла. При этом, цикл while возвращается непосредственно к своему условию, а цикл for сначала вычисляет выражение инкремента, а затем возвращается к условию.

Читайте также:  Как установить и посмотреть переменные окружения Linux

Рассмотрим пример:

var num = 0; for (var i = 1; i < 10; i++) { if (i % 2 == 0) { continue; } num++; } alert ( num ) ; // 5 Выполнить код » Скрыть результаты

В теле цикла инструкция if с помощью оператора (%) проверяет, является ли число четным. Если да, итерация цикла завершается до увеличения переменной num, но цикл продолжается со следующей итерации со значением i, увеличенным на единицу. Затем цикл выполняется до естественного завершения при значении i, равном 10. Переменная num подсчитывает количество итераций цикла. Окончательное значение num равно 5, а не 9, потому что четные операции инкремента пропускаются из-за оператора continue.

Оператор continue, как и break, можно использовать вместе с «помеченными» инструкциями для возврата к конкретному месту в коде. Чаще всего это делается во вложенных циклах, например:

var num = 0; outer_mask: // метка for (var i=0; i < 5; i++) { for (var j=0; j < 5; j++) { if (i == 3 && j == 3) { continue outer_mask; } num++; } } alert ( num ) ; //95 Выполнить код » Скрыть результаты

В этом примере для внешнего цикла for добавлена метка outer_mask. Каждый цикл включает 5 итераций, то есть инструкция num++ предположительно должна быть выполнена 25 раз, после чего переменная num должна быть равна 25. Оператор continue завершает выполнение внутреннего цикла, начиная новую итерацию внешнего. Она выполняется, когда j равно 3, то есть пропускаются две итерации внутреннего цикла, из-за чего num в итоге имеет значение 23.