Урок 68. Цикл do while

  Юрий  | 

    | 

  Обновл. 30 Июн 2017  | 

 8169

 ǀ   5 

Одна интересная вещь в цикле while заключается в том, что если условие цикла изначально false, то тело цикла не будет выполняться вообще. Но иногда бывают случаи, когда нужно, чтобы цикл выполнился хотя бы один раз, например, при отображении меню. Для решения этой проблемы C++ предлагает цикл do while:

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

Тело цикла do while всегда выполняется хотя бы один раз. После выполнения тела цикла проверяется условие. Если оно истинно, то выполнения переходит к началу do while и тело цикла выполняется снова.

Ниже приведен пример использования do while для отображения меню и ожидания того, что пользователь сделает корректный выбор:

Интересно, что переменная choice должна быть объявлена вне блока do. Почему так?

Если бы переменная choice была объявлена внутри блока do, то она была бы уничтожена при завершении блока do, что происходит до выполнения условия while. Но нам нужна переменная, которая будет использоваться в условии while — следовательно, переменная choice должна быть объявлена вне блока do.

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

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (72 оценок, среднее: 4,96 из 5)
Загрузка...

Комментариев: 5

  1. Аватар metanastis:

    Дана вот такая задача:

    Дана последовательность целых чисел, оканчивающаяся числом −1. Необходимо определить, присутствует ли в последовательности хотя бы одна пара одинаковых «соседних» чисел. Число −1 членом последовательности не является.

    Формат входных данных:

    Вводится не более 215 целых чисел ai (−215≤ai≤215−1; ai≠−1). После последнего числа вводится −1. Гарантируется, что в последовательности есть хотя бы два числа.

    Формат выходных данных:

    Выведите «YES», если условие задачи выполняется, и «NO» в противном случае.

    Решение:

    Вопрос:
    Почему "cin>> b" нужно обязательно вводить в цикле do? а не перед ним ? к примеру таким образом

    ??????????????

  2. Аватар Дмитрий:

    Добрый день! Подскажите, никак не могу догнать, как мне в этом примере организовать проверку деления на 0 ??

  3. Аватар bm0802:

    Пример так себе… вот тот же результат но без do:

    1. Юрий Юрий:

      У вас сразу же выполняется проверка choice, прежде чем пользователю предоставится список, чтобы что-то выбрать. Т.е. пользователь еще ничего не выбрал, а вы уже проверяете то, что он ничего не выбрал — это первое действие. Затем вы уже показываете список — это второе действие в вашей программе.

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

      То, что оно работает у вашем примере и без do — то это задание можно реализовать еще проще: через switch, if/else и без while вообще. Напрашивается вопрос, зачем тогда придумали эти циклы while, do/while, for, если всё можно сделать и без них?

      1. Аватар Игорь:

        А разве не нужно в данном случае еще и присвоить значение переменной choise? Ведь значеним не инициализированной переменной может быть всякий мусор из памяти, в том числе и 1,2,3 или 4… и тогда произойдет непреднамеренный автовыбор ))

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

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