Циклы 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);
Бесконечные циклы бывают полезны. Например, когда цикл выполнять нужно столько, сколько работает программа.
Допустим, у нас есть программа — анимация картинки. Нам нужно запускать ее до тех пор, пока мы не остановим ее вручную. Именно в таких ситуациях нам необходим бесконечный цикл, чтобы анимация картинки не останавливалась.