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
V hlavní statické metodě jsme nejprve deklarovali lokální proměnnou rada a inicializovali ji prázdným textem - viz Kód 1. Pro získání číslice, kterou umístíme do vypisované řady, použijeme cyklus s krokem, tj. příkaz for, ve kterém nastavíme řídící proměnnou na počáteční hodnotu 1. Horní mez řídící proměnné nastavíme na hodnotu 10 a inkrementaci řídící proměnné budeme provádět o hodnotu 1, tj. využijeme operátor ++.  Číslo, které získáme konverzí celočíselné hodnoty uložené v řídící proměnné pomocí metody ToString vyvolané pomocí tečkové notace, budeme do řady připojovat pomocí operátoru složeného přiřazení, tj. +=  . Za vypsané číslo připojíme čárku. 

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
Princip příkladu je totožný s předchozím příkladem, nyní však v cyklu použijeme příkaz break, který nám zajistí opuštění cyklu a vykonání následujících příkazů umístěných za cyklem - viz Kód 2.

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,