If you're seeing this message, it means we're having trouble loading external resources on our website.

Pokud používáš webový filtr, ujisti se, že domény: *.kastatic.org and *.kasandbox.org jsou vyloučeny z filtrování.

Hlavní obsah

Shrnutí: Cykly

Zde je přehled toho, co jsme probrali v lekci o cyklech.
Když píšeme programy, často zjišťujeme, že chceme znovu a znovu opakovat nějaký kus kódu, nebo jej třeba opakovat, ale přitom i něco pokaždé změnit. Abychom si ušetřili psaní celého kódu znovu a znovu, můžeme použít cykly. JavaScript má dva druhy cyklů, while a for.
Cyklus while (někdy se v češtině označuje jako cyklus s podmínkou na začátku) opakuje kód, dokud není jeho podmínka nepravdivá. Například tento cyklus zobrazí hodnotu y v bodě (30, y) dokud je y menší než 400. Cyklus pokaždé přičte 20 k y, takže hodnota y začíná na 40, ale pak se zvyšuje na 60, 80, 100, 120, atd.
var y = 40;
while (y < 400) {
    text(y, 30, y);
    y += 20;
}
Je důležité, aby se podmínka uvnitř závorky v určitém okamžiku stala nepravdivou - jinak se stane to, co je známo jako nekonečný cyklus! To by se stalo, kdybychom odstranili y += 20, protože hodnota y by byla pokaždé 40, což je méně než 400, a program by nikdy nezjistil, kdy se má zastavit.
var y = 40;
while (y < 400) {
    text(y, 30, y);
}
Cyklus for (někdy se v češtině označuje jako cyklus s s daným počtem opakování) je podobný jako cyklus while, ale má více specializovanou syntaxi. Programátoři cyklus for zavedli, když si uvědomili, že vlastně pokaždé psali ty samé kusy kódu - vytvoření proměnné počítadla cyklu (v našem případě proměnná y), zvýšení této hodnoty, a ověření, že výsledná hodnota je menší než nějaká definovaná hodnota. Cyklus for má jasně daný zápis pro každou z těchto tří věcí. Zde je kód toho samého cyklu, ale pomocí cyklu for:
for (var y = 40; y < 400; y += 20) {
    text(y, 30, y);
}
Cykly mohou být také vnořené. Vnořené cykly se celkem běžně používají, obzvláště v dvourozměrných výkresech, jelikož ulehčují kreslení tvarů podobných mřížce. Když vnoříme cyklus do jiného cyklu, tak vlastně říkáme programu, aby "udělal nějakou věc X několikrát, a pokaždé, kdy to udělá, aby zároveň také vykonal věc Y několikrát." Přemýšlej o vykreslení mřížky - programu chceme říct, aby "vytvořil sloupec 10 krát, a uvnitř každého sloupce vytvořil 15 buněk." Zde je ukázka jak toho docílit:
for (var col = 0; col < 10; col++) {
    for (var row = 0; row < 15; row++) {
        rect(col*20, row*20, 20, 20);
    }
}
Kdy bys měl použít cyklus for nebo while? To záleží čistě na tobě. Mnoho programátorů dává přednost cyklům for, protože je tak těžší omylem vytvořit nekonečný cyklus (je těžší zapomenout zvyšovat hodnotu proměnné počítadla), ale někdy cyklus while dává větší smysl. Vyzkoušej si proto oba cykly!

Chceš se zapojit do diskuze?

Zatím žádné příspěvky.
Umíš anglicky? Kliknutím zobrazíš diskuzi anglické verze Khan Academy.