[ Технические подробности ]
Специальные операторы управления циклом...73
В С++ определены две специальные управляющие программой команды — break и continue . Может случиться, что условие работы цикла нарушится не в начале или в конце, а где-то посередине цикла. Рассмотрим программу, которая суммирует введённые пользователем значения. Цикл прерывается, когда пользователь вводит отрицательное число.
Проблема в том, что программа не сможет выйти из цикла, пока пользователь не введёт число, но должна сделать это перед тем, как значение будет добавлено к сумме.
_________________
73 стр. Глава 5. Операторы управления программой
В таких случаях используют определёную в С++ команду break . Она немедленно передаёт управление в конец текущего цикла. После инструкции break программа будет выполнять инструкцию, следующую сразу же после закрывающей скобки цикла. Схематически работу команды break можно проиллюстрировать так:
while ( условие )
{
if ( какое-то другое условие )
{
break ; /* выход из цикла */
}
} /* когда программа встретит break, управление будет передано этой строке */
Вооружась новой командой break , я решил в программе BreakDemo проблему последовательного накопления суммы чисел.
/* BreakDemo — вводим множество чисел. */
/* Суммируем эти числа, пока пользователь не введёт отрицательное число */
#include
#include
#include
using namespace std ;
int main( int argc , char* pszArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */
/* Введите счётчик цикла */
int accumulator = 0 ;
cout << "Эта программа суммирует числа, "
<< "введённые пользователем\n" ;
cout << "Выполнение цикла "
<< "заканчивается после "
<< "ввода отрицательного числа\n" ;
/* Бесконечный цикл */
for ( ; ; )
{
/* Ввод следующего числа */
int value = 0 ;
cout << "Введите следующее число: " ;
cin >> value ;
/* если оно отрицательно... */
if ( value < 0 )
{
/* ...тогда выходим из цикла */
break ;
}
/* ...иначе добавляем число к общей сумме */
accumulator = accumulator + value ;
}
/* После выхода из цикла выводим результат суммирования */
cout << "\nОбщая сумма равна"
<< accumulator
<< "\n" ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ;
return 0 ;
}
_________________
74 стр. Часть 1. Первое знакомство с С++
После объяснения правил пользователю ( какие данные нужно ввести, чтобы выйти из цикла, и что делает эта программа ) управление получает нечто подобное бесконечному циклу for . Сначала на экран выводится запрос на введение числа с клавиатуры. Проверить его на соответствие критерию выхода из цикла можно только после того, как оно считано программой. Если введёное число отрицательно, управление переходит к оператору break и программа выходит из цикла. Если же число оказывается положительным, программа пропускает команду break и к накопленной сумме добавляет новое значение. После выхода из цикла программа выводит значение общей суммы всех введённых чисел и завершает работу.

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

Эта программа суммирует числа, введённые пользователем
Выполнение цикла заканчивается после ввода отрицательного числа
Введите следующее число: 1
Введите следующее число: 2
Введите следующее число: 3
Введите следующее число: -1
Общая сумма равна 6
Читать дальше