Při vyhodnocování programů je někdy žádoucí, aby část kódu proběhla vícekrát. K tomu lze v programovacích jazycích využít cykly.

Pokud je vytvořen cyklus, ve kterém je podmínka vždy splněna, tak dojde k tzv. zacyklení.

Řízení cyklů

Při práci s cykly může být potřebné ovládat cyklus z jeho těla. K tomu lze využít příkazy:

  • continue – přeskočí vyhodnocování aktuální in na konec aktuální iterace cyklu
  • break – ukončí cyklus

Příklad: Nalezení prvního lichého čísla většího než 10 v seznamu

void FindOddNumber(List<int> numbers)
{
    foreach (int number in numbers)
    {
        if (number <= 10)
        {
            // Přeskočí čísla menší nebo rovna 10
            continue;
        }
 
        if (number % 2 != 0)
        {
            Console.WriteLine($"První liché číslo větší než 10: {number}");
            break; // Ukončí cyklus při nalezení vhodného čísla
        }
    }
}

Typy cyklů

Programovací jazyk C# poskytuje 4 typy cyklů:

  • For cyklus
  • While cyklus
  • Do While cyklus
  • Foreach cyklus

For cyklus

Také nazývaný jako cyklus s řídící proměnnou. Tento cyklus se využívá v případě, kdy je přesně znám počet opakování (iterací), kolikrát má cyklus proběhnout.

Pro tento cyklus se používá klíčové slovo for a jak již název napovídá, v rámci jeho hlavičky je ve většině případů specifikována proměnná, s kterou se provádí nějaká operace (typicky inkrementace nebo dekrementace). Cyklus probíhá do doby, dokud je podmínka splněna. Každá část hlavičky je nepovinná a do libovolné části je možné umístit více operací, které je nutné oddělit čárkou.

Části for cyklu:

  1. Inicializace – vždy proběhne právě jednou, a to na začátku cyklu
  2. Testování – probíhá vždy před tím, než proběhne tělo
    • Pokud je true, pokračuje se do těla cyklu
  3. Aktualizace podmínek – probíhá po proběhnutí těla cyklu

Syntaxe for cyklu

for (deklarace_ridicich_promennych ; podminka ; aktualizacni_cast)
{
	// Tělo cyklu
}

Ukázka: Vypsání čísel 1 až 5

for (int i = 1; i <= 5; i++)
{
	Console.WriteLine(i);
}

Nekonečný for cyklus

for (;;)
{
	// Tělo cyklu
}

Komplikovaná hlavička for cyklu

I takto může vypadat for cyklus:

for (int i = 0, j = 100; i < j; i += 5, j -= 10)
{
    Console.WriteLine($"i: {i}, j: {j}");
}

While cyklus

While cyklus je také nazýván jako cyklus s podmínkou na začátku.

Využívá se v případě, kdy je potřeba provádět nějaké akce do doby, dokud je splněna nějaká podmínka.

Nejprve je vyhodnocena podmínka cyklu:

  • Pokud je true, provede se tělo cyklu a znovu a celý proces se opakuje
  • Pokud je false, cyklus se ukončí

Syntaxe while cyklu

while (podminka)
{
	// Tělo cyklu
}

Ukázka: Vypsání čísel 1 až 5

int i = 1;
 
while (i <= 5)
{
	Console.WriteLine(i);
	i++;
}

Do While cyklus

Také nazývan cyklus s podmínkou na konci. Nejdříve se provede tělo cyklu, poté se vyhodnotí podmínka a pokud je true, provede se tělo cyklu znovu. Cyklus se opakuje, dokud platí podmínka.

Tělo cyklu se provede vždy alespoň jednou.

Syntaxe do while cyklu

do
{
	// Tělo cyklu
} while (podminka);
int i = 1;
 
do
{
	Console.WriteLine("Number: " + i);
	i++;
}
while (i <= 5);

Foreach cyklus

Cyklus pro procházení kolekcí. Jedná se o cyklus, který umožňuje procházet kolekci prvek po prvku bez nutnosti využívat indexy. V každé iteraci je aktuální prvek uložen do programátorem vytvořené proměnné.

Syntaxe foreach cyklu

foreach (DatovyTyp nazev_promenne in nazev_kolekce)
{
	// Tělo cyklu
}
string[] fruits = { "Apple", "Banana", "Cherry", "Date" };
 
foreach (string fruit in fruits)
{
	Console.WriteLine("Fruit: " + fruit);
}