Цикли використовуються для багаторазового повторення деякого набора інструкцій. В С++ є три види циклів:
-
while
– цикл з передумовою;do … while
– цикл з післяумовою;for
– цикл з лічильником або з параметром
Один вид циклу можна замінити іншим. Конкретний вид циклу обирається розробником виходячи з типу задач, які необхідно розв’язати. Інструкції, які необхідно повторити називаються тілом циклу. Одноразове виконання інструкцій циклу називається ітерацією.
Цикл з передумовою while
Коли кількість повторень циклу наперед невідома, зазвичай використовують цикл з передумовою while
. Цикл while дуже схожий на if
, але якщо if
виконує дії один раз, то while
буде виконувати їх до тих пір, поки виконується умова.
Інструкції циклу з передумовою відповідає блок-схема:
Синтаксис:
1 2 3 |
while (умова) { // заголовок циклу інструкції тіла циклу // тіло циклу } |
Якщо у тілі циклу тільки одна інструкція, то {} можна опустити.
Інструкція циклу виконується так. Спочатку обчислюється умова в заголовку. Якщо вона істинна, то виконується тіло циклу та знов обчислюється умова. Якщо вона істинна, то все повторюється. Виконання циклу закінчується, коли значення умови стає хибним. В останньому циклі тільки обчислюється умова, а тіло не виконується. Якщо при першому обчисленні умова хибна, то тіло циклу не виконається жодного разу.
Приклад 1. Вивести на екран числа від 1 до N. N >1 вводиться з клавіатури.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> using namespace std; int main() { int n, i; cout << "Enter N " << endl; cin >> n; // введення значення N i = 1; // присвоєння початкового значення 1 while (i <= n) { // поки і<=n cout << i << endl; // виводити і i = i + 1; // збільшити і на одиницю } return 0; } |
За допомогою циклу while
легко створити «вічний цикл», для цього достатньо написати умову, яка ніколи не буде виконана. Наприклад, якщо в попередньому прикладі «забути» про збільшення і:
1 2 3 4 5 6 |
int i, n; cin >> n; i = 1; while (i <= n) { cout << i << endl; } |
Ці програма буде працювати вічно, тому що і завжди дорівнюватиме 1. Щоб зупинити виконання програми необхідно натиснути Shift+F5 у вікні Visual Studio.
Щоб уникнути ситуації з “вічним циклом” від розробника вимагається формулювати умову виходу з циклу. Добитися цього можна, якщо в тілі циклу запрограмувати зміну значень змінних, що впливають на умову. Найчастіше в якості такої змінної виступає лічильник. Якщо лічильник на кожному кроці циклу збільшується або зменшується на одиницю, то застосовується операція інкременту або декременту. (Докладніше про ці операції за посиланням)
Тобто попередній приклад можна переписати наступним чином:
1 2 3 4 5 6 7 |
int i, n; cin >> n; i = 1; while (i <= n) { cout << i << " "; i++; } |