Cykly jsou dalším základním stavebním prvkem všech algoritmů a programů. Cykly se v programování používají tehdy pokud chceme nějakou konkrétní činnost (klidně i funkci nebo proceduru) několikrát opakovat. V praxi sel lze setkat i se situacemi, kdy dopředu nevíme, kolikrát se bude daná část kódu opakovat.
<aside> 👉 Iterace = opakování cyklu! 0. iterace = první volání těla cyklu
</aside>
<aside>
☝ Veškerý kód níže je psány uvnitř funkce main()
!
</aside>
<aside>
☝ Před cykly je dobré si zopakovat základní části co známe o jazyku C
:
</aside>
for
for
cyklus je obecně použitelný tehdy, pokud dopředu víme, kolikrát chceme danou část kódu opakovat (iterovat). Je potřeba si říct že nemusíme dopředu.
Takový ukázkový cyklus for
může být následující tvrzení: Vyskoč 5x
. Tedy 5x vykonáte stejnou funkci (vyskočíte).
Vyskoč 5x
for
for (initExpression; testExpressionCondition; updateExpression) {
// kód, funkce a procedury, které chcete vykonat
}
initExpression
se provede (jednou) před provedením těla cyklu.
testExpressionCondition
definuje podmínku pro provedení bloku kódu.
updateExpression
se provede (pokaždé) po provedení těla cyklu.
Krok | Akce |
---|---|
1. | Nastaví se proměnná |
2. | Kontroluje se podmínka s proměnnou |
3. | Vykoná se tělo |
4. | Aktualizuje se proměnná |
<aside>
💡 Cyklus for
stejně jako všechny ostatní cykly používáme ve funkcích nebo procedurách. Tento cyklus ze složen z definice proměnné, podmínky, těla a iterátoru. Tělo se vykonává tolikrát. kolikrát je splněna podmínka. Podmínka je stejná jako u podmínek a větvení.
</aside>
for
int i; // definice proměnné
for (i = 0; i < 5; i++) { // nastavení cyklu dle syntaxe
printf("%d\\n", i); // výpis do konzole v každé iteraci
}
Tento cyklus definuje proměnnou i
(tato proměnná je dostupná i po dokončení cyklu - všech iterací a zůstává na posledním nastaveném čísle z poslední iterace) následně ji předává a nastavuje na 0 cyklu for
kde se kontroluje podmínka i < 5
pokud je podmínka pravdivá, tedy i
je menší jak 5 vykoná se tělo cyklu, v tomto případě funkce print
. Po dokončení těla je vykonána akce i++
, které k původnímu i
přidá +1.
Iterace | i |
---|---|
0. iterace | 0 |
1. iterace | 1 |
2. iterace | 2 |
3. iterace | 3 |
4. iterace | 4 |
<aside>
👉 Iterace začínají vždy od 0
i
nemusí začínat na 0, záleží jak jej nastavíme.
</aside>
// ukázka dkyž i nezačína od 0
// také se jedná o změnšování i
for (int i = 5; i > 0; i--) { // nastavení cyklu dle syntaxe
printf("%d\\n", i); // výpis do konzole v každé iteraci
}
for
for (int i = 0; i < 5; i++) { // nastavení cyklu dle syntaxe
printf("%d\\n", i); // výpis do konzole v každé iteraci
}
V této ukázce se děje to samé jako v ukázce výše s jedním rozdílem. proměnnou i
definuji pouze pro tento cyklus, tedy po vykonání cyklu (dokončení všech iterací) nebude už platit a není definována. Uvolní se z paměti.
while
while
cyklus se využívá pokud nevíme přesně kolik opakování (iterací) chceme provést, ale víme, že to chceme provádět, dokud je platná určitá podmínka.
Takový ukázkový cyklus while
může být následující tvrzení: Pokud neprší, skákej
. Tedy vykonávat stále dokola stejnou funkci (vyskočíte) pokud nebude pršet, jak bude pršet cyklus skončí a vy už nebudete skákat. Pokud již prší, skákání ani nezačne!
while
while (testExpressionCondition) {
// kód, funkce a procedury,
// které chcete vykonat
}
testExpressionCondition
definuje podmínku před provedení bloku kódu.
Krok | Akce |
---|---|
1. | Nastaví se proměnná před cyklem |
2. | Kontroluje se podmínka s proměnnou |
3. | Vykoná se tělo, které může ovlivnit proměnnou |
<aside>
💡 Cyklus while
stejně jako všechny ostatní cykly používáme ve funkcích nebo procedurách. Tento cyklus ze složen z podmínky a těla. Tělo se vykonává tolikrát. kolikrát je splněna podmínka. Podmínka je stejná jako u podmínek a větvení.
</aside>