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í.

Lekce 10 - Cyklus s neznámým počtem opakování ve Scratchi

V minulé lekci, Cyklus s pevným počtem opakování ve Scratchi, jsme si v našem Scratch seriálu ukázali práci s cyklem opakuj ... krát.

V dnešním Scratch tutoriálu se naučíme používat cyklus opakuj dokud nenastane. Ukážeme si, jak jej použít pro výpis čísel od 1 do 10 a poté vylepšíme program kalkulačky. Nakonec si ukážeme použití cyklu opakuj stále a vytvoříme aplikaci, ve které si náš kočičák trochu protáhne nohy.

Cyklus opakuj dokud nenastane

Cyklus opakuj dokud nenastane funguje trochu jinak než cyklus opakuj krát. Na rozdíl od opakuj krát totiž opakuje příkazy pořád, dokud není splněna podmínka v hlavičce cyklu. Jde tedy o cyklus, který nemá pevný počet opakování. Blok cyklu najdeme opět v blocích Ovládání:

Cyklus opakuj dokud nenastane - Scratch

Pokud vás napadá, že pomocí cyklu opakuj dokud nenastane lze docílit efektu cyklu opakuj krát, máte pravdu 🙂 Cyklus opakuj dokud nenastane je vlastně speciálním případem cyklu opakuj krát. Často je ale pohodlnější použít cyklus opakuj dokud nenastane. Využijeme ho zejména, pokud dopředu nevíme, kdy se splní nějaká podmínka a určitý blok kódu do té doby chceme opakovat 😉

Příklady užití cyklu opakuj dokud nenastane

Pojďme si udělat několik jednoduchých příkladů na procvičení tohoto cyklu.

Řada čísel

Jistě si vzpomenete na program řada čísel z lekce Cyklus s pevným počtem opakování ve Scratchi, který jsme vyráběli pomocí cyklu opakuj krát. Nechali jsme v něm kočičáka napočítat od 1 do 10. Museli jsme od sebe odčítat čísla a náš program byl celkem složitý. Lépe řečeno, nebyl složitý, ale šel by udělat jednodušeji 🙂

Pomocí cyklu opakuj dokud nenastane bude program vypadat takto:

Program Řada s cyklem opakuj dokud nenastane - Scratch

Asi se shodneme, že kód je přehlednější. Navíc nemusíme používat triky s odčítáním čísla a podobně 😉

Kalkulačka

Jako další si vezmeme naši kalkulačku z minulých lekcí a opět ji trochu vylepšíme. Konkrétně do ní doplníme možnost zadat více příkladů. Program tedy hned neskončí, ale zeptá se uživatele, zda si přeje spočítat další příklad. Původní verzi kódu si můžeme připomenout v lekci Cyklus s pevným počtem opakování ve Scratchi a najdeme ji také v příloze dnešní lekce. Kalkulačka funguje, ale asi nikoho úplně nebaví spouštět pokaždé aplikaci znovu a znovu, aby nám spočítala další příklady. Pojďme si ukázat, jak jednoduše můžeme kalkulačku nechat běžet, dokud jí "nevypneme".

Nejprve si vytvoříme novou proměnnou, kterou pojmenujeme opakovat. Potom celé tělo programu zabalíme do cyklu opakuj dokud nenastane:

Tělo kalkulačky v cyklu - Scratch

Protože je náš kód již celkem dlouhý, ukázali jsme si na obrázku jenom jeho začátek. Pro správné fungování aplikace je ale opravdu důležité obalit do cyklu celý kód. Chceme přeci opakovat celý program a ne jenom půlku 🙂

Pokračujme tím, že mezi počáteční blok po kliknutí na vlaječka a cyklus vložíme z bloků Proměnné blok nastav na. V něm určíme, že proměnná opakovat bude mít výchozí hodnotu ANO:

Nastav opakovat na ANO - Scratch

Do podmínky cyklu vložíme podmínku obsahuje, na levou stranu dáme proměnnou opakovat a na pravou stranu hodnotu NE:

