87 lines
3.2 KiB
Markdown
87 lines
3.2 KiB
Markdown
|
# 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;
|
|||
|
|