Здесь мы опишем работу оператора, осуществляющего завершение работы
цикла и переключателя.
Оператор break служит для принудительного выхода из цикла или переключателя. Например, в случае цикла не проверяются и не учитываются условия дальнейшего продолжения итераций. Оператор break прекращает выполнение оператора цикла или переключателя и осуществляет передачу управления (переход) к следующему за циклом или переключателем оператору. При этом в отличие от перехода с помощью goto оператор, к которому выполняется передача управления, не должен быть помечен. Оператор break нельзя использовать нигде, кроме циклов и переключателей.
Рассмотрим несколько примеров использования оператора break.
#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 позволяет выйти только из самого внутреннего цикла или переключателя. Проиллюстрируем это на конкретном примере.
#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 используется для выхода из цикла в тех случаях, когда заданы два разных условия прекращения его работы.
#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, вложенного в цикл, то, как правило, можно по-другому выразить условие оператора цикла, чтобы необходимость его использования отпала.
#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 (;;)
{
...
},
На следующем шаге мы разберем использование оператора continue.