Týden 4
Cyklus while a do - while
V programech je často potřeba vykonávat některé příkazy opakovaně mnohokrát po sobě. Může to být například při výpočtu algoritmu, který probíhá ve stále se opakujících krocích - výpočet minima/maxima řady čísel nebo algoritmus pro výpočet největšího společného dělitele dvou čísel. Základní konstrukcí pro zápis cyklů v jazyce C je while příkaz.
Níže je uveden příklad užití cyklu k výpisu čísel od 0 do n, kde n < 5. Před provedením těla cyklu se vyhodnotí platnost podmínky ve while. Pokud podmínka platí, je tělo cyklu provedeno, v opačném případě je cyklus opuštěn a program pokračuje dalšími příkazy.
int count = 5; /* Nacteni count ze vstupu */ int i = 0; while (i < count) { printf("Hodnota i je %d", i); i++; }
Někdy může být výhodné tělo cyklu provést alespoň jednou a až poté vyhodnotit podmínku pro opakování cyklu. K takovému účelu se v C používá konstrukce do - while.
Takto je možné opakovaně načítat číslo, dokud splňuje danou podmínku:
int n; do { printf("Zadejte kladne cele cislo: "); scanf("%d", &n); } while (n > 0);
Za závorkou, která uzavírá podmínku do - while se vždy píše středník.
Cyklus for
Cyklus for slouží především k pohodlnějšímu zápisu cyklů s předem známým počtem opakování. Příkaz cyklu umožňuje zapsat příkazy, které se provedou před prováděním cyklu, podmínku cyklu a příkazy, které se provedou po každém průchodu cyklem.
Následující příklad ukazuje sečtení čísel pomocí for cyklu:
// do sum se sectou cisla od 0 do N-1 int sum = 0; for (int i = 0; i < N; i++) { sum += i; }
Závorka příkazu for je rozdělena středníky na tři části - (prikazy_pred ; podminka ; prikazy_po):
- prikazy_pred - provedou se přímo před cyklem
- podminka - vyhodnotí se před vstupem do těla cyklu, stejné jako u cyklu while
- prikazy_po - provedou se po každém průchodu cyklem