C++. Оператори break, continue. Особливості застосування. Приклади використання

Оператори break, continue. Особливості застосування. Приклади використання


Зміст


Пошук на інших ресурсах:




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

 


Зв’язані теми