Глава 10. Оператор break

В предыдущей главе учебника по программированию для начинающих мы с вами рассматривали такой важный момент, как циклы. Теперь мы уже знаем, что циклы применяются в программировании в том случае, когда нужно определенный участок кода программы выполнить некоторое заранее известное количество раз (цикл, управляемый счетчиком), либо выполнять до наступления определенного условия (цикл, управляемый меткой). Также мы уяснили для себя, что в языке программирования С++ циклы бывают двух типов - это while (c предусловием и постусловием) и for. Теперь пришло время разобраться с таким нужным и полезным оператором, как оператор break . Сразу скажу, что в основном он применяется в рассмотренных ранее нами циклических структурах: while и for. Теперь, дабы понять его назначение, давайте сразу попытаемся прочувствовать его работу на примере программы. Начнем с самого простого.

Оператор Break

Возьмем для примера самую первую программу из предыдущей главы, которая печатает наше имя ровно 20 раз (while-цикл, управляемы счетчиком, - т.к. счет итераций идет с помощью счетчика и мы заранее знаем сколько раз выполниться тело цикла). Немного изменим ее, добавив оператор break. Вот что у нас получится:

//Использование оператора break

#include <iostream>

using namespace std;

int main()
{
    int i;

    i = 1;
    while (i <= 20)
    {
        cout << "Your name" << endl;

            if (i == 10)
                break;

        i = i + 1;
    }

    return 0;
}

У нас добавился внутри цикла оператор выбора if, который при наступлении условия i = 10 вызывает оператор break. А теперь наберите эту программу в среде программирования, откомпилируйте, запустите и оцените разницу в результатах. Вот что произошло: мы видим, что имя уже печатается не 20 раз, как задано в условии цикла, а ровно 10. Почему? Потому что оператор break служит для досрочного выхода из цикла. Что делает данный оператор нам понятно, но пока что полезного применения мы не увидели, т.к. мы могли и в самом условии цикла задать количество раз, равное 10. Рассмотрим другой пример, который также будет построен на программе, рассматриваемой в предыдущей главе учебника, но для начала немножко отвлечемся и запомним еще один очень важный момент: смотрим ниже.

Важно! Запомнить:
Оператор "=" - это оператор присваивания в языке С++ и вы уже знаете для чего он служит и как работает (напомню еще раз: то, что находиться от него справа считается и сохраняется в переменную, расположенную слева от него). А вот это - "==" - это логическая операция сравнения на равенство!!! И ни в коем случае их нельзя путать, иначе вы нарветесь на логическую ошибку, которую не заметит компилятор (т.к. компилятор, как я писал ранее, видит только синтаксические ошибки), он посчитает, что вы хотите присвоить, а не сравнить значения переменных. Для задания условий выполнения циклов, либо задания условий выполнения операторов выбора (if) используются операторы сравнения. Вот основные из них:
== - равно;
<= - меньше, либо равно;
>= - больше, либо равно;
!= - не равно.
Пишутся без пробелов внутри (так = =, < =, > =, ! = будет неправильно!!!)

Запомнили, теперь продолжим дальше рассматривать оператор break. Рассмотрим применение оператора break в задаче, где мы запрашиваем у студентов их число баллов и находим средний показатель. Будем использовать вариант реализации этой программы на основе цикла while, управляемого меткой, т.к. здесь мы увидим наглядную пользу применения break.

//Проведен опрос класса из 10 студентов. Вам известны оценки по этому опросу
//(целые числа в диапазоне от 0до 100). Надо определить среднюю оценку класса

#include <iostream>

using namespace std;

int main()
{
    //объявляем необходимые переменные
    float average;
    int grade, counter, total;

    //задаем начальные значения
    total = 0, counter = 0;

    //запрашиваем у студента его оценку и запоминаем
    cout << "Vvedite ocenku, dlya vihoda vvedite -1\n";
    cin >> grade;

    //начинаем цикл, если не было введено -1
    while (grade != -1)
    {
        //накапливаем общее кол-во баллов
        //и засчитываем ввод
        total += grade;
        counter++;

            if (counter == 30)
                break;

        cout << "Vvedite ocenku, dlya vihoda vvedite -1\n";
        cin >> grade;
    }

    //проверка на ввод
    //если было введено хотя бы одно значение
    if (counter != 0)
    {
        //рассчитываем средний балл
        average = (float) total / counter;
        cout << "Srednee znacheniye: " << average << endl;
    }
    else
        //если не было введено ни одно значение
        cout << "Ocenki ne vvedeni\n";

    return 0;
}

Изначально в этой программе ввод студентами их баллов был неограничен и оканчивался при условии, что метка grade будет равна -1. Но мы добавили условие

if (grade == 30)
    break;

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

После того, как было запрошено у 30-и студентов их баллы, цикл прерывается и управление переходит к следующей после цикла строке кода: к проверке на ввод.