3. Cyklus s podmínkou na konci

Cyklus s podmínkou na konci je dalším typem podmíněného cyklu, jehož tělo cyklu je prováděno do té doby, dokud je splněna podmínka, tzn., větev True za rozhodovacím blokem ve vývojovém diagramu – viz Obrázek 1. Pokud nastane situace, že podmínka není splněna, tělo uvnitř smyčky cyklu již není nadále prováděno. Opuštění cyklu je tedy pomocí větve False, tzn., že podmínka není splněna. Je vhodné podotknout, že tělo uvnitř cyklu musí být provedeno vždy minimálně jednou, protože testování řídící podmínky, která určuje, zda bude cyklus dále prováděn, následuje až po vykonání příkazů uvnitř těla cyklu.

Značka cyklu s podmínkou na konci – vývojový diagram

Obrázek 1: Značka cyklu s podmínkou na konci – vývojový diagram

Obecná syntaxe cyklu s podmínkou na konci v jazyce C#:

do 
	těloCyklu
while (řídícíPodmínka);

kde:

  • řídícíPodmínka - představuje logický výraz, který je vyhodnocen. řídícíPodmínka musí být zapsána do kulatých závorek a musí být logického typu
  • těloCyklu - příkaz (nebo složený příkaz uzavřený do složených závorek), který je proveden pokud platí, že výsledek výrazu v řídící podmínce je true. Proces provádění těla cyklu se opakuje, dokud je splněna řídícíPodmínka. Opuštění cyklu nastává tehdy, pokud řídící podmínka je vyhodnocena jako false


Pro ilustraci principu použití cyklu s podmínkou na konci využijeme modifikovanou verzi příkladu Kalkulacka s reálnými čísly. 


Ilustrativní příklad ZadejKodOperace

Algoritmus ZadejKodOperace

  • Popis: Vývojový diagram funkce pro zadání číselného kódu operace pomocí cyklu s podmínkou na konci
  • Zadání: Zkuste navrhnout funkci ZadejKodOperace, která řeší zadání platného číselného kódu podle vypsaného číselníku kódů aritmetických operací pomocí cyklu s podmínkou na konci. Zadání číselného kódu bude probíhat neustále, dokud nebude definován validní (správný) číselný kód aritmetické operace (1 … sčítání, 2 … odečítání, 3 … násobení, 4 … dělení)


Program ZadejKodOperace
  • Popis: Deklarace metody s návratem s použitím cyklu s podmínkou na konci
  • Zadání: Vymyslete, jak byste na základě předchozího algoritmu ZadejKodOperace v C# naprogramovali statickou metodu s návratem (se stejným názvem) jako konzolovou aplikaci
  • Řešení: Bude postupně probráno v následujícím textu


V následujícím zdrojovém kódu vidíme, že metoda navrací kód aritmetické operace jako celé číslo - viz Kód 1. Podmínkou tohoto číselného kódu (uloženého v proměnné kodOperace) je, že se jeho hodnota musí pohybovat v rozmezí 1 až 4. Toho docílíme tak, že v podmínce za klíčovým slovo while uvedeme do kulatých závorek logický výraz (kodOperace < 1 || kodOperace > 4). Tento výraz představuje podmínku, že pokud načtená hodnota uložená v kódu operace splní kritérium, tj., že je menší než 1, nebo že je hodnota větší než 4, bude řídící podmínka splněna a příkazy uvnitř těla cyklu (výpis textu pro uživatele a načtení kódu z klávesnice) proběhnou znovu. Pokud tato podmínka splněna není (logický výraz v řídící podmínce nabyde hodnoty false), je cyklus ukončen a metoda vrací načtenou validní hodnotu aritmetické operace.

//Metoda s návratem - zadání kódu aritmetické operace
public static int ZadejKodOperace()
{
    //Deklarace proměnné: 'kodOperace' ... číselný kód aritmetické operace
    int kodOperace;
    //Cyklus s podmínkou na konci - zadání číselného kódu aritmetické operace
    do
    {
        //Výpis textu pro uživatele - výzva k zadání kódu číselné operace
        Console.WriteLine("Zadejte kód operace (1 … sčítání, 2 … odečítání, 3 … násobení, 4 … dělení):");
        //Načtení kódu aritmetické operace
        kodOperace = int.Parse(Console.ReadLine());
    }
    // Testování podmínky, pokud zadaný kód operace je menší než 1 nebo větší než 4, zadávání se znovu opakuje
    while (kodOperace < 1 || kodOperace > 4);
    //Validní číselný kód aritmetické operace je výstupem funkce
    return kodOperace;
}

Kód 1: Deklarace metody ZadejKodOperace - příklad cyklu s podmínkou na začátku