Оператор 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. Результат работы программы показан на рисунке 3.
Enter number: 15 Enter number: 11 Enter number: 5 square = 25 Enter number: 9 square = 81 Enter number: -23 Для продолжения нажмите любую клавишу . . .
Рисунок 3 — Оператор continue в С++
Сначала вводились числа 15 и 11, эти числа не входят в заданный интервал и поэтому квадрат этих чисел не вычислялся. Числа 5 и 9 принадлежат заданному интервалу, а значит программа должна вычислить их квадраты. Когда ввели отрицательное число do while
завершил свою работу. Теперь переделаем эту программу так, чтобы можно было обойтись без оператора 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.
Многие программисты считают, что операторы break
и continue
нарушают структурность программного кода и предпочитают обходится без них. Так, что если есть возможность обойтись без операторов break
и continue
, лучше так и сделать. Тем более, что операторы break
и continue
всегда можно заменить структурированными операторами, мы это доказали, показав эквивалентные программы.
Комментарии
Kirov Reporting
И где они эквивалентные? Вы просто убрали continue, результат работы программы будет совсем другим, программы не эквивалентны.
ff
Дмитрий Петров
if
( in_number >= 10 && in_number >= 0 )
// если введённое число не входит в заданный интервал
тут ошибка. Получается что in_number должен быть от 10 и больше, чтобы высчитывался квадрат.
Еще мне не свосем ясно, зачем в первом примере в ифе писать: || in_number < 0 ), с учётом того, что у нас условие работы цикла:
while
( in_number >= 0 );
admin
Всё дело в том, что в программе используется цикл do while, а этот цикл, как известно, сначала выполнят операторы в теле цикла а потом проверяет своё условие.
u4enig
if ( in_number <= 10 && in_number >= 0 ) // если введённое число не входит в заданный интервал
наверное все-таки в комменте должно быть написано утвердительное предложение, т.е. в условии if указывается, что если число как раз входит в интервал, то находим квадрат и выводим на экран