Ци

Цикли у C++

12 вправ

Про концепцію Цикли

Цикли використовуються для багаторазового виконання певної логіки. Два найпоширеніші типи - це while loop (невизначений цикл) і for loop (визначений, або порахований цикл). Є також цикл for each, який ми розглянемо в наступному понятті.

Загальний синтаксис

for loop складається із заголовка та блоку коду, що містить тіло циклу, обгорнуте у фігурні дужки. Заголовок складається з 3 компонентів, розділених крапками з комою ;: інструкції ініціалізації, умови та ще одного виразу. Кожен із них може бути порожнім.

for (init-statement; condition; expression) {
  some_statement;
}
  • Компонент init - це код, який виконується лише один раз перед початком циклу.
  • Компонент condition має бути виразом, що обчислюється до булевого значення (англ. Boolean) і керує тим, коли цикл має зупинитися. Код усередині циклу виконуватиметься, доки ця умова обчислюється як правда. Щойно цей вираз обчислиться як неправда, цикл більше не виконає жодної ітерації.
  • Компонент expression - це код, який виконується наприкінці кожної ітерації.

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

Цикли for: приклад

Компонент init зазвичай створює змінну-лічильник, компонент condition перевіряє, чи слід продовжувати або зупиняти цикл, а компонент expression зазвичай збільшує лічильник на одиницю наприкінці кожного повторення.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

Цей цикл підсумовує числа від 1 до 9 (включно з 9).

break і continue

Усередині тіла циклу можна використати ключове слово 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 зведено до мінімуму або повністю уникається.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Цикли

Практика заблокована

Розблокуйте ще 4 вправи, щоб практикувати концепцію Цикли