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

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:
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:

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
:

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

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:

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:

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

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ů:

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:

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
:

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
:

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

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 14x (169.34 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch