Циклы while и do...while в C#
В этой статье вы познакомитесь с циклами while и do...while в C#, а также узнаете, как их использовать и какая между ними разница.
В программировании порой необходимо выполнить набор инструкций определенное количество раз. Возможное решение — скопировать код. Но есть проблема: количество этих наборов мы можем либо не знать, либо их может быть очень много (10000, к примеру).
Решение проблемы — циклы. В программировании циклы используются для многократного выполнения блока кода. Цикл работает до тех пор, пока заданное условие истинно.
Цикл while
Для инициализации цикла используется ключевое слово while.
Синтаксис
while (условие)
{
// тело цикла while
}
Как работает
- Цикл while содержит условие.
- Если условие =
true:
• Выполняются инструкции в теле цикла.
• После выполнения инструкций условие проверяется снова. - Если условие =
false, цикл завершается.
Блок-схема

Пример 1. Изучаем, как работает цикл while
using System;
namespace Loop
{
class WhileLoop
{
public static void Main(string[] args)
{
int i=1;
while (i<=5)
{
Console.WriteLine("Цикл while C#: итерация {0}", i);
i++;
}
}
}
}
Вывод:
Цикл while C#: итерация 1
Цикл while C#: итерация 2
Цикл while C#: итерация 3
Цикл while C#: итерация 4
Цикл while C#: итерация 5
Изначально i равно 1.
Когда программа достигает цикла while:
- Проверяется условие
i <= 5. Так какiравно 1 и 1 <= 5 оценивается какtrue, выполняется тело циклаwhile. После этого выводится сообщение «Цикл while C#: итерация 1». Затем значение переменнойiувеличивается 1 и становится равным 2. - Условие
i <= 5проверяется снова. В этот раз условие также оценивается какtrue(2 <= 5), поэтому программа выводит на экран строку. После этого значение переменнойiувеличивается и становится равным 3. - Это продолжается до тех пор, пока значение
iне станет равно 6. После этого условие оценивается какfalseи цикл завершается.
Пример 2. Вычисляем сумму пяти первых чисел
using System;
namespace Loop
{
class WhileLoop
{
public static void Main(string[] args)
{
int i=1, sum=0;
while (i<=5)
{
sum += i;
i++;
}
Console.WriteLine("Сумма = {0}", sum);
}
}
}
Вывод:
Сумма = 15
Эта программа вычисляет сумму первых пяти натуральных чисел.
- Изначально значение переменной
sumравно 0. - На каждой итерации цикла значение sum увеличивается на
i. После этого значение переменнойiувеличивается на 1. - Когда значение переменной
iстанет равно 6, условиеi <= 5оценится какfalseи цикл завершится.
Давайте посмотрим, что происходит во время выполнения программы.
Изначально i = 1, а sum = 0.
|
Итерация |
Значение i |
i <= 5 |
Значение sum |
|
1 |
1 |
|
0+1 = 1 |
|
2 |
2 |
|
1+2 = 3 |
|
3 |
3 |
|
3+3 = 6 |
|
4 |
4 |
|
6+4 = 10 |
|
5 |
5 |
|
10+5 = 15 |
|
6 |
6 |
|
Цикл завершается |
В результате значение переменной sum будет равно 15.
Цикл do...while
Ключевые слова do и while используются для объявления цикла do...while. Он очень похож на цикл while, но между ними есть огромная разница.
В цикле while условие проверяется до выполнения тела цикла. Это главное отличие цикла do...while, где условие проверяется после выполнения тела цикла.
Именно благодаря этой особенности тело цикла do...while выполняется хотя бы раз независимо от результата проверки условия.
Синтаксис
do
{
// тело цикла do...while
} while (условие);
Как работает
- Выполняется тело цикла
do...while. - Проверяется условие.
- Если условие оценивается как
true, то выполняется тело цикла. - Цикл завершается, если условие оценивается как
false.
Блок-схема

Пример 3. Изучаем, как работает цикл do...while
using System;
namespace Loop
{
class DoWhileLoop
{
public static void Main(string[] args)
{
int i = 1, n = 5, product;
do
{
product = n * i;
Console.WriteLine("{0} * {1} = {2}", n, i, product);
i++;
} while (i <= 10);
}
}
}
Вывод:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
Как видите, программа печатает таблицу умножения числа 5.
-
Изначально значение переменной
iравно 1. После этого выполняется тело циклаdo...whileбез проверки условия (в отличие от циклаloop). -
Внутри тела цикла вычисляется значение переменной
product. После этого печатается строка, а значение переменнойiувеличивается на 1, то есть становится равным 2. -
После выполнения тела цикла проверяется условие
i <= 10. Значит, тело циклаdo...whileвыполняется 10 раз. -
Когда значение переменной i становится равным 11, условие оценивается как
falseи цикл завершается.
Бесконечный цикл while и do...while
Если условие цикла while или do...while никогда не станет равно false, то цикл будет выполняться бесконечно. Такие циклы называются бесконечными.
Бесконечный цикл while
while (true)
{
// тело цикла while
}
Бесконечный цикл do...while
do
{
// тело цикла do...while
} while (true);
Бесконечные циклы бывают полезны. Например, когда цикл выполнять нужно столько, сколько работает программа.
Допустим, у нас есть программа — анимация картинки. Нам нужно запускать ее до тех пор, пока мы не остановим ее вручную. Именно в таких ситуациях нам необходим бесконечный цикл, чтобы анимация картинки не останавливалась.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.