Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Cyklus opakuj kým nenastane - Scratch

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:

Program Rad s cyklum opakuj kým nenastane - Scratch

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:

Telo kalkulačky v cykle - Scratch

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:

Nastav opakovať na ÁNO - Scratch

Do podmienky cyklu vložíme podmienku obsahuje, na ľavú stranu dáme premennú opakovat a na pravú stranu hodnotu NE:

Podmienka v cykle - Scratch

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:

Nastavenie opakovania na konci programu - Scratch

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:

Hláška sa vypíše až na koniec - Scratch

Keď náš program spustíme, mačičák bude počítať toľko príkladov, koľko si budeme priať:

Mačičák počíta hafo príkladov - Scratch

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:

Program chodiaceho mačičiaka - Scratch

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:

Mačičák chodí preč - Scratch

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:

Mačičák sa chystá byť vychovaný - Scratch

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:

Mačičák je vychovaný kód - Scratch

Keď teraz program spustíme a mačičák sa chystá opustiť obrazovku, pred tým, než zmizne, sa s nami rozlúči:

Mačičák chodí preč a zdravie - Scratch

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é 5x (169.34 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Scratch

 

Predchádzajúci článok
Cyklus s pevným počtom opakovaní v Scratchi
Všetky články v sekcii
Scratch
Preskočiť článok
(neodporúčame)
Zoznamy v Scratchi
Článok pre vás napísal PDoctor
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity