Циклы while и do...while в C#

В этой статье вы познакомитесь с циклами while и do...while в C#, а также узнаете, как их использовать и какая между ними разница. 

В программировании порой необходимо выполнить набор инструкций определенное количество раз. Возможное решение — скопировать код. Но есть проблема: количество этих наборов мы можем либо не знать, либо их может быть очень много (10000, к примеру). 

Решение проблемы — циклы. В программировании циклы используются для многократного выполнения блока кода. Цикл работает до тех пор, пока заданное условие истинно. 

Цикл while

Для инициализации цикла используется ключевое слово while.

Синтаксис

while (условие)
{
    // тело цикла while
}

Как работает

  1. Цикл while содержит условие.
  2. Если условие = true:
    • Выполняются инструкции в теле цикла.
    • После выполнения инструкций условие проверяется снова.
  3. Если условие = 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

true

0+1 = 1

2

2

true

1+2 = 3

3

3

true

3+3 = 6

4

4

true

6+4 = 10

5

5

true

10+5 = 15

6

6

false

Цикл завершается

В результате значение переменной sum будет равно 15. 

Цикл do...while

Ключевые слова do и while используются для объявления цикла do...while. Он очень похож на цикл while, но между ними есть огромная разница.

В цикле while условие проверяется до выполнения тела цикла. Это главное отличие цикла do...while, где условие проверяется после выполнения тела цикла.

Именно благодаря этой особенности тело цикла do...while выполняется хотя бы раз независимо от результата проверки условия. 

Синтаксис

do
{
    // тело цикла do...while
} while (условие);

Как работает

  1. Выполняется тело цикла do...while.
  2. Проверяется условие.
  3. Если условие оценивается как true, то выполняется тело цикла. 
  4. Цикл завершается, если условие оценивается как 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);

Бесконечные циклы бывают полезны. Например, когда цикл выполнять нужно столько, сколько работает программа. 

Допустим, у нас есть программа — анимация картинки. Нам нужно запускать ее до тех пор, пока мы не остановим ее вручную. Именно в таких ситуациях нам необходим бесконечный цикл, чтобы анимация картинки не останавливалась. 

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©