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 и более раз Когда заведомо известно количество итераций
2
Задача
C# SELF, 4 уровень, 3 лекция
Недоступна
Основы цикла do-while
Основы цикла do-while
2
Задача
C# SELF, 4 уровень, 3 лекция
Недоступна
Минимальное значение из введенных чисел
Минимальное значение из введенных чисел
Комментарии (17)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 11
21 января 2026
"Сообщение в поле вывода содержит английский язык и оскорбления, рекомендуется..." Слыш, валидатор, как хочу, так с тобой и общаюсь!
Irina Freedom Уровень 7
24 декабря 2025
Очень интересно, что если проверить "правильное решение" второй задачи, то это образцовое решение не проходит проверку. Вы там, наверху, сделайте с этим что-нибудь!
Longcat Уровень 32
19 ноября 2025
Странно это: "Если пользователь первым вводом сразу введёт 0, программа выведет int.MaxValue как минимальное..." Окей, скармливаю сразу 0, выводит 0 как минимальное, т.е. мой код работает корректно - do-while же!
Longcat Уровень 32
19 ноября 2025
А, понял, нужно вот это дело как-то обработать, тогда проходит:

// Если введено не 0 и число меньше текущего минимума — обновляем минимум
т.е. 0 и начальное значение min но не входят в последовательность, согласно условиям задания.
Александр Уровень 4
16 ноября 2025
И снова "Рекомендуется обработать возможный ввод некорректных данных (например, использовать int.TryParse) чтобы программа не падала при вводе нечисловых значений." Какой еще int.TryParse??? не было этого нигде в лекциях😑😑😑
Vitaly Уровень 7
6 ноября 2025
я беру правильное решение, задача проверку не проходит. это как?
whynot00 Уровень 1
13 сентября 2025
ощущение что я один тут вообще
Александр Уровень 24
16 сентября 2025
нас как минимум двое
Top_Gun_Mos Уровень 10
27 сентября 2025
трое)
Яндекс Профиль Уровень 2
7 октября 2025
4
Александр Уровень 10
14 октября 2025
5
Глиномялка Уровень 4
17 октября 2025
На месте
23 октября 2025
Не один
28 октября 2025
Держим строй)
Александра Уровень 8
29 октября 2025
нас тут много
Дмитрий Уровень 2
13 ноября 2025
🙂
Aleksey Trofimov Уровень 24
24 декабря 2025
И я еще тут догоняю