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

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

  • автор:

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

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

while (условие)
<
тело цикла
>

условие – логическое выражение;

тело цикла – операторы которые повторяются.

Тело цикла размещается между < и >. Если условие ложно при первом входе, то тело цикла не выполнятся ни разу.

Перед использованием цикла while необходимо объявить переменную, которая будет проверяться в условии цикла и изменять значение в теле цикла.

Логика выполнения оператора while :

  1. Проверяется условие. Если результат ИСТИНА, переход к шагу 2, если результат ЛОЖЬ – переход к шагу 4.
  2. Выполняется тело цикла.
  3. Переход к шагу 1.
  4. Конец оператора.

Пример. Цикл выполняется до тех пор, пока вводится 0. При вводе другого числа цикл завершается.

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

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

do
<
тело цикла
> while (условие);

условие – логическое выражение;
тело цикла – операторы которые повторяются.

Тело цикла помещается между ключевыми словами do и while . Если результатом проверки условия является ЛОЖЬ, выполнение цикла завершается.

У цикла do..while тело цикла выполняется раньше, чем произойдет проверка условия. Это значит, что в любом случае тело цикла выполнится хотя бы раз, если даже условие первоначально является ложным.

Логика выполнения оператора do..while :

  1. Выполняется тело цикла.
  2. Проверяется условие. Если результат ИСТИНА, переход к шагу 1, если результат ЛОЖЬ – переход к шагу 3.
  3. Конец оператора.

Пример. Цикл выполняется до тех пор, пока вводится 0. При вводе другого числа цикл завершается.

Пример. В цикле определить четность введенных чисел. Цикл завершается, если вводится число 0

Разберем данный пример:

  1. В строке 3: объявили переменную x. В этой переменной будет храниться число, которое пользователь будет вводить.
  2. В строке 4 — 5: сообщаем пользователю правила ввода.
  3. В строке 7: считываем первое число в переменную x.
  4. В строке 8: в цикле do. while:
    • В строках 10 — 12: проверяем введенное пользователем числа на четность, с помощью оператора условного ветвления if-else.
    • В строке 14: снова считываем введенное число.
    • В строке 15: проверяем условие продолжения цикла x ≠0. Если пользователь ввел число 0, то цикл прекращает свою работу.

Игра «Угадай число»

  1. Программа создает случайное целое число от 10 до 99.
  2. Игрок должен угадать число, которое создала программа, вводя числа.
  3. Программа будет делать подсказки:
    • Ваше число больше!
    • Ваше число меньше!
    • Угадали!

Исходный код программы

Операторы break и continue

Оператор break организует принудительный выход из цикла, даже когда условие цикла — истинно. Оператор break удобно использовать, когда необходимо выйти из цикла при особых обстоятельствах.

Оператор continue используется, если необходимо пропустить какой-то блок кода, но при этом не прекращать работу цикла.

Рис. 5 — http://cppstudio.com/post/319/ —>

Циклы

for — параметрический цикл (цикл с заданным числом повторений).

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

Общая форма записи:

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

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

Рассмотрим цикл с предусловием

Этот цикл выполняется до тех пор, пока истинно условие. Тело цикла — это две строки, одна выводит число, вторая изменяет его. Очевидно, что этот цикл будет выполнен 10 раз и выведет на экран это:

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

Выход из цикла while

Как мне выйти из бесконечного цикла while внутри цикла for?

К сожалению, в отличие от Джавы, C и C++ не поддерживают механизм вроде break label , поэтому самый чистый вариант — использовать goto:

Также можно использовать флаг:

Большой разницы между этими вариантами нет.

Помимо этого случая, goto также используется в хорошем стиле C для обработки ошибок:

В C++ подобное не нужно, т.к. есть RAII, но из циклов по-прежнему выходят через goto .

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

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

Цикл for

Цикл for имеет следующее формальное определение:

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

Вторая часть — условие , при соблюдении которого выполняется цикл. Зачастую в качестве условия используется операция сравнения, и если она возвращает ненулевое значение (то есть условие истинно), то выполняется тело цикла, а затем вычисляется выражение_3 .

Третья часть — приращение задает изменение параметров цикла. Обычно здесь происходит увеличение счетчиков цикла.

Рассмотрим стандартный цикл for и для этого выведем числа с 0 до 5 на консоль:

Первая часть объявления цикла — int i = 0 — создает и инициализирует счетчик i. Счетчик необязательно должен представлять тип int. Это может быть и другой числовой тип, например, float. И перед выполнением цикла его значение будет равно 0. В данном случае это то же самое, что и объявление переменной.

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

И третья часть — приращение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: i—. Можно изменять на другое значение: i+=2.

В итоге блок цикла сработает 6 раз, пока значение i не станет равным 6. И каждый раз это значение будет увеличиваться на 1.

Каждый отдельный проход цикла называется итерацией. То есть в примере выше было 6 итераций.

Усложним цикл и выведем квадраты чисел от 0 до 8:

Здесь блок цикла сработает 9 раз, пока значение i не станет равным 9. И каждый раз это значение будет увеличиваться на 1.

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

Формально определение цикла осталось тем же, только теперь первое и третье выражения в определении цикла отсутствуют: for (; i < 9;) . Переменная-счетчик определена и инициализирована вне цикла, а ее приращение происходит в самом цикле.

Можно определять вложенные циклы. Например, выведем таблицу умножения:

Цикл do..while

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

Здесь код цикла сработает 6 раз, пока i не станет равным нулю. Но важно отметить, что цикл do гарантирует хотя бы единократное выполнение действий, даже если перед первым выполнением условие в инструкции while не будет истинно. То есть мы можем написать:

Хотя у нас переменная i меньше 0, цикл все равно один раз выполнится.

Цикл while

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

Например, выведем на консоль все числа от 6 до 1:

Здесь, пока истинно условие i > 0 , будут выполняться действия цикла — printf(«%d \n», i) и i—

Операторы continue и break

Иногда возникает необходимость выйти из цикла до его завершения. В этом случае можно воспользоваться оператором break . Например:

Здесь когда значение переменной i достигнет 5, осуществляется выход из цикла с помощью оператора break .

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

Чтобы узнать, четное ли число, мы получаем остаток от целочисленного деления на 2, и если он равен 0, то с помощью оператора continue переходим к следующей итерации цикла. А если число нечетное, то складываем его с остальными нечетными числами.

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

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