Cykly
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.

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