Cykly
5. Řízení cyklů
V některých případech je vhodné, aby byl cyklus ukončen předčasně. K tomu můžeme použít dva příkazy:
- continue – vynechání zbytku těla cyklu
- break – přerušení cyklu
Příkaz continue vynechá zbytek těla cyklu a skočí přímo na začátek další iterace (v cyklu for je aktualizována řídící proměnná). V cyklu while a do-while je třeba dát pozor, aby došlo ke změně podmínky cyklu, jinak by mohlo dojít k nekonečné smyčce. Příkaz continue by měl být použit jen s velkou opatrností (jeho přítomnost značně komplikuje čitelnost principu kódu).
Příkaz break přeruší cyklus a program pokračuje prvním příkazem, který následuje za tělem cyklu. Nedojde ani k aktualizaci řídící proměnné a ani k vyhodnocení řídící podmínky.
Ilustrativní příklad DalsiIterace
Program DalsiIterace
- Popis: Deklarace statické hlavní metody s vynecháním zbytku těla cyklu a přeskočení do další iterace cyklu
- Zadání: Vymyslete, jak byste naprogramovali hlavní statickou metodu jako konzolovou aplikaci, která vypíše čísla od 1 do 10 s vynecháním čísla 5 ve výpisu. Čísla budou oddělena od sebe čárkou
- Řešení: Bude postupně probráno v následujícím textu
Ve výpisu vynecháme číslo 5. To provedeme pomocí příkazu continue umístěného ve větvi true, tzn., pokud je splněna podmínka, že i == 5. Příkaz continue zajistí přeskočení zbytku těla cyklu do další iterace.
Inkrementace řídící proměnné i cyklu (tzv. čítače) se děje automaticky pro každém proběhnutí iterace.
static void Main(string[] args) { /* Deklarace: 'rada' ... řada čísel určených k výpisu oddělených čárkami - inicializace; * 'i' ... řídící proměnná cyklu - čítač (vypisované číslo) */ string rada = ""; // Cyklus s krokem (proběhne 10x) for (int i = 1; i <= 10; i++) { // Pokud je řídící proměnná rovna 5, pak... if (i == 5) { // Přeskočení do další iterace continue; } // Připojení konvertovaného čísla na text a čárky do řady čísel rada += i.ToString() + ", "; } // Výpis číselné řady Console.WriteLine(rada); // Načtení stisknuté klávesy Console.ReadKey(); }
Kód 1: Deklarace hlavní metody pro výpis řady čísel s využitím příkazu pro přeskočení zbytku těla cyklu
Na následujícím výpisu v konzoli vidíme podobu výpisu výsledného textového řetězce, ve kterém chybí číslo 5 – viz Výstup programu - Kód 1.
1, 2, 3, 4, 6, 7, 8, 9, 10,
Ilustrativní příklad PreruseniCyklu
Program PreruseniCyklu
- Popis: Deklarace statické hlavní metody s přerušením cyklu
- Zadání: Vymyslete, jak byste naprogramovali hlavní statickou metodu jako konzolovou aplikaci, která vypíše čísla od 1 do 10 s vynecháním čísel 5 a výše ve výsledném výpisu řady čísel. Čísla budou oddělena od sebe čárkou
- Řešení: Bude postupně probráno v následujícím textu
static void Main(string[] args) { /* Deklarace: 'rada' ... řada čísel určených k výpisu oddělených čárkami - inicializace; * 'i' ... řídící proměnná cyklu - čítač (vypisované číslo) */ string rada = ""; // Cyklus s krokem (proběhne 10x) for (int i = 1; i <= 10; i++) { // Pokud je řídící proměnná rovna 5, pak... if (i == 5) { // Opuštění cyklu break; } // Připojení konvertovaného čísla na text a čárky do řady čísel rada += i.ToString() + ", "; } // Výpis číselné řady Console.WriteLine(rada); // Načtení stisknuté klávesy Console.ReadKey(); }
Kód 2: Deklarace hlavní metody pro výpis řady čísel s využitím příkazu pro opuštění cyklu
Na následujícím výpisu v konzoli vidíme podobu výpisu výsledného textového řetězce, ve kterém chybí čísla od 5 do 10 – viz Výstup programu - Kód 2.
1, 2, 3, 4,