Как выйти из while c
Перейти к содержимому

Как выйти из while c

Циклы и ветвления в языке C++

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

Цикл с предусловием while

Условие проверяется перед выполнением тела цикла. Если условие ложно, то цикл не выполнится.

Цикл с постусловием do-while

Условие проверяется после выполнения тела цикла. Цикл выполнится как минимум один раз.

Цикл for

Цикл с заранее заданными условиями и количеством итераций.

В цикле for задаются три блока параметров, разделенных точкой с запятой:

  • первый блок — это инициализация счетчиков цикла, выполняется только один раз
  • второй блок — это проверка условий цикла, выполняется каждую итерацию; тело цикла выполняется, если условия — истинны
  • третий блок — изменение счетчиков, также выполняется каждую итерацию цикла.

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

Любой блок оператора for может отсутствовать.

Переменные, объявленные в цикле, существуют только внутри цикла. В старых версиях языка C++ переменные сохранялись после выхода из цикла.

Цикл по диапазону

В стандарте C++11 появились новые виды циклов — range-based циклы, в которых переменная пробегает по всем значением контейнера. Контейнер должен поддерживать методы begin() и end() — это может быть vector, list, set, map и массив. Цикл по диапазону не дает возможности узнать индекс текущего элемента, так как в большинстве контейнеров не существует индекса, как такового.

Если требуется модифицировать элементы контейнера, то в цикле следует использовать ссылки.

Управление выполнением циклов

Прервать выполнение цикла можно с помощью команды break

С помощью команды continue можно сразу перейти к следующей итерации цикла

Ветвления

Ветвления позволяют выполнять различные участки кода в зависимости от заданных условий.

Конструкция ifelse

Оператор if позволяет выполнить блок кода, если условие истинно.

Оператор if-else позволяет выполнить первый блок кода, если условие истинно, и второй блок, если условие ложно.

Однострочные блоки можно указывать без фигурных скобок

Последовательное указание условий можно сделать через конструкцию else if.

Конструкция switch. case

Блоки кода выполняются в зависимости от указанных значений

Если в блоке не указан break, то будет выполнен следующий блок

Может быть указан блок defaul, выполняющийся если ни одно из значений не подошло

В блоке case может объявляться переменная без инициализации

Если требуется объявить и инициализировать переменные внутри блока case, то можно использовать вложенный блок кода

Программируем просто

Циклы for обычно используются когда есть конкрентое понятие — счетчик итераций, и мы знаем сколько раз должно выполниться тело цикла. Как раз дя этого и есть 3 секции. В других случаях используются оставшиеся циклы. К примеру бесконечный цикл в языке Си выглядит так:

Также существуют операторы перехода — break, continue, return, goto

break — завершает выполнение цикла.

continue — выполняет переход в конец тела цикла(то есть после выполнения этого оператора, все что после него игнорируется, происходит переход в конец цикла, и далее начинается новая итерация). В примере ниже, цикл бесконечный, так как при выполнении условия i>2 происходит переход в конец тела цикла, то есть игнорируется увеличение счетчика, а условием выхода из цикла является i==11.

return — завершает выпонение не то что цикла, а целой функции. Если функция типа void то нужно вызвать просто return; иначе вернуть выражение того типа каким является тип функции.
goto — оператор перехода, использование которого я крайне не рекомендую, если на это нет серьезных причин. Причина в том, что использование этого оператора, без веских на то оснований, может затруднять чтение исходного кода программы, затрудняет его понимание, и т.д. что приводит к ошибкам.
Переход осуществляется в рамках одной функции, из одной функции перейти в другую с помощью goto нельзя. Ниже можете ознакомится с циклом for и его аналогом с помощью оператора goto:

C++ — Урок 004. Условия и циклы

C++ предоставляет стандартный набор операторов для условий выбора и циклов.

Ключевыми словами, относящимися к конструкциями условий ветвления кода, являются:

  • if
  • else
  • switch
  • case
  • break
  • default

