Цикл for, в простонародии - счётчик. Довольно мощный инструмент по сравнению с циклом while - помимо проверки условия позволяет прямо в себе создавать переменные и выполнять инструкцию. В общем случае синтаксис такой:
for (инициализация; условие; инструкция) {
// тело цикла
}
Цикл for должен состоять из трёх блоков в круглых скобках. Даже если какой-то из блоков отсутствует - точка с запятой должна быть на своём месте:
for (; условие;) {
// тело цикла
}
for (;;) {
// тело цикла
}
- Сначала однократно выполняется блок
инициализация. Переменные, созданные здесь, имеют область видимости в круглых скобках и в теле цикла - Затем циклично выполняются действия: проверяется блок
условие- Если оно верно - выполняется
тело цикла, затем выполняется блокинструкция - Если оно неверно - выход из цикла
- Если оно верно - выполняется
Давайте распишем for при помощи while, чтобы логика работы была более прозрачная:
инициализация;
while (условие) {
// тело цикла
инструкция;
}
Цикл "for each" #
Синтаксис упрощённого цикла for для итерируемых сущностей (массивов) вида for (type : data) {} разобран в уроке про массивы.
Счётчик #
Самое частое применение цикла 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
}
// break переносит сюда
Оператор continue #
Позволяет прервать цикл в указанном месте и перейти к выполнению инструкции:
for (int i = 0; i < 5; i++) {
if (i == 2) continue;
// здесь i принимает значения 0, 1, 3, 4 - значение 2 пропущено
}
Фактически continue переносит выполнение кода в конец тела цикла, т.е. после этого выполнится инструкция for, а затем снова будет проверяться условие:
for (int i = 0; i < 5; i++) {
// ...
if (i == 2) continue;
// ...
// ...
// ...
// continue переносит сюда
}
Дополнительно #
Дополнительный контент доступен владельцам набора GyverKIT и по подписке, подробнее читай здесь. Блок содержит:
- Тезисы, Задания
- 2 блоков кода
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками