FAV-ZCU/KIV PPA1/3. Cykly.md

3.2 KiB
Raw Permalink Blame History

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:
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:
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:
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í
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;