Шаг 33.
Оператор break

    Здесь мы опишем работу оператора, осуществляющего завершение работы цикла и переключателя.

    Оператор break служит для принудительного выхода из цикла или переключателя. Например, в случае цикла не проверяются и не учитываются условия дальнейшего продолжения итераций. Оператор break прекращает выполнение оператора цикла или переключателя и осуществляет передачу управления (переход) к следующему за циклом или переключателем оператору. При этом в отличие от перехода с помощью goto оператор, к которому выполняется передача управления, не должен быть помечен. Оператор break нельзя использовать нигде, кроме циклов и переключателей.

    Рассмотрим несколько примеров использования оператора break.


    Пример 1. Составить программу, печатающую название заданной восьмеричной цифры.
#include <iostream.h>
void main()
{
int ic;
cout << "\n Введите восьмеричную цифру:" ;
cin >> ic;
cout << "\n" << ic;
switch (ic)
  {
	case 0: cout << " - нуль"; break;
	case 1: cout << " - один"; break;
	case 2: cout << " - два"; break;
	case 3: cout << " - три"; break;
	case 4: cout << " - четыре"; break;
	case 5: cout << " - пять"; break;
	case 6: cout << " - шесть"; break;
	case 7: cout << " - семь "; break;
    default: cout << " - это не восьмеричная цифра!\n";
	 }
}
Текст этой программы можно взять здесь.

    Программа напечатает название только одной введенной цифры и прекратит работу. Если в ней удалить операторы break, то в переключателе будут последовательно выполнены все операторы, начиная с помеченного нужным (введенным) значением.

    Циклы и переключатели могут быть многократно вложенными. Оператор break позволяет выйти только из самого внутреннего цикла или переключателя. Проиллюстрируем это на конкретном примере.


    Пример 2. В символьном массиве подсчитать количество нулей (k0) и единиц (kl).
#include <iostream.h>
void main()
{
	char *c;
	int k0=0,k1=0;
	c = new char [80];
	cout << "\nЗадайте строку: ";
	cin >> c;
	cout << '\n';
	for (int i=0;c[i]!='\0';i++)
		 switch (c[i])
		{
		case '0' : k0++; break ;
 		case '1' : k1++; break;
		 }
	cout << "\nВ строке  "<< k0 << " нуля, "<< k1 << " единицы.\n";
	delete [] c;
}
Текст этой программы можно взять здесь.

    Оператор break в данном примере передает управление из переключателя, но не за пределы цикла. При многократном вложении циклов и переключателей оператор break не может вызвать передачу управления из самого внутреннего уровня непосредственно на самый внешний.

    Бывает, что оператор break используется для выхода из цикла в тех случаях, когда заданы два разных условия прекращения его работы.


    Пример 3.
#include <iostream.h>
main ()
{
  int x=1,y,z;
  cout << "Мы будем вычислять значение функции y=2*x+z\n";
  cout << "Введите значение z: ";
  cin >> z;
  while  (x<100)
      {
         y = 2*x + z; x++;
         if  (y==50)
         {
            cout << "y = 50\n"; break;
         }
      }
  if  (y==50)
         cout << "Цикл закончен!";
  else
         cout << "Цикл закончен! Но y<>50.";
}
Текст этой программы можно взять здесь.

    Если оператор break является частью оператора if, вложенного в цикл, то, как правило, можно по-другому выразить условие оператора цикла, чтобы необходимость его использования отпала.


    Пример 4. Видоизмененная программа из примера 3.
#include <iostream.h>
main()
{
   int x=1,y,z;
   cout << "Мы будем вычислять значение функции y=2*x+z\n";
   cout << "Введите значение z:"; 
   cin >> z;
   while ((x<100) && (y!=50))
      {
         y = 2*x + z; x++;
      }
   if  (y==50)
         cout << "Цикл закончен!!!";
   else
         cout << "Цикл закончен!!! Но y>50.";
}
Текст этой программы можно взять здесь.

    Наличие оператора break делает совсем не бессмысленным использование бесконечных циклов. Представьте себе, что в программе нужно записать цикл, который может завершиться по нескольким причинам, и условия завершения достаточно сложны. В таком случае весьма удобно записать заголовок цикла без всякого условия в виде:

   for (;;)
   {
      ...
   },
а выход из цикла оформить с помощью операторов break.

    На следующем шаге мы разберем использование оператора continue.


Предыдущий шаг Содержание Следующий шаг