Оператори break, continue. Особливості застосування. Приклади використання
Зміст
- 1. Особливості застосування оператору break
- 2. Особливості застосування оператору continue
- 3. Оператор break. Приклади розв’язку задач з використанням циклів
- 4. Оператор continue. Приклади розв’язку задач
- 5. Як працює оператор break у випадку вкладених циклів? Приклад
- 6. Чи можна використовувати оператори break та continue в операторі if?
- Зв’язані теми
Пошук на інших ресурсах:
1. Особливості застосування оператору break
У мові C++ існують оператори break та continue, які використовуються для управління ходом виконання циклічного процесу. Ці оператори можуть бути застосовані тільки в тілі циклу.
Оператор break призначений для штучного переривання виконання:
- послідовності ітерацій в операторах циклу for, while або do-while;
- послідовності операторів в операторі вибору switch.
Найчастіше оператор break використовується в поєднанні з оператором умови if. У цьому випадку, відбувається перевірка деякої умови, і в разі успіху викликається оператор break.
Приклад.
У нижченаведеному прикладі при досягненні змінною i значення 3 відбувається безумовний вихід з циклу шляхом виклику оператора break. Продемонстровано виклик break для усіх видів операторів.
#include <iostream> using namespace std; void main() { int i, j; // Оператор break // 1. Цикл for cout << "Loop for:" << endl; for (i = 0; i < 5; i++) // цикл по i { if (i == 3) break; // вихід з циклу for // цей оператор виконується cout << "i = " << i << endl; } // 2. Цикл while cout << "Loop while:" << endl; i = 0; while (i < 5) { if (i == 3) break; // вихід з циклу while cout << "i = " << i << endl; i++; } // 3. Цикл do-while cout << "Loop do-while:" << endl; i = 0; do { if (i == 3) break; // вихід з циклу do-while cout << "i = " << i << endl; i++; } while (i < 5); }
Результат виконання програми
Loop for: i = 0 i = 1 i = 2 Loop while: i = 0 i = 1 i = 2 Loop do-while: i = 0 i = 1 i = 2
⇑
2. Особливості застосування оператору continue
Оператор continue призначений для переходу до виконання наступної ітерації циклу. Якщо в тілі циклу зустрічається оператор continue, то:
- виконання поточної ітерації зупиняється;
- відбувається перехід до наступної ітерації циклу.
Оператор continue може бути застосований у всіх видах циклів: for, while, do-while.
У більшості випадків виклик оператора continue здійснюється при виконанні деякої умови в операторі if.
Приклад. У прикладі демонструється використання оператора continue для всіх видів циклів C++. У задачі, при досягненні змінної i значення 3 відбувається перехід до наступної ітерації з допомогою інструкції continue.
#include <iostream> using namespace std; void main() { int i, j; // Оператор continue // 1. Цикл for cout << "Loop for:" << endl; for (i = 0; i < 5; i++) // цикл по i { if (i == 3) continue; // перехід до наступної ітерації // цей оператор виконується cout << "i = " << i << endl; } // 2. Цикл while cout << "Loop while:" << endl; i = 0; while (i < 5) { if (i == 3) { i++; // збільшити лічильник - обов'язково continue; // перхід до наступної ітерації } cout << "i = " << i << endl; i++; } // 3. Цикл do-while cout << "Loop do-while:" << endl; i = 0; do { if (i == 3) { i++; // збільшити лічильник - обов'язково continue; // перехід до наступної ітерації } cout << "i = " << i << endl; i++; } while (i < 5); }
Результат роботи програми
Loop for: i = 0 i = 1 i = 2 i = 4 Loop while: i = 0 i = 1 i = 2 i = 4 Loop do-while: i = 0 i = 1 i = 2 i = 4
⇑
3. Оператор break. Приклади розв’язку задач з використанням циклів
3.1. Обчислення суми чисел, введених з клавіатури. Цикл for
Користувач вводить числа з клавіатури. Закінчення вводу – число 0. Обчислити суму чисел, які введе користувач. У програмі використати оператори for та break.
Розв’язок задачі на мові C++ наступний:
#include <iostream> using namespace std; void main() { // Обчислення суми чисел, що вводяться з клавіатури int number, summ = 0; cout << "Enter numbers (0-exit):" << ::endl; // вічний цикл for (;;) { // ввід числа cout << "number = "; cin >> number; // якщо ввести 0, то вихід з циклу if (number == 0) break; // збільшити суму на величину числа summ += number; } // відобразити суму cout << "summ = " << summ << endl; }
⇑
3.2. Обчислення значення числа π за формулою
Обчислити значення числа π, використовуючи формулу з заданою точністю.
#include <iostream> using namespace std; void main() { // Обчислити значення числа Пі з заданою точністю // 1. Оголосити внутрішні змінні int n; // кількість знаків після коми double eps; // точність int i, k; double pi; // шукане число Pi double t; // 2. Ввести кількість знаків після коми cout << "Enter the number of decimal places: n = "; cin >> n; // 3. Формування точності обчислень eps = 1; i = 0; while (i < n) { eps /= 10; // поділити на 10 n разів i++; } // 4. Цикл обчислення числа Pi pi = 1; i = 1; k = 1; t = 0; while (1) // вічний цикл { t = pi; i = i + 2; k = -k; pi = pi + k * 1.0 / i; // перевірка, чи досягнута бажана точність if (fabs(pi - t) < eps) break; // якщо точність досягнуто, вийти з циклу } // 5. Вивести результат pi = 4 * pi; cout << "pi = " << pi << endl; cout << "i = " << i << endl; }
У прикладі для виходу з циклу while використовується оператор break.
⇑
4. Оператор continue. Приклади розв’язку задач
4.1. Обчислення суми елементів послідовності
Дана послідовність дійсних чисел, яка завершується числом 0. Обчислити суму елементів послідовності, які мають значення в межах [-5; 5].
Розв’язок задачі на C++ виглядає наступним чином
#include <iostream> using namespace std; void main() { // Обчислення суми чисел, що знаходяться в заданих межах // кінець вводу - значення 0 const double MIN = -5.0; // нижня межа const double MAX = 5.0; // верхня межа double number; // число, що вводиться double summ = 0; // задана сума cout << "Enter numbers (exit - 0):" << ::endl; // цикл do-while do { // ввід числа cout << "=> "; cin >> number; // якщо число за допустимими межами if ((number < MIN) || (number > MAX)) continue; // то перейти до наступної ітерації циклу // обчислити суму, якщо введене коректне число summ += number; } while (number != 0); // числа вводяться до числа 0 // відобразити суму cout << "summ = " << summ << endl; }
⇑
4.2. Обчислення суми елементів масиву згідно з умовою
Обчислити суму елементів масиву, які лежать на парних позиціях. Оскільки в C++ елементи масиву нумеруються з 0, то парними вважатимемо позиції 1, 3, 5, і т.д.
Розв’язок задачі з використанням оператора continue наступний.
#include <iostream> using namespace std; void main() { // Обчислити суму елементів масиву, які лежать на парних позиціях // 1. Оголосити внутрішні змінні const int MAX = 10; // максимально-можлива кількість елементів у масиві double A[MAX]; // заданий масив int n; // кількість елементів у масиві double summ; // шукана сума // 2. Ввести кількість елементів у масиві cout << "Enter number of items in the array (1..10): "; cin >> n; // 3. Перевірка, чи коректно введені дані if ((n < 1) || (n > MAX)) return; // 4. Ввести масив cout << "Enter the array:" << endl; for (int i = 0; i < n; i++) { cout << "A[" << i << "] = "; cin >> A[i]; } // 5. Обчислення суми summ = 0; for (int i = 0; i < n; i++) { // перевірка, чи позиція парна if (i % 2 == 0) continue; // якщо парна позиція, то перейти до наступної ітерації summ = summ + A[i]; // якщо позиція непарна, обчислити суму } // 5. Вивести суму cout << "summ = " << summ << endl; }
⇑
5. Як працює оператор break у випадку вкладених циклів? Приклад
У випадку вкладених циклів відбувається вихід з циклу найбільш нижчого рівня. У нижченаведеному прикладі вкладений цикл по j ніколи не виконається до кінця, тому що в ньому зустрічається оператор break.
#include <iostream> using namespace std; void main() { int i, j; // Якщо цикли вкладені for (i = 0; i < 5; i++) // цикл по i { for (j = 0; j < 5; j++) // цикл по j { if (j == 0) break; // вихід з циклу по j cout << "j = " << j << endl; } // цей оператор виконується cout << "i = " << i << endl; } }
Результат виконання програми
i = 0 i = 1 i = 2 i = 3 i = 4
⇑
6. Чи можна використовувати оператори break та continue в операторі if?
Ні, не можна. Однак, оператор break може ще використовуватись як складова оператора switch.
Якщо спробувати використати оператор break в конструкції if, то компілятор згенерує помилку з наступним повідомленням
a break statement may only be used within a loop or switch
Якщо спробувати викликати оператор continue в конструкції if, то компілятор згенерує помилку з наступним повідомленням
a continue statement may only be used within a loop
⇑
Зв’язані теми
⇑