Цикл for в C#

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

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

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

Цикл for

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

Синтаксис цикла

for (счетчик; условие; итератор)
{
  // тело цикла
}

Как работает цикл for

  1. В цикле for три переменные: счетчик, условие и итератор.
  2. Объявление счетчика происходит в самом начале и лишь раз. Обычно он инициализируется сразу после объявления. 
  3. Затем проверяется условие. Условие — булево выражение. То есть, возвращает true или false
  4. Если условие определяется как true:
    • Выполняются инструкции внутри цикла.
    • После этого инициализируется итератор — обычно изменяется значение этой переменной.
    Условие проверяется снова.
    • Процесс повторяется до тех пор, пока условие не будет определено как false.
  5. Если условие определится как false, цикл завершается.

Блок-схема работы цикла

Пример 1. Итерации цикла for

using System;

namespace Loop
{
    class ForLoop
    {
        public static void Main(string[] args)
        {
            for (int i=1; i<=5; i++)
            {
                Console.WriteLine("Цикл for C#: итерация {0}", i);
            }
        }
    }	
}

Вывод:

Цикл for C#: итерация 1
Цикл for C#: итерация 2
Цикл for C#: итерация 3
Цикл for C#: итерация 4
Цикл for C#: итерация 5

В этой программе: 

  • счетчикint = 1,
  • условиеi <= 5,
  • итератор — i++,

После запуска программы происходит следующее: 

  • Объявляется и инициализируется переменная i. Ей присваивается значение 1.
  • После этого проверяется условие i <= 5.
  • Если проверка условия возвращает `true`, выполняется тело цикла. Оно печатает строку "Цикл for C#: итерация 1".
  • Затем определяется значение итератора (i++). Значение i увеличивается до 2.
  • Условие (i <= 5) проверяется снова и значение i увеличивается на 1. Первые 5 итераций условие цикла будет оцениваться как true.
  • Когда значение i станет равняться 6, условие оценится как false. Следовательно, цикл завершится. 

Пример 2. Вычисляем сумму первых n натуральных чисел

using System;

namespace Loop
{
    class ForLoop
    {
        public static void Main(string[] args)
        {
            int n = 5, sum = 0;

            for (int i=1; i<=n; i++)
            {
                // sum = sum + i;
                sum += i;
            }

            Console.WriteLine("Сумма первых {0} натуральных чисел = {1}", n, sum);
        }
    }
}

Вывод:

 

Сумма первых 5 натуральных чисел = 15

В этой программе объявляются две переменные — sum и n. Их значения равны 0 и 5 соответственно. Значение счетчика i в самом начале равно 1. 

Внутри цикла значение переменной sum увеличивается на isum = sum + i. Цикл продолжается до тех пор, пока значение счетчика i меньше или равно n

Давайте посмотрим, что происходит на каждой итерации цикла.

Изначально i = 1, sum = 0 и n = 5.

Итерация

Значение 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.

Несколько выражений внутри цикла for

Внутри цикла for может быть несколько выражений. Это значит, что мы можем инициализировать несколько счетчиков и итераторов. Давайте разберем следующий пример.

Пример 3. Цикл for с несколькими выражениями

using System;

namespace Loop
{
    class ForLoop
    {
        public static void Main(string[] args)
        {
            for (int i=0, j=0; i+j<=5; i++, j++)
            {
                Console.WriteLine("i = {0} и j = {1}", i,j);
            }         
        }
    }
}

Вывод:

i = 0 и j = 0
i = 1 и j = 1
i = 2 и j = 2

В этой программе мы объявили и инициализировали 2 переменных-счетчика — i и j.

В части итератора у нас также два выражения. То есть, на каждой итерации цикла i и j увеличиваются на 1. 

Цикл for без объявления счетчика и итератора

Объявление счетчика, условия и итератора в цикле for не обязательно. Запустить цикл for мы можем и без них. 

В таких случаях цикл for работает так же, как и while. Давайте рассмотрим.

Пример 4. Цикл for без объявления счетчика и итератора

using System;

namespace Loop
{
    class ForLoop
    {
        public static void Main(string[] args)
        {
            int i = 1;
            for ( ; i<=5; )
            {
                Console.WriteLine("Цикл for C#: итерация {0}", i);
                i++;
            }
        }
    }
}

Вывод:

Цикл for C#: итерация 1
Цикл for C#: итерация 2
Цикл for C#: итерация 3
Цикл for C#: итерация 4
Цикл for C#: итерация 5

В этом примере мы не объявляли счетчик и итератор.

Переменная i объявлена до цикла for и ее значение увеличивается внутри тела цикла. Эта программа практически идентична той, о которой мы говорили в первом примере.

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

Бесконечный цикл for

Если условие выполнения цикла всегда true, то он будет выполняться бесконечно. Это называется бесконечным циклом.

Пример 5. Бесконечный цикл for

using System;

namespace Loop
{
    class ForLoop
    {
        public static void Main(string[] args)
        {
            for (int i=1 ; i > 0; i++)
            {
                Console.WriteLine("Цикл for C#: итерация {0}", i);
            }
        }
    }
}

В этом примере i было присвоено значение 1. Условие — i > 0. На каждой итерации цикла значение `i` увеличивается на 1. Из-за этого условие цикла никогда не примет значение false. Именно поэтому цикл будет выполняться бесконечно.

Инициализировать бесконечный цикл можно и заменой условия пробелом. Например:

for ( ; ; )
{
  // тело цикла
}

или

for (счетчик; ; итератор)
{
  // тело цикла
}
codechick

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

2024 ©