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);
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;
}
i
? Čo by sa stalo, keby sme ju dali preč?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
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
}
Ú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: