Иногда возникает необходимость выйти из цикла до его завершения. В этом случае можно воспользоваться оператором break. Например:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include
int main()
{
int i = 1;
for ( ; ; )
{
std::cout << i << " * " << i << " = " << i * i << std::endl;
i++;
if (i > 9) break;
}
return 0;
}
|
Здесь когда значение переменной i достигнет 10, осуществляется выход из цикла с помощью оператора break.
В отличие от оператора break, оператор continue производит переход к следующей итерации. Например, нам надо посчитать сумму только нечетных чисел из некоторого диапазона:
1
2
3
4
5
6
7
8
9
10
11
12
|
#include
int main()
{
int result = 0;
for (int i=0; i<10; i++)
{
if (i % 2 == 0) continue;
result +=i;
}
std::cout << "result = " << result << std::endl; // 25
return 0;
}
|
Чтобы узнать, четное ли число, мы получаем остаток от целочисленного деления на 2, и если он равен 0, то с помощью оператора continue переходим к следующей итерации цикла. А если число нечетное, то складываем его с остальными нечетными числами.
1. Операторы языка C++
В данном разделе рассказывается о различных операторах управления программой. Это механизмы, с помощью которых можно изменять порядок выполнения программы. С предоставляет три категории операторов управления программой: итерационные операторы, операторы выбора и операторы переходов. Итерационные операторы - это while, for и do/while. Они чаще всего называются циклами. Операторы выбора или условные операторы - это if и switch. Операторы перехода - это break, continue и goto. (Оператор return, в принципе, также является оператором перехода, поскольку он воздействует на программу.) Функция exit() она также влияет на выполнение программы.
Операторы управляют процессом выполнения программы. Набор операторов языка С++ содержит все управляющие конструкции структурного программирования.
Составной оператор ограничивается фигурными скобками. Все другие операторы заканчиваются точкой с запятой.
Пустой оператор – это оператор, состоящий только из точки с запятой. Он может появиться в любом месте программы, где по синтаксису требуется оператор. Выполнение пустого оператора не меняет состояния программы.
Составной оператор – {...}
Действие составного оператора состоит в последовательном выполнении содержащихся в нем операторов, за исключением тех случаев, когда какой-либо оператор явно передает управление в другое место программы.
Оператор обработки исключений
try { <операторы> } catch (<объявление исключения>) { <операторы> } catch (<объявление исключения>) { <операторы> } ... catch (<объявление исключения>) { <операторы> }
Условный оператор
if (<выражение>) <оператор 1> [else <оператор 2>]
Оператор-переключатель
switch (<выражение>) { case <константное выражение 1>: <операторы 1> case <константное выражение 2>: <операторы 2> ... case <константное выражение N>: <операторы N> [default: <операторы>] }
Оператор-переключатель предназначен для выбора одного из нескольких альтернативных путей выполнения программы. Вычисление оператора-переключателя начинается с вычисления выражения, после чего управление передается оператору, помеченному константным выражением, равным вычисленному значению выражения. Выход из оператора-переключателя осуществляется оператором break. Если значение выражения не равно ни одному константному выражению, то управление передается оператору, помеченному ключевым словом default, если он есть.
Оператор цикла с предусловием
while (<выражение>) <оператор>
Оператор цикла с постусловием
do <оператор> while <выражение>;
В языке C++ этот оператор отличается от классической реализации цикла с постусловием тем, что при истинности выражения происходит продолжение работы цикла, а не выход из цикла.
Оператор пошагового цикла
for ([<начальное выражение>]; [<условное выражение>]; [<выражение приращения>]) <оператор>
Тело оператора for выполняется до тех пор, пока условное выражение не станет ложным (равным 0). Начальное выражение и выражение приращения обычно используются для инициализации и модификации параметров цикла и других значений. Начальное выражение вычисляется один раз до первой проверки условного выражения, а выражение приращения вычисляется после каждого выполнения оператора. Любое из трех выражений заголовка цикла, и даже все три могут быть опущены (не забывайте только оставлять точки с запятой). Если опущено условное выражение, то оно считается истинным, и цикл становится бесконечным.
Оператор пошагового цикла в языке С++ является гибкой и удобной конструкцией, поэтому оператор цикла с предусловием while используется в языке С++ крайне редко, т.к. в большинстве случаев удобнее пользоваться оператором for.
Оператор разрыва прерывает выполнение операторов while, do, for и switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным. Если оператор разрыва записан внутри вложенных операторов while, do, for, switch, то он завершает только непосредственно охватывающий его оператор.
Оператор продолжения
continue;
Оператор продолжения передает управление на следующую итерацию в операторах цикла while, do, for. Он может содержаться только в теле этих операторов. В операторах do и while следующая итерация начинается с вычисления условного выражения. В операторе for следующая итерация начинается с вычисления выражения приращения, а затем происходит вычисление условного выражения.
Оператор возврата
return [<выражение>];
Оператора возврата заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова. Значение выражения, если она задано, вычисляется, приводится к типу, объявленному для функции, содержащей оператор возврата, и возвращается в вызывающую функцию. Если выражение опущено, то возвращаемое функцией значение не определено.
С формальной точки зрения операторы break, continue и return не являются операторами структурного программирования. Однако их использование в ограниченных количествах оправдано, когда они упрощают понимание программы и позволяют избегать больших вложенных структур. Например, мы проверяем входные данные на аномалии. Если не использовать эти операторы, то всю обработку придется вложить в условный блок, что ухудшает читабельность программы. Вместо этого можно написать небольшой условный блок, который организует выход из функции при неверных исходных данных.
Ввод/вывод не является частью языка С++, а осуществляется функциями, входящими в состав стандартной библиотеки. Для подробной информации см. лекцию 4.
Достарыңызбен бөлісу: |