JavaRush /Курси /C# SELF /Цикл do-while: знайомство та нюанси роботи

Цикл do-while: знайомство та нюанси роботи

C# SELF
Рівень 4 , Лекція 3
Відкрита

1. Знайомство з циклом do-while

Давайте відволічмося на хвилинку й уявімо: ви вирішили написати програму, яка вгадує число, що його загадав користувач. Вам потрібно, щоб програма хоча б один раз запитала в користувача число та питала знову й знову, доки не вгадає. Втім, якщо умова не виконується з першої спроби, звичайний while навіть не зайде в тіло циклу.

Саме тут стане у пригоді цикл do-while. На відміну від while, він завжди виконує тіло циклу принаймні один раз — навіть якщо умова відразу хибна. Це ніби вам дали безкоштовну жуйку незалежно від того, купили ви щось чи ні.

do
{
    // Тіло циклу: цей код виконається хоча б один раз
}
while (умова);
Синтаксис циклу do-while

Зверніть увагу на крапку з комою ; у кінці після дужки умови! У звичайному while її немає, а тут вона є. Невелика пастка для новачків.

Кроки роботи циклу do-while

  1. Вхід у тіло циклу (завжди хоча б раз).
  2. Перевірка умови.
  3. Якщо умова істинна — повторити тіло.
  4. Якщо умова хибна — вийти з циклу.

2. Відмінність від звичайного while

Згадайте основний сценарій роботи звичайного while:

while (умова)
{
    // Тіло циклу
}

Тіло не виконається жодного разу, якщо умова хибна від самого початку!

Тепер приклад з do-while:

do
{
    // Тіло циклу
}
while (умова);

Тіло циклу виконається хоча б один раз, навіть якщо умова одразу хибна!

Давайте проілюструємо різницю кодом:

// Звичайний while
int count = 0;
while (count > 0)
{
    Console.WriteLine("count = " + count);
    count--;
}
// Нічого не виведеться

// do-while
int count2 = 0;
do
{
    Console.WriteLine("count2 = " + count2);
    count2--;
}
while (count2 > 0);
// Виведе "count2 = 0" хоча умова хибна!

Іноді це здається «дивиною», проте інколи саме така поведінка рятує ваш код (наприклад, під час користувацького введення та валідації даних).

3. Практичні сценарії використання do-while

Де цей цикл застосовують найчастіше?

Валідація даних

Найпопулярніший сценарій — ви хочете, щоб користувач увів щось коректне (наприклад, лише цифри або пароль не коротший за 6 символів), і повторюєте запит, доки не отримаєте коректне введення.

string password;
do
{
    Console.Write("Введіть новий пароль (не менше 6 символів): ");
    password = Console.ReadLine();
}
while (password.Length < 6);

Console.WriteLine("Пароль прийнято!");

У цьому прикладі тіло циклу виконується хоча б раз — навіть якщо користувач з першого разу уведе довгий пароль.

Меню в консольних застосунках

Поширений і корисний шаблон: показувати меню, очікувати команду користувача й завершувати цикл лише за спеціальною командою.

string command;
do
{
    Console.WriteLine("Меню:");
    Console.WriteLine("1. Показати привітання");
    Console.WriteLine("2. Вийти");
    Console.Write("Виберіть дію: ");
    command = Console.ReadLine();

    if (command == "1")
    {
        Console.WriteLine("Привіт, світ!");
    }
    else if (command != "2")
    {
        Console.WriteLine("Невідома команда.");
    }
}
while (command != "2");

Console.WriteLine("Бувайте!");

4. Порівняння while та інших циклів

Тип циклу Перевірка умови Скільки разів може виконатися тіло Де доречно
while До 0 і більше разів Коли кількість повторень наперед невідома
do-while Після 1 і більше разів Коли потрібно виконати хоча б раз
for До 0 і більше разів Коли наперед відома кількість ітерацій
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