Cykly
2. Cyklus s podmínkou na začátku
Cyklus s podmínkou na začátku je první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 symbolizuje větev False, kdy podmínka není splněna. Je vhodné podotknout, že tělo uvnitř cyklu nemusí být provedeno ani jednou, pokud by hned v počátku při průchodu podmínkou nastala situace, že podmínka není splněna.

Obrázek 1: Značka cyklu s podmínkou na začátku – vývojový diagram
Obecná syntaxe cyklu s podmínkou na začátku v jazyce C#:
while (řídícíPodmínka) těloCyklu
kde:
- řídícíPodmínka - 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, pokud je splněna řídícíPodmínka
Velmi často se jako identifikátor řídící proměnné používá písmeno i. Cykly lze také zapouzdřovat do sebe, tak jak tomu bylo např. u rozhodování. Pak se jako identifikátory těchto řídících proměnných vnořených cyklů používají další písmena pokračující v abecedě za písmenem i, tedy j, k, l atd. My tento zvyk v následujících příkladech algoritmů porušíme. Jedná se nám zejména o zachycení podstaty proměnné pomocí jejího názvu.
Opakování je matka moudrosti, proto se vraťme zpět k modifikované verzi příkladu Kalkulacka, tentokráte však použijeme při aritmetické operaci dělení reálná čísla.
Ilustrativní příklad VydelParametry
Algoritmus VydelParametry
- Popis: Vývojový diagram funkce pro dělení zadaných reálných čísel pomocí cyklu s podmínkou na začátku
- Zadání: Na základě rozdělení aritmetických operací v algoritmu Kalkulacka do podprogramů, tj. KalkulackaPodprogramy, modifikujte funkci VydelParametry, která provádí aritmetickou operaci dělení dvou zadaných čísel, které jsou vstupními argumenty této funkce (formální parametry). Oproti předchozí verzi algoritmu však nyní bude pracovat s dvěma reálnými čísly. Řešte tento problém pomocí cyklu s podmínkou na začátku. Uvnitř cyklu opakujte zadání hodnoty jmenovatele pomocí funkce ZadejCislo, dokud je jmenovatel nulový
Řešení:
Podprogramy - funkce:
Program VydelParametry
- Popis: Deklarace metody s návratem s použitím cyklu s podmínkou na začátku
- Zadání: Vymyslete, jak byste na základě předchozích algoritmů podprogramů ZadejKodOperace a ZadejCislo v C# naprogramovali obě statické metody (s identický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 je implementována metoda s návratem VydelParametry, která zajišťuje zadání nenulového jmenovatele – viz Kód 1. Validace na nenulový jmenovatel je realizováno pomocí cyklu s podmínkou na začátku pomocí logického výrazu (podmínky) bb == 0. V těle cyklu je prováděno načtení hodnoty reálného čísla pomocí metody s návratem s názvem ZadejCislo – viz Kód 2. Toto zadávání reálného čísla se bude provádět do té doby, dokud platí řídící podmínka uvedená v kulatých
závorkách za příkazem while, tj. pokud uživatel zadá nulové reálné číslo.
//Metoda s návratem - navrací hodnotu podílu dvou reálných předaných hodnot public static double VydelParametry(double aa, double bb) { /* Deklarace lokální proměnné 'cc' ... slouží pro uložení hodnoty podílu načtených hodnot * předaných z hlavního programu uložených do formálních parametrů 'aa' a 'bb' */ double cc; // Test, zda nebyl načten nulový jmenovatel while (bb == 0) { // Pokud je jmenovatel nulový následuje zadání nového jmenovatele bb = ZadejCislo("nenulové B"); } // Provedení podílu hodnot uložených v formálních parametrech funkce a uložení do lokální proměnné 'cc' cc = aa / bb; // Hodnota v 'cc' je výstupem metody return cc; }
Kód 1: Deklarace metody VydelParametry - příklad cyklu s podmínkou na začátku
Následující kód obsahuje deklaraci metody s návratem pro zadání nového reálná čísla, které představuje jmenovatele v podílu - viz Kód 2.
//Metoda s návratem - navrací zadané reálné číslo public static double ZadejCislo(string nazevParametru) { //Deklarace lokální proměnné 'cc' ... výstupní reálné číslo double xx; // Výpis definovaného textu spolu s textem uloženým v 'NazevParametru' Console.WriteLine("Zadejte " + nazevParametru + ":"); // Načtení textu a konverze na reálnou hodnotu a uložení do proměnné 'xx' xx = double.Parse(Console.ReadLine()); // Přiřazení hodnoty v 'xx' do výstupu metody return xx; }
Kód 2: Deklarace metody ZadejCislo