Skip to content

Latest commit

 

History

History
82 lines (66 loc) · 3.01 KB

3.Lekcia.md

File metadata and controls

82 lines (66 loc) · 3.01 KB
layout title
page
3. Lekcia

Cyklus while

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.

Cvičenie

  • 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 cykly while.

  • Skúste si prepísať dalšie programy, ktoré používajú for tak, aby používali iba while (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):

  1. Čo bude výstupom tohto kódu?
  2. Ak presunieme riadokint c = 0; pod riadok int i = 1;, bude dávať program stále rovnaký výstup?
  3. Ak vymeníme riadok c += 1 s riadkom i += 1, bude program dávať stále rovnaký výstup?

Logické výrazy