10. diel - Cyklus s neznámym počtom opakovaní v Scratchi
V minulej lekcii, Cyklus s pevným počtom opakovaní v Scratchi , sme si v našom Scratch seriáli ukázali prácu s cyklom opakuj ... krát.
V dnešnom Scratch tutoriále sa naučíme používať
cyklus opakuj kým nenastane. Ukážeme si, ako ho použiť na výpis
čísel od 1
do 10
a potom vylepšíme program
kalkulačky. Nakoniec si ukážeme použitie cyklu opakuj stále a
vytvoríme aplikáciu, v ktorej si náš mačičák trochu pretiahne nohy.
Cyklus opakuj kým nenastane
Cyklus opakuj kým nenastane funguje trochu inak ako cyklus opakuj krát. Na rozdiel od opakuj krát totiž opakuje príkazy stále, kým nie je splnená podmienka v hlavičke cyklu. Ide teda o cyklus, ktorý nemá pevný počet opakovaní. Blok cyklu nájdeme opäť v blokoch Ovládanie:
Ak vás napadá, že pomocou cyklu opakuj kým nenastane možno docieliť efekt cyklu opakuj krát, máte pravdu 🙂 Cyklus opakuj kým nenastane je vlastne špeciálnym prípadom cyklu opakuj krát. Často je ale pohodlnejšie použiť cyklus opakuj kým nenastane. Využijeme ho najmä, pokiaľ dopredu nevieme, kedy sa splní nejaká podmienka a určitý blok kódu do tej doby chceme opakovať 😉
Príklady použitia cyklu opakuj kým nenastane
Poďme si urobiť niekoľko jednoduchých príkladov na precvičenie tohto cyklu.
Rad čísel
Iste si spomeniete na program Rad
čísel, ktorý sme vyrábali pomocou cyklu opakuj krát. Nechali
sme v ňom mačičiaka napočítať od 1
do 10
. Museli
sme od seba odčítať čísla a náš program bol celkom zložitý. Lepšie
povedané, nebol zložitý, ale šiel by urobiť jednoduchšie 🙂
Pomocou cyklu opakuj kým nenastane bude program vyzerať takto:
Asi sa zhodneme, že kód je prehľadnejší. Navyše nemusíme používať triky s odčítaním čísla a podobne 😉
Kalkulačka
Ako ďalšiu si vezmeme našu kalkulačku z minulých lekcií a opäť ju trochu vylepšíme. Konkrétne do nej doplníme možnosť zadať viac príkladov. Program teda hneď neskončí, ale spýta sa používateľa, či si praje spočítať ďalší príklad. Pôvodnú verziu kódu si môžeme pripomenúť v lekcii Cyklus s pevným počtom opakovaní v Scratchi a nájdeme ju aj v prílohe dnešnej lekcie. Kalkulačka funguje, ale asi nikoho úplne nebaví spúšťať zakaždým aplikáciu znova a znova, aby nám spočítala ďalšie príklady. Poďme si ukázať, ako jednoducho môžeme kalkulačku nechať bežať, kým ju „nevypneme“.
Najprv si vytvoríme novú premennú, ktorú pomenujeme
opakovat
. Potom celé telo programu zabalíme do
cyklu opakuj kým nenastane:
Pretože je kód celkom dlhý, na obrázku je vidieť iba kúsok, ale je naozaj dôležité, aby sa celý náš kód obalil do cyklu. Koniec koncov, chceme opakovať celý program, a nie iba polovicu 🙂
Pokračujme tým, že medzi počiatočný blok po kliknutí na
vlajočka a cyklus vložíme z blokov Premenné blok nastav
na. V ňom určíme, že premenná opakovat
bude mať
východiskovú hodnotu ANO
:
Do podmienky cyklu vložíme podmienku obsahuje, na ľavú stranu
dáme premennú opakovat
a na pravú stranu hodnotu
NE
:
Tým sme docielili to, že sa cyklus bude opakovať, pokiaľ nebude premenná
opakovat
obsahovať text NE
. Zároveň sme na
začiatok premennú nastavili na ANO
, takže sa cyklus spustí.
Pretože program
kontroluje iba, či je v premennej slovo NE
, môže byť namiesto
slova ANO
použité aj napríklad Luciáš
,
Česká republika
alebo Strč prst skrz krk
. Podmienka
sa v takýchto prípadoch nesplní a cyklus začne znova. Ak však zadáme napr.
slovo Škubánek
alebo nevím
, v ktorom sa
ne
vyskytuje, kalkulačka sa ukončí 🙂
Program by teraz síce fungoval, ale bežal by do nekonečna, pretože
používateľ nemá nikde možnosť zadať, že už chce program vypnúť.
Poďme to napraviť. Prejdeme na koniec programu a nad bublinu
s textom Děkuji za použití kalkulačky.
vložíme
otázku a spýtame sa v nej:
Přejete si vypočítat další příklad? ANO/NE
. Pod ňou
pridáme blok nastav... a priradíme do premennej opakovat
odpoveď užívateľa:
Nakoniec bublinu s ďakovnou hláškou presunieme za cyklus, takže mačičák nám poďakuje, až keď skutočne skončíme s používaním kalkulačky:
Keď náš program spustíme, mačičák bude počítať toľko príkladov, koľko si budeme priať:
Cyklus opakuj stále
Zo všetkého toho počítania sa mačičák musí trochu prejsť. Poďme ho rozpohybovať. Použijeme cyklus opakuj stále, ktorý sa sám nikdy nezastaví. Na rozdiel od cyklu opakuj kým nenastane mu totiž chýba podmienka, ktorá by ho ukončila 😅
Pochodujúce mačičiak
Do cyklu opakuj stále teda z blokov Pohyb umiestnime blok dopredu o 10 krokov:
Keď program pustíme, vidíme, že mačičák chodí a dôjde až za kraj obrazovky, takže potom vidíme len jeho chvost a kus labky:
Jediné, čo by nám možno mohlo trochu vadiť, je to, že nám mačičák sprosto zmizne z obrazovky bez rozlúčky:( Poďme mačičiaka naučiť slušným mravom 😉
Za blok dopredu o 10 krokov umiestnime blok keď tak a do
neho blok bublina s textom Čauky mňauky
:
Nakoniec do podmienky bloku keď tak umiestnime z blokov
Vnímanie blok dotýkaš sa a namiesto predvyplneného
ukazatele myši
vyberieme druhú možnosť okraje
:
Keď teraz program spustíme a mačičák sa chystá opustiť obrazovku, pred tým, než zmizne, sa s nami rozlúči:
Cyklus opakuj stále sme si tu ukázali skôr pre úplnosť. Možno ste si všimli, že náš program po spustení stále beží a musíme ho ukončiť červenou stopkou vedľa zelenej vlajočky. Keď potom program chceme znovu spustiť, je dokonca potrebné najprv vytiahnuť mačičák za chvost z okraja obrazovky, aby sa znovu rozpohyboval. Preto sa použitiu tohto nekonečného cyklu radšej vyhneme.
Už toho vieme celkom dosť, začína to byť zábava, však? 🙂 Kódy z dnešnej lekcie nájdete opäť na stiahnutie dole.
V budúcej lekcii, Zoznamy v Scratchi , si predstavíme zoznam. Popíšeme si základné bloky pre tvorbu zoznamov, pridanie a mazanie položiek alebo vyhľadávanie konkrétnych hodnôt.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 7x (169.34 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Scratch