Podmínka v cyklu - Scratch

Tím jsme docílili toho, že se cyklus bude opakovat, dokud nebude proměnná opakovat obsahovat text NE. Zároveň jsme na začátek proměnnou nastavili na ANO, takže se cyklus spustí.

Protože program kontroluje pouze, jestli je v proměnné slovo NE, může být místo slova ANO použito i třeba Luciáš, Česká republika nebo Strč prst skrz krk. Podmínka se v takových případech nesplní a cyklus začne znovu. Pokud však zadáme např. slovo Škubánek nebo nevím, ve kterém se ne vyskytuje, kalkulačka se ukončí 🙂

Program by teď sice fungoval, ale běžel by do nekonečna, protože uživatel nemá nikde možnost zadat, že už chce program vypnout. Pojďme to napravit. Přejdeme na konec programu a nad bublinu s textem Děkuji za použití kalkulačky. vložíme otázku a zeptáme se v ní: Přejete si vypočítat další příklad? ANO/NE. Pod ní přidáme blok nastav... a přiřadíme do proměnné opakovat odpověď uživatele:

Nastavení opakování na konci programu - Scratch

Nakonec bublinu s děkovnou hláškou přesuneme za cyklus, takže kočičák nám poděkuje, až když skutečně skončíme s používáním kalkulačky:

Hláška se vypíše až na konec - Scratch

Když náš program spustíme, kočičák bude počítat tolik příkladů, kolik si budeme přát:

Kočičák počítá hafo příkladů - Scratch

Cyklus opakuj stále

Ze všeho toho počítání se kočičák musí trochu projít. Pojďme ho rozpohybovat. Použijeme cyklus opakuj stále, který se sám nikdy nezastaví. Na rozdíl od cyklu opakuj dokud nenastane mu totiž chybí podmínka, která by ho ukončila 😅

Pochodující kočičák

Do cyklu opakuj stále tedy z bloků Pohyb umístíme blok dopředu o 10 kroků:

Program chodícího kočičáka - Scratch

Když program pustíme, vidíme, že kočičák chodí a dojde až za kraj obrazovky, takže pak vidíme jen jeho ocas a kus tlapky:

Kočičák chodí pryč - Scratch

Jediné, co by nám možná mohlo trochu vadit, je to, že nám kočičák sprostě zmizí z obrazovky bez rozloučení :( Pojďme kočičáka naučit slušným mravům 😉

Za blok dopředu o 10 kroků umístíme blok když tak a do něj blok bublina s textem Čauky mňauky:

Kočičák se chystá být vychovaný - Scratch

Nakonec do podmínky bloku když tak umístíme z bloků Vnímání blok dotýkáš se a místo předvyplněného ukazatele myši vybereme druhou možnost okraje:

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

Když těď program spustíme a kočičák se chystá opustit obrazovku, před tím, než zmizí, se s námi rozloučí:

Kočičák chodí pryč a zdraví - Scratch

Cyklus opakuj stále jsme si zde ukázali spíše pro úplnost. Možná jste si všimli, že náš program po spuštění stále běží a musíme jej ukončit červenou stopkou vedle zelené vlaječky. Když pak program chceme znovu spustit, je dokonce potřeba nejprve vytáhnou kočičáka za ocas z okraje obrazovky, aby se znovu rozpohyboval. Proto se použití tohoto nekonečného cyklu raději vyhneme.

Již toho umíme docela dost, začíná to být zábava, že? 🙂 Kódy z dnešní lekce najdete opět ke stažení dole.

V následujícím cvičení, Řešené úlohy k 9.-10. lekci Scratche, si procvičíme nabyté zkušenosti z předchozích lekcí.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 5x (169.34 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch

 

Předchozí článek
Cyklus s pevným počtem opakování ve Scratchi
Všechny články v sekci
Scratch
Přeskočit článek
(nedoporučujeme)
Řešené úlohy k 9.-10. lekci Scratche
Článek pro vás napsal PDoctor
Avatar
Uživatelské hodnocení:
6 hlasů
Aktivity