Специальные операторы управления циклом...73

В С++ определены две специальные управляющие программой команды — break и continue. Может случиться, что условие работы цикла нарушится не в начале или в конце, а где-то посередине цикла. Рассмотрим программу, которая суммирует введённые пользователем значения. Цикл прерывается, когда пользователь вводит отрицательное число.

Проблема в том, что программа не сможет выйти из цикла, пока пользователь не введёт число, но должна сделать это перед тем, как значение будет добавлено к сумме.

_________________

73 стр. Глава 5. Операторы управления программой

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

        while ( условие )

       {

            if ( какое-то другое условие )

            {

                 break ; /* выход из цикла */

            }

       }          /* когда программа встретит break, управление будет передано этой строке */

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

         /* BreakDemo — вводим множество чисел. */

         /*             Суммируем эти числа, пока пользователь не введёт отрицательное число */

         #include <cstdio>

         #include <cstdlib>

         #include <iostream>

         using namespace std ;

         int main( int argc , char* pszArgs[ ] )

         {

            setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */

            /* Введите счётчик цикла */

            int accumulator = 0 ;

            cout << "Эта программа суммирует числа, "

                 << "введённые пользователем " ;

            cout << "Выполнение цикла "

                 << "заканчивается после "

                 << "ввода отрицательного числа " ;

            /* Бесконечный цикл */

            for ( ; ; )

            {

                 /* Ввод следующего числа */

                 int value = 0 ;

                 cout << "Введите следующее число: " ;

                 cin >> value ;

                 /* если оно отрицательно... */

                 if ( value < 0 )

                 {

                      /* ...тогда выходим из цикла */

                      break ;

                  }

                 /* ...иначе добавляем число к общей сумме */

                 accumulator = accumulator + value ;

            }

            /* После выхода из цикла выводим результат суммирования */

            cout << " Общая сумма равна"

                 << accumulator

                 << " " ;

            /* Пауза для того, чтобы посмотреть на результат работы программы */

            system( "PAUSE" ) ;

            return 0 ;

         }

_________________

74 стр. Часть 1. Первое знакомство с С++

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

 «При повторяющемся выполнении операций над переменной в цикле проследите, чтобы инициализация переменной осуществлялась ещё до входа в цикл. В нашем случае программа обнулила переменную accumulator перед входом в цикл, в котором к ней добавляются новые числа. Вот пример результата работы программы:»  

[Советы]

      Эта программа суммирует числа, введённые пользователем

      Выполнение цикла заканчивается после ввода отрицательного числа

      Введите следующее число: 1

      Введите следующее число: 2

      Введите следующее число: 3

      Введите следующее число: -1

      Общая сумма равна 6

      Press any key to continue...

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

«В следующем фрагменте программы отрицательные числа, которые может ввести пользователь, игнорируются. Завершает цикл ввод нулевого значения. Полностью данную программу под именем ContinueDemo вы найдёте на прилагаемом компакт-диске.»

[Диск]

        while ( 1 )

        {

            /* Ввод значения */

            cout << "Введите значение" ;

            cin >> inputVal ;

            /* Если число отрицательное */

            if ( inputVal < 0 )

            {

                /* Выводим сообщение об ошибке */

                cout << "Не допускается ввод "

                     << "отрицательных чисел " ;

                /* Возвращаемся к началу цикла */

                continue ;

            }

            /* Введено приемлемое значение */

        } 

_________________

75 стр. Глава 5. Операторы управления программой