Ключевыми словами, относящимися к конструкциям циклов, являются:

  • do
  • while
  • break
  • continue
  • for
  1. 1. Операторы условий
    1. 1. Оператор if
    2. 2. Оператор else
    3. 3. Операторы switch, case, break, default
    1. 1. Оператор while
    2. 2. Оператор do
    3. 3. Оператор break
    4. 4. Оператор continue
    5. 5. Оператор for

    Операторы условий

    Оператор if

    Конструкция условия с использованием оператора if формируется следующим образом:

    В данном случае условие помещено в скобках после оператора if. В данной конструкции код return true; будет выполняться в том случае, если x будет больше 0. следующая строка return false; уже не относится к коду который будет выполняться при выполнении условия. В конструкциях условия при выполнении данного условия будет выполняться только одна строка кода, если код не обрамлён в фигурные скобки, то есть если не сформировано тело кода выполняемого при условии. Рассмотрим два варианта кода:

    Первый вариант:

    В данном коде return true; будет выполняться всегда, поскольку к коду выполняемому при условии относится только строка x = 0;

    Второй вариант:

    В данном коде return true; будет выполняться только при выполнении условия x > 0 .

    Оператор else

    Оператор else используется совместно с оператором if для формирования последовательности условий.

    Оператор else может использоваться как для добавления нового условия, если не выполнилось предыдущее условие — конструкция else if. Так и в качестве завершающего кода в последовательности условий, если предыдущие условия не выполнились. Также возможен вариант без применения фигурных скобок для тела кода в том случае, если код умещается в одну строку.

    Операторы switch, case, break, default

    Конструкция switch case используется для выбора ветвления кода, в условии которого применяется выбор по целочисленным значениям. Это означает, что switch case может применяться для просто целочисленных значений, перечислений и выбора по коду символа.

    В выше представленном коде переменная x проверяется на равенство числам 0, 50, 100. Оператор default выполняет выбор кода, который выполняется в том случае, если ни одно из условий не подошло. Заметьте также, что в блоке кода с case 50: добавлен оператор break , этот оператор выполняет выход из условия, тогда как оператор return выполняет выход из функции. Если не добавлять оператор break, то выполнение кода продолжится и в блоке case 100: . Благодаря этой особенности конструкции switch case имеется возможность объединения условий, для которых необходимо выполнить один и тот же код. Например:

    Таким образом для x равного 0, 50, 100 функция вернёт true, тогда как для всех остальных значений функция будет возвращать false.

    Также код для выбора case в этой конструкции можно оборачивать в блоки кода, что позволит ограничить область видимости и использовать объявление переменных с одинаковыми именами.

    Таким образом, ограничив область видимости, мы получаем возможность использовать переменные с одинаковыми именами в условиях case. Но не забывайте, что за пределами области видимости, ограниченной фигурными скобками переменная y в данном случае существовать не будет.

    Операторы циклов

    Оператор while

    Оператор while повторяет код в своём теле до тех пор, пока выполняет условие. Например:

    В данном коде i будет равно 10 после выполнения цикла.

    Оператор do

    Оператор do используется совместно с оператором while и позволяет выполнить тело цикла хотя бы один раз, до того, как будет выполнена проверка условия цикла. Например:

    В данном коде переменная I изначально не соответствует условию и в обычном цикле while код тела цикла не выполнился, но поскольку здесь используется do-while цикла, то проверка будет произведена после выполнения тела цикла. В результате вывод std::cout будет следующим:

    Вы можете спросить, почему в выводе присутствует 0? Ведь это не подходит по условию. Опять же из-за того, что проверка выполняется после выполнения кода в теле цикла. То есть выполнилось тело цикла, а потом уже выполнилась проверка, по результату которой цикла завершает свою работу.

    Оператор break

    Как и в конструкции switch case, в циклах может использоваться этот оператор. Это необходимо для того, чтобы выйти из цикла, раньше, чем выполнится условие цикла. Например:

    В данном искусственном примере получился бы вечный цикл из-за того, что переменная i уменьшается вместо увеличения, а по условию цикла выход будет произведён только в том случае, если i будет больше 50. Но благодаря оператору break и условию проверки на отрицательное значение переменной i выполнение программы выйдет из этого цикла, как только i станет меньше 0.

    Оператор continue

    Данный оператор позволяет прервать итерацию цикла и начать новую итерацию цикла до выполнения всего кода в теле цикла. Например:

    При выполнении данного кода мы получим следующий вывод:

    То есть вывод числа 3 будет пропущен.

    Оператор for

    Циклы с оператором for позволяют объединить инициализацию переменных, условие и изменение этих переменных.

    То есть следующий цикл while

    Будет эквивалентен следующему циклу for:

    Плюсом данного цикла for будет в том, что переменная I будет в локальной области видимости цикла for.

    Циклы for могут инициализироваться несколькими переменными одного типа. Например:

    Также условие может быть объявлением, инициализацией переменной. Например:

    Учитывая стандарт C++11, в качестве типа переменной может использоваться оператор auto , который позволяет выводить тип переменной из инициализатора:

    Также интересным моментом является то, что инициализатором, условием и блоком изменения может быть выражение:

    Начиная со стандарта C++11, для циклов for добавлена возможность итераций по контейнерам, поддерживающим итерацию. Например, контейнер vector из стандартной библиотеки:

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

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