Цикл for в C#
В этой статье вы узнаете о цикле for в C# и о том, как его можно использовать в программах на C#.
В программировании порой необходимо выполнить набор инструкций определенное количество раз. Возможное решение — скопировать код. Но есть проблема: количество этих наборов мы можем либо не знать, либо их может быть очень много (10000, к примеру).
Решение проблемы — циклы. В программировании циклы используются для многократного выполнения блока кода. Цикл работает до тех пор, пока заданное условие истинно.
Цикл for
Для инициализации цикла используется ключевое слово for.
Синтаксис цикла
for (счетчик; условие; итератор)
{
// тело цикла
}
Как работает цикл for
- В цикле for три переменные:
счетчик
,условие
иитератор
. - Объявление счетчика происходит в самом начале и лишь раз. Обычно он инициализируется сразу после объявления.
- Затем проверяется условие. Условие — булево выражение. То есть, возвращает
true
илиfalse
. - Если
условие
определяется какtrue
:
• Выполняются инструкции внутри цикла.
• После этого инициализируетсяитератор
— обычно изменяется значение этой переменной.
•Условие
проверяется снова.
• Процесс повторяется до тех пор, покаусловие
не будет определено какfalse
. - Если
условие
определится как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
увеличивается на i
— sum = sum + i
. Цикл продолжается до тех пор, пока значение счетчика i
меньше или равно n
.
Давайте посмотрим, что происходит на каждой итерации цикла.
Изначально i
= 1, sum
= 0 и n
= 5.
Итерация |
Значение 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.
Несколько выражений внутри цикла 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 (счетчик; ; итератор)
{
// тело цикла
}