layout | title |
---|---|
page |
3. Lekcia |
V minulej lekcii sme si priblížili cyklus for
, ktorý je jedným z
najpoužívanejších operátorov, s akými sa môžeme pri písaní Java programov
(alebo aj ich čítaní) stretnúť. Okrem for
-u existuje ešte jeden operátor,
vďaka ktorému môžeme príkazy opakovať. Volá sa while
a budeme sa ním zaoberať
počas väčšej časti tejto lekcie.
V minulej lekcii si ukazovali použitie cyklu for
na nasledujúcom príklade (ak
neviete z hlavy povedať, čo spraví, kľudne si ho znova skúste spustiť):
int i;
for(i = 1; i < 10; i += 1){
System.out.println("Hello World!");
}
Skúsme teraz tento príklad prepísať s použitím cyklu while
:
int i;
while(i < 10) {
System.out.println("Hello World!");
i += 1;
}
V prvom rade si môžeme všimnúť, že príliš veľký rozdiel medzi týmito tvoma
príkladmi nieje. Cyklus while
je o čosi jednoduchší ako cyklus for
, a preto
môžeme aj jednoducho voľne preložiť ako 'kým je splnené to, čo je v
jednoduchých zátvorkách, vykonávaj príkazy, ktoré sú v množinových zátvorkách'.
Pri takejto interpretácii už nieje problém plne porozumieť vzťahu cyklov for
a while
. V konečnom dôsledku sa ukazuje, že cyklus for
je vlastne len
jednoduchší (kratší) spôsob zapisovania toho, čo robí cyklus while
.
Kritická časť (teda taká, ktorej je treba naozaj dobre porozumieť) v predchádzajúcej voľnej definícii cyklu while je práve 'je splnené to, čo je v jednoduchých zátvorkách'. Čo to znamená 'je splnené'?. Odpoveďou na túto otázku by sa dala vyplniť dalšia lekcia, my sa uspokojíme s jedným odstavcom.
-
Prepíšte príklad piramídy s hviezdičkami z minulej lekcie, v ktorej sme ju robili za pomoci cyklu
for
tak, aby váš kód vyprodukoval rovnaký výstup a používal iba cyklywhile
. -
Skúste si prepísať dalšie programy, ktoré používajú
for
tak, aby používali ibawhile
(dbajte na to, aby dávali rovnaký výsledok). Ktorý z cyklov sa Vám používa jednoduchšie? Narazili ste pri prepisovaní kódu na nejaké problémy? Viete vysvetliť prečo vznikli? -
Uvažujme nasledujúci kus kódu
int i = 1;
while(i < 10) {
int c = 0;
while(c < i) {
System.out.print("*");
c += 1;
}
System.out.println("");
i += 1;
}
a skúste odpovedať na nasledujúce otázky (najprv bez spustenia samotného kódu a potom svoje odpovede overte spustením príslušného kódu):
- Čo bude výstupom tohto kódu?
- Ak presunieme riadok
int c = 0;
pod riadokint i = 1;
, bude dávať program stále rovnaký výstup? - Ak vymeníme riadok
c += 1
s riadkomi += 1
, bude program dávať stále rovnaký výstup?