Перейти к содержимому

Continue c как работает

  • автор:

Оператор continue (C++)

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

Синтаксис

continue; 

Замечания

Все остальные операторы текущей итерации не выполняются. Следующая итерация цикла определяется следующим образом.

  • В цикле while следующая do итерация начинается с повторного вычисления управляемого do выражения или while оператора.
  • В цикле for (с использованием синтаксиса for( ; ; ) ) предложение выполняется. Затем повторно выполняется предложение и, в зависимости от результата, цикл завершается или начинается другая итерация.

В следующем примере показано, как continue можно использовать инструкцию для обхода разделов кода и начала следующей итерации цикла.

Пример

// continue_statement.cpp #include int main() < int i = 0; do < i++; printf_s("before the continue\n"); continue; printf("after the continue, should never print\n"); >while (i
before the continue before the continue before the continue after the do loop 

Что такое continue в C++?

Оператор continue используется в циклах для пропуска итерации в цикле.

Пример:

int some = 0; // Изначально ноль while(some < 10) < // Работает пока меньше 10 some++; // В каждой итерации увеличиваем на 1 if(some % 2 == 0) // Если четное, то пропускаем число continue; // Пропуск итерации cout 

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

В отличии от break, который полностью выходит из цикла, оператор continue лишь пропускает одну итерацию в цикле.

Оператор continue (C)

Оператор continue передает элемент управления в следующую итерацию ближайшего внешнего оператора do , for или while , в которой она отображается, минуя все оставшиеся операторы в теле оператора do , for или while .

Синтаксис

jump-statement :
continue ;

Следующая итерация оператора do , for или while определяется следующим образом.

  • В операторе do или while следующая итерация начинается с повторного вычисления выражения оператора do или while .
  • Оператор continue в операторе for приводит к вычислению выражения цикла оператора for . Затем код повторно вычисляет условное выражение. В зависимости от результата он либо завершает, либо выполняет итерацию тела оператора. Дополнительные сведения об операторе for и его нетерминальных выражениях см. в статье Оператор for .

Вот пример оператора continue :

while ( i-- > 0 )

В этом примере тело оператора выполняется при i больше 0. Для первой переменной f(i) присваивается значение x ; затем, если x равно 1, выполняется оператор continue . Остальные операторы в теле игнорируются. Выполнение возобновляется в начале цикла с вычисления теста цикла.

Оператор continue

Оператор 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 using namespace std; int main(int argc, char* argv[]) < int in_number; // переменная для хранения введённого числа do < cout > in_number; // считываем введённое число в переменную in_number if ( in_number > 10 || in_number < 0 ) // если введённое число не входит в заданный интервал continue; // переход на следующую итерацию цикла do while cout 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.

CppStudio.com

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 using namespace std; int main(int argc, char* argv[]) < int in_number; // переменная для хранения введённого числа do < cout > in_number; // считываем введённое число в переменную in_number if ( in_number = 0 ) // если введённое число входит в заданный интервал //continue; // переход на следующую итерацию цикла do while cout while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать system("pause"); return 0; >

В эквивалентной программе без оператора continue код уменьшился на одну строку — закомментированная строка 15. Изменилось условие оператора условного выбора if . Строка 16 — это тело оператора if , а значит, если условие в if истинно будет выполнятся оператор в строке 16.

Многие программисты считают, что операторы break и continue нарушают структурность программного кода и предпочитают обходится без них. Так, что если есть возможность обойтись без операторов break и continue , лучше так и сделать. Тем более, что операторы break и continue всегда можно заменить структурированными операторами, мы это доказали, показав эквивалентные программы.

К сожалению, для данной темы пока нет подходящих задач. Если у вас есть таковые на примете, отправте их по адресу: admin@cppstudio.com. Мы их опубликуем!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *