Цикл – управляюча конструкція, призначена для багаторазового виконання однієї чи декількох інструкцій. Одне циклічне повторення має назву – ітерація.

Цикл while

Цикл з передумовою while – перевіряє умову на початку виконання, та має наступний синтаксис:

while(умовний_вираз)
{
    // інструкції
}

Виконується до тих пір, поки умова – істина(рівна true).

Приклад: вивід в консоль цифр від 1 до 9:

var n = 1;
while (n < 10)
{
    Console.WriteLine(n);
    n += 1;
}

Цикл do while

Цикл з післяумовою do while – здійснює перевірку умови після виконання однієї ітерації, тобто тіло циклу, не залежно від умов, виконується хоча б один раз.

Приклад: сума чисел від 1 до 10:

int k = 1;
int s = 0;
do
{
    s += k;
    ++k;
}
while (k <= 10);
Console.WriteLine("Sum = {0}", s);

Цикл for

Цикл з лічильником for – це цикл в якому лічильник змінює значення від початкового до кінцевого з певним кроком, і для кожного значення лічильника виконується одна ітерація.

Має наступний синтаксис:

for(ініціалізатор; умова; ітератор)
{
    // інструкції;
}

Розділи ініціалізатор, умова та ітератор є не обов’язковими. В ітераторі може міститися декілька інструкцій, розділених комою – “,”.

Розглянемо приклад знаходження добутку чисел від 1 до 10:

int p = 1;
for (int i = 1; i <= 10; i++)
{
    p *= i;
}

Цикл працює наступним чином:

  1. ініціалізується змінна – int i = 1;
  2. перевіряється умова i <= 10:
    • якщо значення true переходимо до наступного кроку;
    • якщо false - виходимо з циклу;
  3. виконується інструкція – p *= i;
  4. змінюється лічильник – i++;
  5. перехід на 2-й крок.

Цикл foreach

Цикл foreach, або цикл перегляду – застосовується до колекцій(масивів, списків), перебирає всі елементи колекції, для кожної ітерації бере один елемент.

var array = new[] { 1, 2, 3, 4, 5 }; //масив цілих чисел
//в кожній ітерації змінній item присвоюється наступне значення з масиву
foreach (var item in array)
{
    Console.WriteLine(item);
}

Оператор goto

За допомогою оператора безумовного переходу goto можна реалізувати циклічне повторення:

byte x = 9;
label:
Console.WriteLine(x--);
if (x > 0)
{
    goto label; //перейти на label
}

Циклічне повторення не є циклом в прямому розумінні цього слова.

Використання goto дуже ускладнює читання коду програми. В деяких мовах програмування цей оператор заборонений, а в інших його використання вважається поганим прикладом. В C#, він присутній, але на практиці майже не використовується. Тут наводиться в якості огляду можливостей платформи .Net.

Оператори break та continue

Іноді необхідно вийти з циклу, не дочекавшись його завершення, для цього використовується оператор переривання циклу - break.

int x = 0;
while (x < 100)
{
    // при значенні x більше 7 відбудеться дострокове переривання циклу
    if (x > 7)
        break;
    Console.WriteLine(x);
    x++;
}

Якщо потрібно пропустити одну чи декілька інструкцій, та одразу перейти до наступної ітерації, використовується оператор – continue.

int b = 0;
for (int i = 1; i < 10; i++)
{
    b += 10;
    //при значенні i = 4 в консоль нічого не виводиться
    if (i == 4)
        continue;
    Console.WriteLine("{0}. {1}", i, b);
}

Безкінечні цикли

Безумовні або безкінечні цикли, це цикли які повторюються безкінечну кількість разів. Часто використовуються на практиці, коли потрібно виконати невідому на початку циклу кількість операцій. Для виходу з циклів використовують оператор break.

Варіанти реалізації:

while(true)
{
    //тіло циклу
}

for(;;)
{
    //тіло циклу
}

do
{
    //тіло циклу
}
while(true);

Приклад використання безкінечного циклу для зчитування рядків тексту з клавіатури:

string text = "";
do
{
    Console.Write("Введіть рядок тексту, або exit для переривання вводу: ");
    var s = Console.ReadLine();
    if (s == "exit")
        break;
    else
        text += s + "\r\n";
}
while (true);

Всі з розглянутих циклів можуть містити вкладені цикли, або інші конструкції мови C#.

Дивіться також: