Цикли використовуються для багаторазового виконання певної логіки.
Два найпоширеніші типи - це while loop (невизначений цикл) і for loop (визначений, або порахований цикл).
Є також цикл for each, який ми розглянемо в наступному понятті.
for loop складається із заголовка та блоку коду, що містить тіло циклу, обгорнуте у фігурні дужки.
Заголовок складається з 3 компонентів, розділених крапками з комою ;: інструкції ініціалізації, умови та ще одного виразу.
Кожен із них може бути порожнім.
for (init-statement; condition; expression) {
some_statement;
}
while loop виконує своє тіло, доки перевірка його умови дає правду.
Наведений нижче фрагмент коду показує, як перетворити цикл for на цикл while.
init-statement;
while(condition) {
some_statement;
expression;
}
Працюючи з циклами, часто потрібно додати 1 або відняти 1 від змінної-лічильника.
Це настільки поширена операція, що для неї є спеціальні оператори: ++ та --.
Вони бувають у префіксній і постфіксній формі. Префіксна форма змінює змінну до її використання в інструкції, а постфіксна робить це після. Зазвичай нам потрібна саме префіксна форма.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
Компонент init зазвичай створює змінну-лічильник, компонент condition перевіряє, чи слід продовжувати або зупиняти цикл, а компонент expression зазвичай збільшує лічильник на одиницю наприкінці кожного повторення.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
Цей цикл підсумовує числа від 1 до 9 (включно з 9).
Усередині тіла циклу можна використати ключове слово break, щоб повністю зупинити виконання циклу:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
Натомість ключове слово continue лише зупиняє виконання поточної ітерації та переходить до наступної:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
Примітка: зазвичай легше зрозуміти логіку циклу, коли використання
breakіcontinueзведено до мінімуму або повністю уникається.