====== Cykly - while, do... while, for, break, continue ====== ==== Cyklus for ==== Jedná se o cyklus, ve kterém jsou předem známa omezovací kritéria. Těmi jsou : počáteční hodnota, ukončující podmínka a ovlivnění řídící proměnné. Cyklus //for// má následující syntaxi : for (výraz_start;výraz_stop;výraz_iterace) příkaz; **Jak to funguje?** Při prvním vstupu do cyklu se vyhodnotí //výraz_start//, pak se otestuje //výraz_stop// a pokud je pravdivý provede se //příkaz//. Potom se provede //výraz_iterace// a cyklus běží znovu. Při druhém a dalším cyklu se již nevyhodnocuje //výraz_start//. Pokud je //výraz_stop// nepravdivý, cyklus se ukončí. Pro kód : for (int i = 1;i < 6;i++) System.out.println("AHOJ"); je výsledkem vypsání pěti řádků s textem AHOJ. Pokud je potřeba v těle cyklu použití více příkazů, vkládají se do bloku odděleného složenými závorkami. for (výraz_start;výraz_stop;výraz_iterace){ příkaz1; příkaz2; příkaz3; } __**Poznámka**__ Výrazy //výraz_start//, //výraz_stop// a //výraz_iterace// se nutně nemusí nacházet v hlavičce cyklu. Potom je ale nezbytné uvést středníky! Navíc se v případě absence //výraz_stop// může stát smyčka nekonečná! ==== Cyklus while ==== Cyklus //while// má následující syntaxi : while (logický_výraz) příkaz **Jak to funguje?** Otestuje se //logický_výraz// a pokud je pravdivý, program vstoupí do cyklu a provede se //příkaz//. Toto se stále opakuje a pokud //logický_výraz// již není pravdivý, je cyklus opuštěn. Cyklus //while// se používá tehdy, pokud je podmínka pro jeho ukončení závislá na některém příkazu uvnitř cyklu. Pokud //logický_výraz// nebude pravdivý, příkaz v cyklu se nikdy neprovede. Pokud je potřeba v těle cyklu použití více příkazů, vkládají se do bloku odděleného složenými závorkami. while(logický_výraz){ příkaz1; příkaz2; příkaz3; } Pro kód : int i = 1; while (i < 6){ System.out.println("AHOJ"); i++; } je výsledkem vypsání pěti řádků s textem AHOJ. __**Poznámka**__ Pokud je //logický_výraz// **splněn vždy** lze tímto způsobem vytvořit nekonečný cyklus! ==== Cyklus do while ==== Cyklus //do while// má následující syntaxi : do { příkaz/y; }while (logický_výraz); **Jak to funguje?** Program vstoupí do cyklu a provede příkaz/y. Otestuje se //logický_výraz// a pokud je pravdivý, cyklus se opakuje. Pokud //logický_výraz// již není pravdivý, je cyklus opuštěn. Je zřejmé, že narozdíl od cyklu //while// jsou příkazy provedeny minimálně jednou. Pro kód : int i = 1; do { System.out.println("AHOJ"); i++; }while (i < 6); je výsledkem vypsání pět řádků s textem AHOJ. __**Poznámka**__ Pokud je //logický_výraz// **splněn vždy** lze tímto způsobem vytvořit nekonečný cyklus! ==== Skokové příkazy break, continue, return ==== === Příkaz break === Příkaz //break// ukončuje nejvnitřnější neuzavřenou smyčku - ihned opouští cyklus. int i; for (i = 1; i <= 10; i++){ System.out.print(i+" "); if (i = 5) break; System.out.print("dalsi cislo ") } vypíše na výstup toto: 1 dalsi cislo 2 dalsi cislo 3 dalsi cislo 4 dalsi cislo 5 === Příkaz continue === Příkaz //continue// skáče na konec nejvnitřnější neuzavřené smyčky a vynutí si další iteraci (pokud se vyhoví podmínkám). Program : int i; for (i = 1; i <= 10; i++){ System.out.print(i+" "); if (i >= 5) continue; System.out.print("dalsi cislo ") } Vypíše na výstup toto: 1 dalsi cislo 2 dalsi cislo 3 dalsi cislo 4 dalsi cislo 5 6 7 8 9 10 === Příkaz return === Příkaz //return// ukončí provádění metody (funkce), která jej obsahuje. Pokud je napsán v hlavním programu (//metoda main())// je tento ukončen.