IB001 – Seminární skupiny 6, 7 a 24

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