Циклы
1. Введение
Частая задача программирования - выполнение однотипного действия много раз. Например, вывести клиентов из списка один за другим, или перебрать суммы зарплат и для каждой выполнить одинаковый код. Именно для таких целей, многократного повторения одного участка кода, используются циклы.
Цикл — управляющая конструкция в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций.
Тело цикла — последовательность инструкций, предназначенная для многократного исполнения.
Итерация — единичное выполнение тела цикла.
Условие выхода — выражение, определяющее будет в очередной раз выполняться итерация, или цикл завершится.
Счётчик — переменная, хранящая текущий номер итерации. Цикл не обязательно содержит счётчик, и он не обязан быть один, условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных.
Исполнение любого цикла включает:
первоначальную инициализацию переменных цикла
проверку условия выхода
исполнение тела цикла
обновление переменной цикла на каждой итерации
Кроме того, большинство языков программирования предоставляют средства управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода.
2. Цикл while
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу, если условие с самого начала ложно.
Инструкция while
создает цикл, который выполняет блок кода, пока условие проверки оценивается как true
.
Оператор
while
вычисляетexpression
перед каждой итерацией цикла.Если
expression
оценивается какtrue
, операторwhile
выполняетstatement
.Если
expression
оценивается какfalse
, выполнение цикла прерывается и скрипт продолжает выполнять инструкции после циклаwhile
.
Блок-схема иллюстрирует цикл while
.
Сделаем счетчик.
Будем заполнять места в отеле до тех пор пока текущее количество клиентов не будет равно максимально допустимому.
3. Цикл do...while
Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз.
Оператор do...while
создает цикл, который выполняет блок кода до тех пор, пока expression
не станет равным false
.
В отличие от цикла while
, цикл do...while
всегда выполняет statement
как минимум один раз, прежде чем он оценит expression
.
Внутри цикла нужно внести изменения в некоторую переменную, чтобы убедиться, что выражение равно false
после итераций. В противном случае будет бесконечный цикл.
Блок-схема иллюстрирует цикл do-while
4. Цикл for
Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального до конечного значения с некоторым шагом и для каждого значения этой переменной тело цикла выполняется один раз.
В большинстве процедурных языков программирования реализуется оператором for
, в котором указывается счётчик, требуемое количество итераций и шаг, с которым изменяется счётчик.
Алгоритм исполнения цикла for
:
Инициализация (initialization) — выражение инициализации выполняется один раз, когда начинается цикл. Используется для инициализации переменной-счетчика. Если используется ключевое слово
let
, переменная счетчика является локальной для цикла.Условие (condition, test) — выражение, оцениваемое перед каждой итерацией цикла. Тело цикла выполняется только тогда, когда выражение условия принимает значение
true
. Цикл завершается, если значение будетfalse
.Тело (statements) — выполняется в случае удовлетворения условия.
Пост-выражение (post-expression) — выполняется после тела на каждой итерации цикла, но перед проверкой условия. Используется для обновления переменной-счетчика.
Переменные-счетчики, по традиции, называются буквами i/j/k
.
Посчитаем сумму чисел до определенного значения.
Вспомним про операцию a % b
и выведем остаток от деления используя цикл.
5. Инструкции break и continue
5.1. break
Выйти из цикла можно не только при проверке условия, но и вообще в любой момент. Эту возможность предоставляет инструкция break
. Она полностью прекращает выполнение цикла и передаёт управление на строку за его телом.
Специально прервем цикл на 5-й итерации.
5.2. continue
Директива continue
прерывает не весь цикл, а только выполнение текущей итерации. Её используют, если понятно, что на текущей итерации цикла делать больше нечего или вообще ничего делать не нужно и пора переходить на следующую итерацию.
Last updated