В теле оператора множественного выбора switch оператор break прерывал исполнение оператора switch. Когда оператор break выполняется в цикле, то досрочно прерывается исполнение оператора цикла, и управление передаётся следующему оператору после цикла. Разработаем программу с использованием оператора break. Программа печатает таблицу степеней двойки.
Код
// break.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
// заголовочный файл <cmath> содержит прототип функции pow()
#include <cmath>
using namespace std;
int main(int argc, char* argv[])
{
for (int count = 0; count <= 10; count++) // начало цикла for
{
if ( count == 6)
break; // выход из цикла for
cout << "2^" << count << " = " << pow(2.0,count) << endl; // печать степени двойки
}
system("pause");
return 0;
}
В строке 6 подключён заголовочный файл содержащий прототипы основных математических функций. Сейчас нужно запомнить то, чтобы использовать функцию pow() необходимо подключить заголовочный файл <cmath>. Функция pow(a,b) возводит число а в степень b. В строке 11 записан заголовок цикла for. В цикле for объявлена переменная-счётчик count, значение которой меняется от 0 до 10 включительно. В строке 13 записан оператор условного выбора if, истинность условия которого запускает оператор break, который, в свою очередь, приводит к выходу из цикла for. В строке 15 запускается функция pow(). Условие продолжения цикла for будет истинно до тех пор, пока значение в переменной count <= 10. Тогда как, выход из цикла for произойдёт раньше, чем условие продолжения цикла станет ложным. Выход из цикла for выполнится, когда значение в переменной count станет равным шести.
Переделаем эту программу так, чтобы можно было обойтись без оператора break, то есть напишем эквивалент оператору break.
Код
// break.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <cmath> // заголовочный файл содержит прототип функции pow()
using namespace std;
int main(int argc, char* argv[])
{
for (int count = 0; count <= 10; count++) // начало цикла for
{
cout << "2^" << count << " = " << pow(2.0,count) << endl; // печать степени двойки
// эквивалент оператору break
if ( count == 5)
count = 11;
}
system("pause");
return 0;
}
Оператор условного выбора if теперь записан после строки 12, по этому изменилось условие в операторе if. Как только условие в операторе if станет истинным программа передаст управление строке 15. Тогда переменной count присвоится значение 11, и условие продолжения цикла for станет ложным.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Оператор continue используется только в циклах. В операторах for, while, do while, оператор continue выполняет пропуск оставшейся части кода тела цикла и переходит к следующей итерации цикла. Рассмотрим фрагмент кода с оператором continue.
Код
// пример использования оператора continue:
int count = 0;
do // начало цикла do while
{
continue;
count++;
}
while ( count < 10 )
Посмотрите внимательно на выше приведенный пример, и Вы увидите, что do while бесконечный, так как каждая итерация цикла приводит к выполнению оператора continue, который пропускает операцию инкремента переменной-счётчика count и переходит на следующую итерацию цикла. Таким образом значение в переменной count не меняется, а значит и условие всегда будет истинным. Разработаем программу с оператором continue. Программа должна работать циклически. Внутри цикла необходимо организовать ввод чисел.Если введено число от 0 до 10 включительно, то необходимо напечатать квадрат этого числа, иначе используя оператор continue пропустить оператор возведения в квадрат введенного числа. При введении отрицательного числа осуществить выход из цикла.
Код
// continue.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int in_number; // переменная для хранения введённого числа
do
{
cout << "Enter number: ";
cin >> in_number; // считываем введённое число в переменную in_number
if ( in_number > 10 || in_number < 0 ) // если введённое число не входит в заданный интервал
continue; // переход на следующую итерацию цикла do while
cout << "square = " << in_number * in_number << endl; // возводим в квадрат введённое число
} while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать
system("pause");
return 0;
}
Цикличность в программе организуем циклом с постусловием — do while. В цикле сначала считываем введённое число в переменную in_number, после чего, выполняется проверка условия в операторе if. Условие оператора условного выбора if будет истинным в том случае, если введённое число будет строго меньше нуля или строго больше 10. Заданный интервал — [0;10], число взятое из этого интервала возводится в квадрат. Истинность условия оператора if приводит к выполнению оператора continue в строке 15. А оператор continue пропускает операторы в строке 16 и переходит к проверке условия продолжения цикла do while. Условие в цикле будет истинно, пока вводимые числа будут строго больше 0.
Теперь переделаем эту программу так, чтобы можно было обойтись без оператора continue, то есть напишем эквивалент оператору continue.
Код
// continue.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int in_number; // переменная для хранения введённого числа
do
{
cout << "Enter number: ";
cin >> in_number; // считываем введённое число в переменную in_number
if ( in_number <= 10 && in_number >= 0 ) // если введённое число входит в заданный интервал
//continue; // переход на следующую итерацию цикла do while
cout << "square = " << in_number * in_number << endl; // возводим в квадрат введённое число
} while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать
system("pause");
return 0;
}
В эквивалентной программе без оператора continue код уменьшился на одну строку — закомментированная строка 15. Изменилось условие оператора условного выбора if. Строка 16 — это тело оператора if, а значит, если условие в if истинно будет выполнятся оператор в строке 16.