Операторы 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
⇑
Связанные темы
⇑