Что мы делаем ежедневно? Думаю, у каждого из нас свой список дел. Однако раз за разом повторяются одни и те же операции для достижения одних и тех же целей. Это и есть цикл. В программировании циклы используются при обработке множеств / файлов или же для вычисления математических выражений.
Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!

Выделяют несколько видов циклов:
- while … do (с предусловием );
- do … while (с постусловием);
- for (с параметром)
Цикл с параметром — Цикл for C#
Может использоваться в ситуациях, когда до входа в цикл известно количество итераций (повторений цикла). Имеет следующий вид:
for(<инициализация>; <условие>; <порядок выполнения>) { <действия> }
- Инициализация — установка начальных параметров счетчика;
- Условие — условие выхода из цикла, как только оно вернет ложь — произойдет выход из цикла;
- Порядок выполнения — команда увеличения счетчика.
Действия, выполняемые циклически, называются телом цикла. Рассмотрим наиболее общий пример: поиск факториала числа. Факториал числа вычисляется по формуле:
N = 1 * 2 * 3 * ... * N
Как вы видите, мы заранее знаем, сколько раз должно повториться тело цикла, потому можем использовать счетчик.
int n = Convert.ToInt32(Console.ReadLine()); // Пользователь вводит число. int factorial = 1; for(int i = 2; i <= n; i++) // Вычисление факториала. { factorial *= i; } Console.WriteLine(factorial); // Выводим факториал пользователю.
Итак, пользователь вводит любое число. После чего, мы вычисляем факториал по вышеуказанной формуле. Начальное значение факториала необходимо установить в единицу. Цикл начинаем с двойки и повторяем до тех пор, пока счетчик меньше или равен введенному пользователем значению. Если использовать оператор «меньше», мы потеряем умножение на старшее число при вычислении факториала. Порядок выполнения указан как i++, это значит, что на каждой итерации цикла счетчик i увеличивается на единицу. В виде порядка управления может выступать и более сложная математическая формула.
Цикл с предусловием — Цикл while C#
В данном случае действия цикла повторяются до тех пор, пока выполняется указанное условие. Этот цикл функционирует по принципу: «Сперва думаем, после делаем». В общем виде выглядит так:
while(<Условие>) { <Действия> }
Рассмотрим пример вычисления факториала при помощи while.
int n = Convert.ToInt32(Console.ReadLine()); // Пользователь вводит число. int factorial = 1; int i = 2; while(i <= n) // Вычисление факториала. { factorial *= i; i++; // Увеличиваем счетчик. } Console.WriteLine(factorial); // Выводим факториал пользователю.
Чтобы не получить бесконечного цикла, необходимо изменять параметр, проверяемый в условии. Именно для этого мы увеличиваем i.
Цикл с постусловием — Цикл do while C#
Этот вид цикла подобен while, с той лишь разницей, что проверка условия производится после выполнения тела цикла.
do { <Действия> } while(<Условие>);
И снова рассмотрим вычисление факториала.
int n = Convert.ToInt32(Console.ReadLine()); // Пользователь вводит число. int factorial = 1; int i = 2; do // Вычисление факториала. { factorial *= i; i++; // Увеличиваем счетчик. } while(i <= n); Console.WriteLine(factorial); // Выводим факториал пользователю.
Перебор коллекций — Цикл foreach C#
Допустим, мы имеем массив значений, не важно каких: числа, строки, символы… Для перебора массива удобно использовать этот вид цикла. Выглядит он следующим образом:
foreach(var <Элемент массива> in <Массив>) { <Действия> }
Предположим, у нас есть список городов, и нужно найти все города, начинающиеся с заданного символа.
var sym = Console.ReadKey(); // Читаем символ с клавиатуры var cities = {"Москва", "Казань", "Петергоф", "Пермь", "Минск", "Сан-Диего", "Вызима"}; var founded = ""; // Найденные города. foreach(var city in cities) { if(city.StartsWith(sym)) { founded += city + " "; } } Console.WriteLine(founded);
Пользователь вводит символ, после чего для каждого элемента массива проверяется, начинается ли он с заданного символа. И, если условие выполняется, элемент массива запоминается в результирующей строке. Главным плюсом foreach является то, что он исключает возможность выхода за границы массива.
Управление циклом. Команды break и countinue
Для управления циклом в языке C# используются два оператора: break и continue.
Оператор break используется для прерывания выполнения цикла. Пусть, нам нужно найти некоторый элемент в массиве. Так, используя цикл, мы можем выйти из цикла, как только найдем искомый элемент.
int index = 0; var wanted = Console.ReadLine(); var array; for(int i = 0; i < array.Length; i++) { if(array[i] == wanted) { index = i; break; } }
Так мы находим индекс искомого слова в массиве, при этом не выполняем лишних операций после того, как найдем искомый элемент.
Оператор continue используется для перехода к следующей итерации цикла. Рассмотрим задачу: необходимо вычислить сумму пяти частных вида:
1 / (i - a)
Как вы видите, при i = a будет получена ошибка «Деление на ноль». В данном случае мы можем пропускать значение счетчика, которое приводит к ошибке.
var sum = 0; for(int i = 0; i < n; i++) { if (i - a == 0) { continue; } sum+= 1 / (i - a); }
Циклы C# — Итоги
Вот мы и рассмотрели основы работы с циклами в C#. Удачных вам экспериментов, коллеги.
Рекомендую также изучить статью Логические операции и условные операторы C#. А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.