# Cykly - opakování části kódu - základní pojmy: - **řídící proměnná cyklu** - Proměnná, na které závisí ukončení cyklu - Nejčastěji bývá pouze jedna - **podmínka ukončující cyklus** - Logický výraz – cyklus končí, pokud je jeho výsledek false - **hlavička cyklu** - Klíčové slovo určující typ cyklu (for, while nebo do) a výrazy v následujících kulatých závorkách - **tělo cyklu** - příkazy ve složených závorkách (tj. tvořící blok), které se mají opakovaně provést - Přestavuje výkonný kód ### Cyklus s podmínkou na začátku (cyklus while) - Vhodný v případě, že ukončovací podmínka závisí na nějakém výrazu uvnitř cyklu - Není dopředu jasné, kolikrát cyklus proběhne - Např. načtení nějakých hodnot až do jejich vyčerpání (např. ze souboru) - Podmínka, zda má být cyklus proveden se testuje PŘED vykonáním těla cyklu - syntaxe: ```java while (výraz) { příkaz1; příkaz2; … } ``` ### Cyklus s podmínkou na konci (cyklus do – while) - Velmi podobný cyklu while - Používá se ale mnohem méně (v Javě) - Podmínka, zda má být cyklus ukončen, se testuje **PO** vykonání těla cyklu - Tělo cyklu se provede, pak se otestuje podmínka, a pokud je splněna, tělo cyklu se provede znovu - Cyklus tedy proběhne minimálně jednou - syntaxe: ```java do { příkaz1; příkaz2; … } while (výraz); ``` ### Cyklus se známým počtem opakování (cyklus for) - Vhodný v případě, že jsou předem známá omezující kritéria - Počáteční a koncová hodnota řídící proměnné a její způsob ovlivnění v každé obrátce cyklu - V mnoha případech to znamená, že je známý počet opakování - Podmínka, zda má být cyklus proveden, se testuje PŘED vykonáním těla cyklu - Cyklus tedy nemusí proběhnout ani jednou - Inicializace je nastavení počáteční hodnoty řídící proměnné cyklu a často i její deklarace, typicky ``` int i = 0 ``` - Ukončovací podmínka je logický výraz, který by měl obsahovat řídící proměnnou, typicky ``` i < hodnota ``` - Změna řídící proměnné je příkaz, který mění hodnotu řídící proměnné, typicky se jedná o inkrementaci ``` (i++) ```, ale může to být i jiný výraz (např. ``` i += 2 ```) - syntaxe: ```java for (inicializace; ukončovací podmínka; změna řídící proměnné) { příkaz1; příkaz2; … } ``` - Zkrácený zápis pro procházení polí a kolekcí ```java int[] pole = {6, 7, 8, 9}; //Deklarace pole s inicializaci, bude vysvetleno for (int prvek: pole) { System.out.println("Prvek pole: " + prvek); } ``` ### Příkazy break; a continue; - Příkazy, které ovlivňují chování cyklu nezávisle na řídící proměnné - Mohou být použity u všech tří cyklů - Pokud jsou cykly vnořeny do sebe, ovlivňují tyto příkazy cyklus, ve kterém jsou bezprostředně uvedeny - ``` break; ``` - Okamžitě ukončí cyklus - Používá se pro předčasné ukončení cyklu (např. při výskytu chyby) či pro řádné ukončení nekonečného cyklu - ``` continue; ``` - Skočí na konec těla cyklu, čímž si vynutí další obrátku (iteraci) cyklu - Cyklus neskončí - Používá se méně než break;