Cyklus môže vo svojom tele obsahovať príkazy. Cyklus je tiež príkaz. Môže teda cyklus vo svojom tele obsahovať aj cyklus? Odpoveď je áno, a je to často užitočné.
Obrázky usporiadané do štvorcovej siete často spravíš len tak, že použiješ cyklus vo vnútri iného cyklu:
Toto je kód, ktorý tento obrázok nakreslí.
def setup():
size(400, 400);
r = 0;
while r < 10:
s = 0;
while s < 10:
rect(40*s, 40*r, 30, 30);
s += 1;
r += 1;
print("Hotovo, sefe!");
r += 1
je skráteným zápisom priradenia r = r + 1
, čiže zväčšenie hodnoty premennej r
o 1. Podobne existujú aj operátory -=
, *=
, /=
. Skús sám pre seba povedať, čo presne robia.Úlohy 2. Nakresli nasledujúce obrázky. (spolu 10b)
Využi pritom príkaz while
vo vnútri iného cyklu while
a dve riadiace premenné riadok
a stĺpec
.
Tiež pomocou vnoreného cyklu
**Nepovinné (pre machrov):
**
Na striedanie farieb môžeme použiť malú fintu v podobe matematickej operácie modulo. Operácia MODULO vypočíta zvyšok po delení celého čísla iným celým čislom. Často sa používa s deliteľom 2, na zisťovanie parity čísla (párne/nepárne).
4 % 2 # výsledok výrazu je 0, lebo párne číslo dáva pri delení zvyšok 0
5 % 2 # výsledok je 1, nepárne číslo dáva pri delení 2 zvyšok 1
Keď hodnotu modulo počítame pri každom prechode cyklu z hodnoty riadiacej premennej, vieme každý druhý (každý tretí, štvrtý, piaty...) nakreslený útvar kresliť inou farbou.
Program na to by mohol vyzerať napr. takto:
if (i % 2 == 0):
fill(0);
else:
fill(255);
rect(40*i, 0, 40, 40);
Alebo inak: Hádaj, čo nakreslí tento program?
i = 0;
while (i < 10):
if (i % 2 == 0):
fill(0);
else:
fill(255);
rect(40 * i, 0, 40, 40);
No a teraz sa pokús využiť poznatky z tejto kapitoly na nakreslenie takejto šachovnice.