Pri programovaní sa často stretneme s tým, že máme niečo urobiť viackrát za sebou.
Tento jednoduchý program nakreslí zvislú čiaru.
size(400, 400);
line(50, 0, 50, height);
size(400, 400)
line(50, 0, 50, height)
Napr. program, ktorý nakreslí 40 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);
// ... atď. ...
line(390, 0, 390, height);
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);
# ... atď. ...
line(390, 0, 390, height);
Aby sme opakujúce sa časti programu nemuseli trápne písať a prepisovať v nich číselká,
môžeme použ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;
}
size(400, 400);
i = 0;
while (i < width):
line(i, 0, i, height);
i = i + 10;
size(400, 400);
int i = 0; // riadiaca premenna cyklu
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, sefe!"); // prikaz, ktory uz nepatri do tela cyklu
// vykona sa saz po skonceni prikazu while
size(400, 400);
i = 0; # riadiaca premenna cyklu
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, sefe!"); # prikaz, ktory uz nepatri do tela cyklu
# vykona sa saz po skonceni prikazu while
Výsledok je toto:
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ôsobujú jeho nesprávne fungovanie/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
}
Ú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: