Оператор continue

Оператор continue используется только в циклах. В операторах forwhiledo 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. 

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 <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 всегда можно заменить структурированными операторами, мы это доказали, показав эквивалентные программы.

Практика

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

Автор: Marienko L.
Дата: 18.10.2012
Поделиться:

Комментарии

  1. Kirov Reporting

    операторы break и continue всегда можно заменить структурированными операторами, мы это доказали, показав эквивалентные программы

    И где они эквивалентные? Вы просто убрали continue, результат работы программы будет совсем другим, программы не эквивалентны.

    ff

  2. Дмитрий Петров

    if ( in_number >= 10 && in_number >= 0 ) // если введённое число не входит в заданный интервал

    тут ошибка. Получается что in_number должен быть от 10 и больше, чтобы высчитывался квадрат.

    Еще мне не свосем ясно, зачем в первом примере в ифе писать: || in_number < 0 ), с учётом того, что у нас условие работы цикла:  while ( in_number >= 0 );

    • admin

      admin

      Еще мне не совсем ясно, зачем в первом примере в ифе писать: || in_number < 0 ), с учётом того, что у нас условие работы цикла:  while ( in_number >= 0 );

      Всё дело в том, что в программе используется цикл do while, а этот цикл, как известно, сначала выполнят операторы в теле цикла а потом проверяет своё условие.

  3. u4enig

    if ( in_number <= 10 && in_number >= 0 ) // если введённое число не входит в заданный интервал

    наверное все-таки в комменте должно быть написано утвердительное предложение, т.е.  в условии if указывается, что если число как раз входит в интервал, то находим квадрат и выводим на экран

     

     

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.