Цикли while і do while в C++

Цикли while і do while в C++
4 (80%) 1 голосування




цикл while и цикл do while

Мы с вами уже рассмотрели одну из конструкций повторения в языке C – цикл for. В этой статье будут рассмотрены еще два цикла: while і do while. Они очень похожи между собой. їх синтаксис:

цикл while в C++
Рис.1 – синтаксис while
цикл do while в C++
Рис.2 – синтаксис do while

Отличие состоит только в том, що при початку виконання циклу while, сразу происходит проверка условия. Если оно возвращает ложь (false), то тело цикла не выполнится ни разу. А при использовании do while, сразу выполнится оператор(-ы) в теле цикла, а потім буде перевірено умова в круглих дужках ( ) после ключевого слова while. И аналогично, при возврате false, цикл завершает работу, иначе – выполняется следующий шаг (итерация). То есть тело цикла do while виконається хоча б один раз, при будь-якому розкладі.

Поговорим о них в отдельности. Начнем с while. Как говорилось выше, чтобы выполнилось тело цикла, необходимо чтобы при проверке условия в круглых скобках ( ), была возвращена истина (true). Перевірка умови і виконання тіла відбуватиметься, пока условие не вернет false. Из этого выходит, что для прерывания цикла, в его теле должно происходить что-либо, что повлияет на проверку условия. Це може бути або введене користувачем з клавіатури значення змінної, яка присутня в перевірочному умови циклу. Або це може бути збільшення або зменшення керуючоїзмінної, которая так же задействована в проверочном условии. Розглянемо приклад зі зміною значення керуючої змінної в тілі циклу. Постановка задачи: пользователь хочет пополнить карточный счет через терминал. Он вводит сумму с клавиатуры. Предусмотреть в программе возможность изменения ошибочно введенной суммы.

керуюча змінна exit объявляется и инициализируется единицей до цикла while – рядок 9. Тому при вході в цикл, перевірити умови while (exit == 1) вернет true (докладніше про це можна почитати почитать здесь) і програма перейде до виконання тіла циклу. Подобное условие часто записывают таким способом: while (exit). С таким условием программа работает, как и с предыдущим. Объясняется это тем, що будь-яке значення змінної exit отличное от нуля будет восприниматься компилятором, як true. Тело цикла будет выполняться, пока пользователь не изменит значение этой переменной на 0. Тогда while (exit) буде рівнозначно while (0). То есть проверочное условие ложно. Такая запись встречается чаще, так как она более короткая, хотя и не настолько ясна, как та, что в примере. К этому просто надо привыкнуть.

У рядках 16 – 17 пользователю задается вопрос и предлагается сделать выбор: cout << “Оплатить и выйти – нажмите 0. Изменить сумму – нажмите 1: “; То есть если он совершил ошибку при вводе суммы пополнения, у него есть возможность исправить её, нажав 1. Як тільки користувач введе вірну суму і натисне 0 (что соответствует “Оплатить и выйти”), произойдет выход из цикла и программа продолжит работу. В итоге на экране покажется сообщение о сумме пополнения счета – строки 20 – 22.

Результат:

цикл while в C++

Эту же задачу можно решить применяя цикл do while. В этом случае, изначально значение переменной exit може бути яким завгодно. Цикл в любом случае выполнит тело и предложит сделать выбор. Смотрим:

Запустив программу, увидите, что несмотря на то, что переменная exit спочатку дорівнює 0, тіло циклу do while выполнится. Это потому, что проверка условия производится ниже тела – в строке 18. Зверніть увагу на крапку з комою ; після закриває круглої дужки. для циклу do while она обязательна.

Сравнивая циклы for, while і do while видно, что они похожи. Только в цикле for всё необходимое для его нормальной работы собрано в одной строке (объявление и инициализация управляющей переменной, проверочное условие, изменение управляющей переменной). Тоді як в циклах while і do while управляющая переменная объявлена до цикла, а ее изменение происходит ниже в теле. Яку конструкцію повторення використовувати – решать вам. найчастіше цикли while і do while застосовуються тоді, когда неизвестно изначально, сколько будет повторений (как в нашем примере). Варто ще пам'ятати, что в отличии от циклов while і do while , керуюча змінна циклу for хоч я знаю за межами його тіла (то есть при выходе из цикла, она уничтожается).

Предлагаю так же обучающее видео на тему циклов в C . В нём рассмотрен и цикл for:

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

Нові уроки з програмування:

5 думки про "Цикли while і do while в C++

  1. Я ось так вирішив перше завдання. А чи можна якось спростити цей код?

    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);

    int amount = 0;
    int sum = 0;
    int number;

    do
    {
    cin >> number;
    сума + = число;
    кількість ++;

    } while (number != 0);
    cout << endl;
    amount–;
    cout << amount << endl;
    cout << sum << endl;
    cout << sum / amount<< endl;

    return 0;
    }

  2. #include
    #include
    using namespace std;// скорочення типу (cout<>)

    int main()
    {
    setlocale(LC_ALL, “rus”);// включення російської мови
    INT Summa = 0;
    int kol_vo = 0;
    int chislo = 0;
    int a ;

    while(a > 0)
    {

    cout <> a;
    chislo = chislo + a;
    summa = chislo + a;
    ++kol_vo;

    }
    kol_vo = kol_vo-1;
    cout << "колличество вводов:" << kol_vo << endl;
    cout << "Сумма введенных чисел:" << сума << endl;
    cout << "соеднее введеных чисел:" << summa / kol_vo << endl;

    Геч ();
    return 0;
    }

залишити коментар

Код розміщуйте в тегах: <pre class="lang:C ++ декодуванням:true ">ВАШ КОД</заздалегідь>