Metodika výučby programovania - stavebnice RoboLab |
---|
Prírodovedecká fakulta UPJŠ, Ústav informatiky |
mapa diplomového webu |
komunikácia jednoduchá | komunikácia potvrdená | komunikácia vetvená | komunikácia opakovaná | komunikácia a udalosti |
Každý z vás pozná hru hádaj číslo. Niekedy ak sa nudíte, tak si ju určite zahráte. Preto by pre vás nemalo byť ťažké povedať príncíp tejto hry. Ale pre tých, ktorí ju ešte nehrali, si pravidlá zopakujeme.
Hru hrajú dvaja hráči. Jeden si vymyslí náhodné číslo od 1 po 100, a ten druhý sa ho snaží uhádnuť. Ak druhý povie číslo, tak ten prvý povie: "Viac," alebo "Menej". A tak pokračujú dovtedy, kým sa druhému nepodarí uhádnuť číslo. Čím na menej pokusov uhádnete mysléne číslo, tým ste úspešnejší.
Pokúsme sa teraz naprogramovať túto hru v Robolabe. Nie je to nič zložité. Uvidíte.
Ako ste si už povedali, tak hru hrajú dvaja hráči. Mysliteľ a Hlavolam. Mysliteľ je ten, ktorý si vymyslí číslo. Keďže chceme aby to číslo bolo naozaj vymyslené, tak použijeme funkciu random. Je veľa možností ako zaviešť náhodnosť v programe. Ale my si vyberieme spôsob, ktorý využíva kontajnery. Prečo? Lebo pracujeme s číslami, ktoré sa v priebehu programu budú meniť. Buď ich budeme zväčšovať, alebo zmenšovať. A ako už určite viete, uskutočňovať operácie s číslami v prostredí Robolab, môžeme len cez kontajnery, alebo ako sa hovorí v programatorskom jazyku, pomocou premenných.
Takže Mysliteľ vymyslí číslo. Jeho hodnotu si uloží do kontajnera. V našom jazyku to znamená, že si ho zapamätá. Potom musí dať povel Hlavolamu, aby začal hádať. To znamená, že pošle správu druhej kocke. Aby sme mali trochu času po spustení programu, tak nezabudneme, že celý program sa začne vykonávať až po stlačení dotykového senzora. Ak už poslal správu napríklad s hodnotou 101, čo znamená, že začni hádať, tak potom musí čakať, kým mu bude doručená správa od Hlavolamu s jeho tipom.
Potom by táto časť programu mohola vyzerať takto:
Čo asi zatiaľ robí Hlavolam? Čaká na povel, že može začať hádať. Potom si typne nejaké číslo z rovnakého intervalu, ako sa na začiatku dohodli. A svoj tip pošle Mysliteľovi. Potom opať čaká na odpoveď. Preto začiatok programu Hlavolam bude vyzerať takto:
Vráťme sa teraz k progamu Mysliteľ. Predstavme si, že mu bola doručená správa s číslom, ktoré je väčšie ako jeho vymyslené. Preto musí povedať Hlavolamu, že číslo je menšie, a naopak. Tak isto ako doteraz, to bude interpretované posielaním správy. Ak bude Hlavolam mať znížič hodnotu svojho čísla, tak Mysliteľ pošle v správe hodnotu 1, a ak naopak zvýšiť, správa bude obsahovať číslo 2. Už so slovnej formulácie vyplýva, že budeme musieť použiť príkaz vetvenia na základe hodnoty v doručenej správe. Ale to už pre nás nie je problém, lebo sme sa to naučili v predchádzajúcej podtéme. :o)
Ale čo ak aj po ďalšom tipe nebude číslo uhádnuté? Opäť Mysliteľ musí povedať, či dané číslo je väčšie alebo menšie. Preto bude vhodné umiestniť túto podmienku do cyklu. Ale dokedy sa bude tento cyklus opakovať? Odpoveď je jednoduchá. Pokiaľ číslo nebude uhádnuté.
Po spojení týchto dvoch požiadaviek, bude program pre Mysliteľa vyzerať takto:
Môžete sa pýtať, prečo sú použité dva kontajnery. Je to preto, lebo červený kontajner prestavuje číslo, ktoré si myslí Mysliteľ a v modrom kontajnere je čílo, ktoré si tipol Hlavolam.
V danom programe je použitá nová ikony, ktorá súvisí s posielaním správ.
Je to ikona, ktorá slúži na načítanie hodnoty zo správy do kontajnera, aby sa s ňou dalo ďalej pracovať. |
Skúste sa zamyslieť nadtým, prečo musí byť pred cyklom prvé čakanie na doručenie správy a načítanie jej hodnoty do kontajnera. Nestačilo by to urobiť vnútri cyklu?
Program Hlavolam už bude obsahovať samotné počítanie s číslami na základe vetvenia podľa hodnoty v doručenej správe. Ak bude v správe doručená hodnota 1, tak obsah kontajnera sa musí znížiť. A naopak ak bude doručené dvojka, tak sa obsah kontajnera musí zvýšiť. Čím vlastne zaručíme nájdene daného čísla.
Rovnako ako v prípade programu Mysliteľ, nemôžeme skončiť po prvom tipe. Musíme danú podmienku umiestniť do cyklu. V tomto prípade pôjde ale o iný typ príkazu opakovania. Program má bežať, kým číslo nebude uhádnuté. Ale to, či číslo bolo uhádnuté, vie len Mysliteľ. Preto o tom musí upovedomiť aj Hlavolam, aby sa mohol začať tešiť. Zabliká toľkokrát, aká je hodnota uhádnutého čísla a dané číslo ukáže na displeji RCX kocky. Z toho dôvodu, ak ste si všimli, v programe Mysliteľa posielame Hlavolamu správu s hodnotou 101, čo znamená, že číslo bolo uhádnuté. Takže práve hodnota v doručenej správe bude tou podmienkou ukončenia cyklu. Príkaz opakovania sa zastaví práve vtedy, ak hodnota v doručenej správe bude väčšia ako 100. Potom program pre Hlavolam bude vyzerať nasledovne.
Opäť sme sa tu stretli s ikonou, kotrá súvisí s komunikáciu a ešte sme sa s ňou nestretli.
Je to ikona príkazu opakovania, pričom počet opakovaní záleží od toho, koľkokrát sa bude v doručenej správe nachádzať hodnota, kotrá vyhovuje podmienke. Ako aj pri ostatných ikonách, tak aj k tejto existuje ikona s podmienkou opačnou k tejto. |
A teraz môžete nechať RCX kocky, nech sa hrajú. A ak si trúfate, tak upravte programy tak, aby ste vy boli Mysliteľ, ktorý prostredníctvom RCX kocky odpovedá na tipované čísla Hlavolamu.