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

6. diel - Jednoduchá kalkulačka v Scratchi

V minulej lekcii, Načítanie hodnôt od užívateľa v Scratchi , sme sa naučili načítať hodnoty zadané užívateľom a ďalej ich spracovávať.

V dnešnom Scratch tutoriále naučíme mačičiaka počítať 🙂 Vytvoríme si jednoduchú kalkulačku a precvičíme si pri tom témy minulých lekcií, a to načítanie užívateľských vstupov a prácu s premennými. Ku koncu si ešte ukážeme chyby, ktorých sa musíme pre správne fungovanie našej aplikácie vyvarovať.

Jednoduchá kalkulačka

Teraz, keď už vieme načítať vstup a rôzne ho spracovať, poďme si skúsiť napísať sľubovanú kalkulačku 😉 Bude veľmi jednoduchá. Na vstup prídu dve čísla a program potom vypíše výsledky pre sčítanie, odčítanie, násobenie a delenie.

Založíme si nový projekt a klasicky začneme pridaním bloku po kliknutí na (vlajočka):

Pridanie bloku po kliknutí na vlajočka - Scratch

Z blokov Vnímanie prilepíme blok otázka a prepíšeme jeho text na Zadej první číslo:

Blok otázka s výzvou zadaj prvé číslo - Scratch

Teraz sa musíme trochu zamyslieť 🙂 Chceme sa opýtať na dve čísla, ale odpoveď, s ktorou program pracuje je vždy len jedna. Keď sa teraz spýtame na prvé číslo a hneď aj na druhé, tak v odpovedi bude vždy iba posledné zadané číslo. Keby užívateľ zadal číslo 2 a potom číslo 8, program by nepočítal 2 + 8, ale 8 + 8 ! Ako to teda urobíme?

Použijeme nám známu premennú 😉 Do tej si uložíme prvú odpoveď a do ďalšej premennej potom druhú odpoveď. Takto môže používateľ zadať niekoľko čísel a my s nimi budeme môcť pracovať 🙂 Poďme na to.

Tvorba premenných

V bloku Premenné si vytvoríme premenné cislo1 a cislo2:

Premenné cislo1 a cislo2 - Scratch

V programovaní sa pre názvy premenných nikdy nepoužívajú háčiky a čiarky a už vôbec medzery 😉

Teraz vezmeme blok nastav na a prilepíme ho k nášmu programu:

Blok nastav cislo1 na - Scratch

Klikneme na blok otázka v našom programe a stlačíme klávesy Ctrl + C. Potom klikneme kamkoľvek vedľa a stlačíme klávesy Ctrl + V. Časť kódu sa nám nakopíruje:

Nakopírovanie bloku - Scratch

Blok, ktorý sa nám nakopíroval, si trochu upravíme. Do bloku otázka napíšeme Zadej druhé číslo: av bloku nastav na nebudeme nastavovať premennú cislo1, ale cislo2:

Zmena nakopírovaného bloku - Scratch

Upravenú časť kódu prilepíme k nášmu súčasnému kódu:

Pridanie nakopírovaného bloku k existujúcej časti - Scratch

Potom namiesto núl dáme do blokov nastav na bloky odpoveď z blokov Vnímanie:

Pridanie blokov odpoveď do blokov nastav na - Scratch

Operátormi a výpis výsledkov

Teraz už len zostáva, aby nám mačičák výsledky vypočítal. Prejdeme do blokov Vzhľad a prilepíme za seba päť blokov bublina sekúnd:

5 blokov bublina - Scratch

Ďalej prejdeme do blokov Operátory a pretiahneme si do hlavného okna štyri bloky spoj:

4 bloky spoj - Scratch

Prepíšeme v nich políčko jablko postupne na Součet:, Rozdíl:, Součin:, Podíl:

prepísané bloky spoj - Scratch

Vedľa každého bloku spoj pridáme zodpovedajúcich operátorov. Vedľa súčtu bude operátor plus, a tak ďalej:

bloky spoj s blokmi operácií - Scratch

Prejdeme do blokov Premennej a do všetkých blokov s operátormi pridáme na prvé miesto premennú cislo1 a na druhé miesto cislo2:

.<> bloky operácií s premenlivými cislo1 a cislo2 - Scratch

Každý z operátorov presunieme do zodpovedajúceho bloku spoj na druhú pozíciu:

bloky operácií s premenlivými cislo1 a cislo2 - Scratch

Bloky spoj teraz presunieme do blokov bublina:

bloky spoj v bublinách - Scratch

Do posledného bloku bublina napíšeme Děkuji za možnost procvičit si matematiku!:

blok bublina s textom omatematike - Scratch

Keď teraz program spustíme, náš mačičák nám príklady, ktoré mu zadáme, pekne vypočíta:

mačičák počíta príklady - Scratch

Chyby pri tvorbe kalkulačky

Keď sme lekciu tvorili, napadlo nás niekoľko chýb, ktoré by sme mohli pri tvorbe kalkulačky urobiť. Poďme si ich ukázať a vysvetliť si, prečo sa to tak nerobí 😉

Blok na spájanie

Na sčítanie sme pri kalkulačke použili operátor plus. Spojili sme tak vlastne dve čísla dohromady v jedno. Čo keby sme ale použili namiesto operátora plus blok spoj ? Poďme si to vyskúšať.

Najprv v hornom paneli klikneme na Súbor a Uložiť ako kópiu. Tým sa nám projekt naklonuje. Kópiu môžeme teraz tak trochu rozbiť bez toho, aby sme si zničili našu funkčnú kalkulačku:

Uloženie projektu ako kópia - Scratch

Z kópie nášho programu odstránime všetky bloky bublina okrem prvého a posledného:

Úprava programu kalkulačky - Scratch

Teraz vyberieme z bloku spoj operátor plus:

Vybratie operátora plus - Scratch

Premenné cislo1 a cislo2 preložíme z bloku plus do bloku spoj a ten presunieme späť do bubliny:

Kompletizácia úpravy programu kalkulačka - Scratch

Keď to urobíme, vidíme, že náš mačičák už tak dobre nesčíta:

Mačičák nechápe sčítanie - Scratch

Možno si pamätáte, ako sme si hovorili o dátových typoch. Práve kvôli nim nám kalkulačka teraz nefunguje. Pokiaľ čokoľvek umiestnime do bloku spoj, aj keď to je potrebné číslo, Scratch to prevedie na text. V tej chvíli je jedno, či je v bloku spoj treba 12 a 5 alebo Ahoj a mami!. Scratch vždy hodnoty vezme a jednoducho ich nalepí hneď za seba. Odpoveď mačičiaka teda vlastne nie je sto dvadsaťpäť, ale dvanásť päť 😉

Text v sčítacom bloku

Keď sme si ukázali, čo sa stane s číslom v bloku spoj, vyskúšajme si ešte pravý opak. Čo sa stane, keď zadáme text tam, kde sa očakáva číslo? Použijeme niekoľkokrát klávesovú skratku Ctrl + Z, kým nedostaneme do bubliny späť náš operátor plus:

Úprava programu kalkulačky - Scratch

Keď program spustíme a zadáme namiesto čísel text bude odpoveď mačičiaka pomerne neutrálna:

Mačičák sčíta text - Scratch

Prečo nám mačičák odpovedal práve 0 ? Pokúšame sa nariadiť počítaču, aby sčítal niečo, čo nie je číslo. Scratch si pozdrav mačičákovi v sčítacom bloku prevedie na hodnotu NaN. Ide o skratku anglického Not a Number, česky nie je číslo. A pretože náš program nenašiel žiadne čísla na sčítanie, mačičák teda vyhlási, že výsledok je nula, aj keď by správne mal povedať, že sme nezadali čísla.

Samozrejme by sme mohli program urobiť tak, aby užívateľovi vyhuboval, keď namiesto čísla zadá text. K tomu ale budeme musieť najskôr poznať podmienky a ďalšie vychytávky programovania, o ktorých sa ešte len budeme učiť. Zatiaľ sa tak len môžeme tešiť, že onedlho zatneme šprýmařům, ktorí náš program rozbíjajú, tipec 😉

Delenie nulou

Nakoniec sa pozrieme, čo sa stane, keď budeme chcieť deliť nulou. Môžeme si to naschvál vyskúšať na skutočnej kalkulačke. Keď budeme chcieť deliť akékoľvek číslo nulou, kalkulačka zahlási chybu:

Kalkulačka hlási chybu delenia nulou - Scratch

Nebudeme zabiehať do podrobností, iste už z matematiky vieme, že nulou sa jednoducho deliť nedá. Ako rozdelíme čokoládu medzi nula ľudí? Nijako, pretože ju nemáme medzi koho rozdeliť. Tí ľudia neexistujú, ale musíme medzi nich rozdeliť čokoládu. To je nemožné a presne to nám povie aj kalkulačka. To sme ale odbočili 🙂

Poďme zistiť, ako bude reagovať Scratch, keď to naschvál porušíme. Najprv nahradíme operátor plus operátorom delené a miesto Součet: zadáme do bubliny Podíl:

Úprava programu kalkulačky - Scratch

A teraz skúsime ako druhé číslo zadať nulu:

Mačičák hlási Infinity - Scratch

Ako vidíme, práve sme prišli na trik, ako nášho mačičiaka naučiť po anglicky 🙂

Teraz bez zábavy. Mačičák nám povedal, že výsledok delenia nulou je Infinity, po slovensky nekonečno. Podľa názoru niektorých programátorov by delenie nulou malo tiež vracať NaN. Iní si myslia, že hodnota Infinity je lepšia voľba.

Najjednoduchšie vysvetlenie tejto logiky je asi toto. Majme príklad 12:6. Asi nás neprekvapí, že výsledok je 2. Ako sa môžeme späť dostať k číslu 12 ? Povieme si, že šestka sa zmestí do dvanástky dvakrát. Čo ak túto logiku teda použijeme pri delení nulou? Koľkokrát sa zmestí 0 do 12 ? Nekonečne krát, pretože môžeme stále pridávať nuly, ale nikdy sa nedostaneme na dvanástku ani iné číslo.

Vidíme, že naša kalkulačka bude potrebovať podobné situácie ešte ošetriť. Na to budeme musieť použiť pokročilejšie triky. Nemusíme si zúfať, v rámci tohto kurzu sa ich spolu ešte všetky naučíme 😉

V budúcej lekcii, Podmienky (vetvenie) v Scratchi , sa naučíme vetviť naše programy pomocou podmienok, popíšeme si relačných operátorov a vytvoríme program, ktorý podľa zadaného veku zistí, či sme dospelí.


 

Predchádzajúci článok
Načítanie hodnôt od užívateľa v Scratchi
Všetky články v sekcii
Scratch
Preskočiť článok
(neodporúčame)
Podmienky (vetvenie) v Scratchi
Článok pre vás napísal PDoctor
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity