7. diel - Podmienky (vetvenie) v Scratchi
V minulej lekcii, Jednoduchá kalkulačka v Scratchi , sme si vytvorili jednoduchú kalkulačku a ukázali si chyby, ktorých sa pri práci s premennými vyvarovať.
Vo väčšine programov potrebujeme nejako reagovať na rôzne situácie. Môže to byť napríklad hodnota zadaná užívateľom, podľa ktorej budeme chcieť meniť ďalšie správanie programu. Hovoríme, že sa program konárov a vetvenia používame podmienky. Tým sa budeme venovať celý dnešný Scratch tutoriál. Nakoniec vytvoríme program, ktorý nám povie, či sme dospelí, alebo nie.
Podmienka v bloku keď ... tak
Podmienku nájdeme v blokoch Ovládania. Konkrétne ide o blok keď ... tak. Do prázdneho priestoru medzi keď a tak vkladáme nejaký logický výraz. To je akékoľvek tvrdenie, o ktorom zisťujeme, či je pravdivé, alebo nie je.
Poďme si vyskúšať jednoduchú ukážku. Najprv si ako vždy pridáme do programu blok po kliknutí na (vlajočka), potom pôjdeme do blokov Ovládanie a prilepíme blok keď ... tak:
Ďalej sa prepneme na bloky
Operátory a medzi slová keď a tak pridáme blok
väčší ako. Na pravej strane necháme hodnotu 50
a
doľava napíšeme číslo 60
:
Potom dovnútra bloku keď ... tak vložíme blok
bublina ... sekúnd z blokov Udalosti a text prepíšeme na
Podmínka je splněna.
Za blok keď... tak vložíme
ďalšiu bublina... sekúnd, do ktorej napíšeme
A program pokračuje.
Celý program bude vyzerať takto:
Program si môžeme krásne prečítať. Podmienka hovorí: Keď je 60 väčšia ako 50, tak sa zobrazí bublina, že podmienka je splnená.
Keď program pustíme, naozaj sa tak stane:
Všetok kód, ktorý je mimo blok keď ...
tak sa vykoná vždy. Skúsme si namiesto 60
napísať na ľavú stranu napríklad číslo 40
a program znova
spustíme. Podmienka nie je splnená, pretože 40
nie je
väčšia ako 50
. Všetko, čo je vo vnútri podmienky sa
teda preskočí, ale veta A program pokračuje.
sa vypíše
😉
Načítanie užívateľského vstupu
V podmienke môžeme samozrejme načítať aj hodnotu od používateľa. Pridáme si pred blok keď ... tak z blokov Vnímanie blok otázka. V otázke vyzveme používateľa, aby sám zadal nejaké číslo. Namiesto čísla na ľavej strane bloku je väčšia potom dáme blok odpoveď:
Teraz budeme môcť reagovať a meniť správanie programu podľa toho, aké číslo zadá používateľ 🙂 Poďme si to vyskúšať:
Relačné operátory
Ukážme si teraz relačné operátory, ktoré môžeme vo výrazoch používať.
Väčšia ako
Tento operátor sme si už vyskúšali. Podmienka je splnená, ak je číslo na ľavej strane väčšie ako číslo na pravej strane:
Menšie ako
Tento operátor je pravdivý, ak je číslo na ľavej strane menšie ako číslo na pravej strane:
Je rovné
Ďalší operátor porovnáva, či sú hodnoty na oboch stranách rovnítka rovnaké. Potom je podmienka splnená:
Porovnávať pomocou operátora ich rovno môžeme aj
textový reťazec. Obe hodnoty ale musia byť úplne presne
rovnaké. Pokiaľ napríklad napíšeme na jednu stranu slovo Ahoj
a na druhej strane budeme mať rovnaký text s medzerou na konci, podmienka sa
nesplní 😉
Obsahuje
Posledným operátorom, ktorý si dnes ukážeme je operátor
obsahuje. Pomocou neho zisťujeme, či dané slovo obsahuje písmeno,
alebo časť textu z pravej strany. Operátor bude pravdivý, ak napríklad
zapíšeme kočka
obsahuje k
alebo
vyhraný
obsahuje hra
:
Podmienka v bloku keď ... tak ... inak
Poďme sa teraz zamyslieť, ako to zariadiť, aby program naopak niečo urobil, iba ak sa podmienka nesplní. Keby sme nad tým premýšľali, možno by niektoré z nás napadlo riešenie, ktoré vyzerá takto:
Taký kód by naozaj fungoval a pokiaľ vás takéto riešenie napadlo, určite si zaslúžite pochvalu 😉
Riešiť všetky podmienky týmto spôsobom by však niekedy bolo veľmi
zložité. Mohlo by sa totiž stať, že podmienku nadefinujeme zle a
neošetríme napríklad, čo sa má stať, keď zadáme číslo 50
.
Taký program je skrátka veľmi citlivý na chybu programátora a navyše
pôsobí neprehľadne. Ide to teda urobiť aj lepšie? Áno 🙂 Scratch nám
pre takéto prípady ponúka blok keď... tak... inak.
Program zisťujúci, či sme dospelí
Poďme si skúsiť urobiť program, kde sa nás mačičák spýta, koľko nám je rokov. Pokiaľ nám bude 18 a viac, tak nám povie, že sme dospelí. Pokiaľ nám bude menej, odpovie, že dospelí nie sme.
Začiatok programu bude rovnaký ako pri predchádzajúcom príklade na
podmienky, kde užívateľ zadával číslo na porovnanie. Začneme blokom
po kliknutí na (vlajočka) a za ten nalepíme otázku
Kolik ti je let?
:
Teraz príde drobná zmena a miesto bloku keď ... tak prilepíme za náš program z blokov Ovládanie blok keď ... tak ... inak:
Medzi slová keď a tak vložíme z Operátorov blok väčší ako a na ľavú stranu vložíme z blokov Vnímanie blok odpoveď:
Teraz musíme programu povedať, že chceme, aby nás vyhlásil za
dospelých, ak nám je 18 a viac. Dúfam, že sa nikto zbrkle
nepustil do programovania a nenapísal miesto čísla 50
číslo
18
🙂 Ak však niekto v programovaní predbiehal a napísal
miesto 50
číslo 17
, zaslúži si veľkú pochvalu
😉
Vráťme sa však k číslu 18
. Čo by to vlastne znamenalo? Ak
nám už bolo 18, sme dospelí. Ale program s podmienkou odpoveď
väčšia ako 18
berie ako dospelé osoby ľudí, ktorým
je viac ako 18. Človeka, ktorému je 18, by tak náš program
bral ešte za nedospelého a dospelý by bol človek až od 19 rokov 😉 Ak
teda chceme, aby náš program pracoval správne, musíme namiesto čísla
50
napísať číslo 17
. Keď teraz zadáme ako náš
vek číslo 18
, podmienka bude tým pádom splnená a program nás
správne vyhlási za dospelého.
To je len ďalšia ukážka toho, že sa pomaly dostávame k čoraz zaujímavejším programátorským kúzlom, ktoré ale vyžadujú viac premýšľania 😉
Poďme teda namiesto 50
doplniť číslo 17
:
Nakoniec pridáme bubliny, ktoré nám na základe nášho veku povedia, či sme dospelí:
Keď teraz program pustíme, mačičák naozaj spozná na základe veku, či sme dospelí, alebo nie:
V budúcej lekcii, Podmienky (vetvenie) druhýkrát: Vysielanie správ v Scratchi , sa naučíme skladať podmienky pomocou logických operátorov a naučíme sa v Scratch aplikáciách využiť vysielanie správ.