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:
Inicializace – vždy proběhne právě jednou, a to na začátku cyklu
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
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);}