Cyklus

Obrázky ako podľa pravítka

Pri programovaní sa často stretneme s tým, že máme niečo urobiť viackrát za sebou.

Tento jednoduchý program nakreslí zvislú čiaru.

Processing v režime Java:

size(400, 400);
line(50, 0, 50, height);

Príklad. Napíš program, ktorý nakreslí 15 rovnakých zvislých čiar vedľa seba s rozostupom 10 bodov, by mohol vyzerať takto:

size(400, 400);
line(0, 0, 0, height);
line(10, 0, 10, height);
line(20, 0, 20, height);
line(30, 0, 30, height);
line(40, 0, 40, height);
line(50, 0, 50, height);
line(60, 0, 60, height);
line(70, 0, 70, height);
line(80, 0, 80, height);
line(90, 0, 90, height);
line(100, 0, 100, height);
line(110, 0, 110, height);
line(120, 0, 120, height);
line(130, 0, 130, height);
line(140, 0, 140, height);

Cyklus "while"

Aby sme opakujúce sa časti programu nemuseli trápne kopírovať a prepisovať v nich číselká na iné, môžeme využiť príkaz while. S jeho pomocou sa zápis výrazne skráti.

Vyššie uvedený program, zapísaný pomocou cyklu.

size(400, 400);
int i = 0;

while (i < width) {
    line(i, 0, i, height);
    i = i + 10;
}

Štvorcový príklad s počítadlom

Teraz ešte viac využijeme prepočty s výrazmi. Premenná bude slúžiť ako počítadlo, a počet opakovaní bude zrejmý na prvý pohľad.

    size(400, 400);
    int i = 0;                        // riadiaca premenna cyklu - počítadlo

    while (i < 10) {                 //  hlavicka cyklu
        rect(i*40, 0, 30, 30);    // telo cyklu, nakresli 10 stvorcov 30 x 30, 10 bodov
        i = i + 1;
    }

    print("Hotovo, šéfe!");       // prikaz, ktory uz nepatri do tela cyklu
                                  // vykona sa saz po skonceni prikazu while

Otázka: Na ktorom riadku vieš hneď zistiť, koľko štvorcov sa celkovo vykreslí?

Výsledok je toto:


Cyklus "for"

Cyklus for robí to isté ako cyklus while, ale je zapísaný úspornejšie. A tiež rieši častý problém programátorov, že zabudnú na niektorú zo zložiek cyklu while, ktoré spôsobia zacyklenie.

Nasledujúci príklad kreslí tie isté štvorce ako príklad s príkazom while.

    int i;

    for (i = 0; i < 10; i = i+1) {               //  hlavicka cyklu
        rect(i*40, 0, 30, 30);    // telo cyklu, nakresli 10 stvorcov 30 x 30, 10 bodov
    }

cyklus-priklad-stvorce-na-ciare


Úloha Pomocou jedného cyklu while s riadiacou premennou nakresli tieto obrázky, alebo si vymysli vlastné, podobné (1 bod za obrázok, max. 3. b):


Na tieto príklady je potrebné trošku viac porozmýšľať a prepočítavať, (nepovinné).

Alternatívne môžeš skúsiť verziu siete s farbou a alfa priesvitnosťou: