Цикл for
, в простонародии - счётчик. Довольно мощный инструмент по сравнению с циклом while
- помимо проверки условия
позволяет прямо в себе создавать переменные и выполнять инструкцию
. В общем случае синтаксис такой:
for (инициализация; условие; инструкция) {
// тело цикла
}
Цикл for
должен состоять из трёх блоков в круглых скобках. Даже если какой-то из блоков отсутствует - точка с запятой должна быть на своём месте:
for (; условие;) {
// тело цикла
}
for (;;) {
// тело цикла
}
- Сначала однократно выполняется блок
инициализация
. Переменные, созданные здесь, имеют область видимости в круглых скобках и в теле цикла - Затем циклично выполняются действия: проверяется блок
условие
- Если оно верно - выполняется
тело цикла
, затем выполняется блокинструкция
- Если оно неверно - выход из цикла
- Если оно верно - выполняется
Давайте распишем for
при помощи while
, чтобы логика работы была более прозрачная:
инициализация;
while (условие) {
// тело цикла
инструкция;
}
Счётчик #
Самое частое применение цикла for
- счётчик, то есть цикл, который должен выполниться заданное количество раз. В этом случае создаётся переменная-счётчик, сравнивается со значением и изменяется в блоке инструкция
:
for (int i = 0; i < 5; i++) {
// здесь i принимает значения 0, 1, 2, 3, 4 - пять итераций
}
Важно! Переменные в цикле являются локальными и обязательно должны быть инициализированы!
Счётчик необязательно должен начинаться с нуля и иметь шаг 1
:
for (int i = 6; i >= -2; i -= 2) {
// здесь i принимает значения 6, 4, 2, 0, -2
}
Можно создать несколько переменных и выполнять разные инструкции - цикл очень гибкий и позволяет описать одной строкой довольно непростой алгоритм:
for (int i = 0, j = 1; i < 5; i++, j += i) {
// пять итераций (счётчик по i)
// j каждый раз увеличивается на значение i
// здесь j принимает значения 1, 2, 4, 7, 11
}
Или вовсе сделать бесконечный цикл - аналог while (true)
:
for (;;);
Оператор break #
Позволяет прервать цикл в указанном месте и покинуть его:
for (int i = 0; i < 5; i++) {
if (i == 2) break;
// здесь i принимает значения 0, 1
}
Оператор continue #
Позволяет прервать цикл в указанном месте и перейти к проверке условия:
for (int i = 0; i < 5; i++) {
if (i == 2) continue;
// здесь i принимает значения 0, 1, 3, 4 - значение 2 пропущено
}