Основы программирования на С++ для начинающих

Операторы break и continue в C++

break и continue c++Оператор break в C++

С оператором break вы уже встречались, если читали наши статьи об операторе switch и о цикле for. И наверняка уже имеете представление о том, как он работает. Поговорим еще немного об этом операторе, возможно кому-то будет полезно.

Достаточно часто при использовании циклов и почти всегда при использовании оператора switch, программисту необходимо прервать выполнение тела цикла или тела switch соответственно. break, как раз используется в таких случаях.

Так же, с помощью этого оператора прерывается бесконечный цикл. Когда его нужно прервать, в тело цикла добавляется условие, при выполнении которого сработает оператор break, а цикл завершит работу. В следующем примере, реализована простая игра: один игрок загадывает число от 1 до 7, второй должен отгадать его.

Чтобы всё было честно и игрок, который загадывает, не мог ввести число из недопустимого диапазона, запускаем бесконечный цикл в котором и происходят ввод и проверка числа. Если число соответствует необходимому диапазону – цикл прерывается (строки 15 – 18), если же нет – на экране появляется предупреждение и предложение ввести число снова. Так будет происходить, пока введенное число не войдет в нужный диапазон.

После ввода корректного числа, в строке 25 вызываем специальную функцию system(“cls”); , которая очистит содержимое экрана, перед тем, как второй игрок приступит к отгадыванию числа (сработает только в windows).

Далее определяем второй бесконечный цикл (строки 29 – 47), но уже со счетчиком myTry. Он будет считать количество попыток игрока отгадать число. Игрок вводит число  и оно сразу проверяется на соответствие диапазону в строках 33 – 37.

Если не соответствует – предупреждаем и отнимаем единицу от счетчика попыток myTry. Иначе если число в нужный диапазон вошло, проверяем соответствует ли оно загаданному числу (строки 38 – 42): да – поздравляем и прерываем цикл, нет – переходим к выполнению строк 43 – 46 – говорим об ошибке и предлагаем ввести число снова.

Результат:

оператор break c++

оператор break c++

Оператор continue в C++

Этот оператор применяется тогда, когда необходимо прервать (пропустить) текущую итерацию цикла и приступить к следующей итерации. При его выполнении в цикле for происходит остановка текущей итерации, переход к изменению управляющей переменной, а затем проверка условия продолжения выполнения цикла.

Решим такую задачу: Необходимо вывести на экран те числа, которые делятся на 7 без остатка и находятся в диапазоне от 1 до 70 .

Если число i  не делится на 7 без остатка (остаток от деления не равен 0), сработает continue. То есть строка кода 12 уже не выполнится и мы не увидим число i на экране. В случае если остаток от деления i на 7 будет равен 0 (число делится на 7 нацело), тело if выполнено не будет  и число будет показано.

Результат:

оператор continue в C++

Если вам понравилась статья, лучшей благодарностью для меня будет, если вы поделитесь со своими друзьями ссылкой на неё. 

24 thoughts on “Операторы break и continue в C++

  1. Ну опять сплошные косяки.
    В switch я не могу использовать continue?
    Примеры не удачные.

    Чтобы system работало надо stdlib.h подключить.

    system(“cls”) сработает только в windows, ИМХО не стоит писать про это в обучающих статьях, вы не описываете что именно делает эта функция.

    >> myTry–; // уменьшаем счетчик попыток на единицу счетчик

    Счетчик, счетчик, счетчик, счетчик

    >> простая игра: Один игрок загадывает число

    Не уверен, но ИМХО двоеточие – это не точка, продолжаешь с маленькой буквы.

    >> Достаточно часто при использовании циклов и !!!ВСЕГДА!!! при использовании оператора switch, программисту необходимо прервать выполнение тела цикла или тела switch соответственно.

    switch (a) {
    case 1: ++b;
    case 2: ++b;
    default: ++c;
    }
    не работает?

    “Пишешь, публикуешь”, а надо “пишешь, читаешь, правишь, публикуешь”.

    1. зачем тебе в Свитче continue???
      “Чтобы system работало надо stdlib.h подключить” >> Нет. Тут у тебя частичная ошибка. stdlib.h и её аналог cstdlib нужны для работы с памятью, но в MVS среде можно не подключать эту библиотеку, так как она предкомпилирована уже во все проекты по умолчанию. Этот пример можно наглядно посмотреть с setlocale(), вроде бы надо подключать библиотеку locale.h, но и без неё всё работает хорошо. Так что ты частично не прав. Но правда под винду!

    2. >> простая игра: Один игрок загадывает число

      Не уверен, но ИМХО двоеточие – это не точка, продолжаешь с маленькой буквы.

      Гыг)) и снова ты придираешься… ты явно озабоченный на вопросах пунктуации)) А Орфус зачем по-твоему был придуман??

    3. Это здорово,когда хочется что-то исправить и правильно,но нужно быть признательным автору сайта,за понятное изложение материала.Мне как новичку:легко обучатся в этом сайте,в сравнении с другими сайтами.

  2. даже не так:

    пишешь();
    for (;;) {
    ошибки = читаешь();
    если (ошибки)
    правишь(ошибки);
    иначе
    break;
    }
    публикуешь();

      1. да? ну тогда глянь на задачу с игрой, вторая картинка! кажется что тут логическая ошибка, или я ошибаюсь? Загадали число 7, а отгадали 3)

      2. а не-не, это я провтыкал, там просто разделено на 2-х игроков.

  3. Интересно, если так разобраться, то и break и continue являются прерываниями, но только работают по-разному. break прерывает весь цикл и выходит из него, а continue просто пропускает один ход цикла и не прерывает его.

  4. и хоть Вова снова много раз кричал про ошибки, но всё же статья ценная ;)

  5. что мать вашу значит ИМХО !?!??!?! я ватафакнулся уже угадывать! умники яйцами мерятся в коментах, а я только начал изучать и эти уроки помогают! я делаю ошибку из за ошибок в статье и сам её исправляю! я сам понимаете? учусь на ошибках!

    1. В оригинале IMHO : In My Horrible Opinion – по моему скромному мнению.
      Позже аббревиатуре IMHO/ИМХО приписали много других расшифровок … например: Имею Мнение – Хер Оспориш и т.д.

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

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