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 s kontajneromi |
V rámci tejto edukačnej stránky ste si prečítali už mnoho motivačných výkladov. Preto by sme mohli, v rámci tejto podtémy, začať trochu inak.
Názov tejto podtémy je komunikácia a udalosti. To, čo znamená komunikácia medzi kockami už viete, preto si teraz povieme niečo o udalostiach. Predstavte si, že ste doma a niečo robíte, zrazu príde do izby mamka a chce po vás aby ste jej pomohli. A takto sa dá charakterizovať aj udalosť. Program vykonáva nejakú konkrétnu činnosť a zrazu sa niečo stane. Napríklad je stlačený dotykový senzor, nameraná nejaká hodnota na otáčkomery alebo na svetelnom senzore. Vtedy sa daná časť programu prestane vykonávať a preskočí na tú časť programu, ktorá nasleduje hneď po jej skončení.
Aby ste si to vedeli predstaviť, tak pôjdeme pekne postupne. Ak chceme v programe využiť udalosti, tak si najprv musíme premyslieť, počas akej časti v programe ju budeme očakávať. To znamená, že danú časť kódu si označíme ikonamy začiatkom a koncom sledovania udalosti.
Takto vyzerá ikona začiatku sledovania udalosti, na ktorej porte musí byť jasné, o ktorú z udalostí ide. Modrú, červenú alebo žltú. | ![]() |
Na konci časti progamu, kde sledujeme udalosť, musí byť zasa táto ikony. | ![]() |
Ale ak by ste sa snažili napísať takýto program v prostredí Robolab a nahrať ho do RCX kocky, tak by ste nepochodili. Na monitore vášho počítača by sa vám objavilo okno, ktoré by vás infogmovalo o tom, že musíte pred každým sledovaním udalosti najpr zadefinovať typ udalosti, ktorú chcete sledovať. Môžu to byť nasledujúce udalosti:
Takto vyzerá ikona pre udalosť doručenia správy. Táto udalosť je definovaná ako modrá. | ![]() |
Udalosť, ktorá nastane ak stlačíme dotykový senzor. Nesmieme však zabudnúť na definovanie vstupného portu a udalosti. Rovnako poznáme aj udalosť pri pustení dotykového senzora. | ![]() |
Podľa rovnakých pravidiel ako doteraz, treba deklarovať aj ostatné udalosti. Napríklad aj pri dotykovom senzore, ktoré je v režime počítadla. Podobnú ikonu má udalosť počítania stlačenia a pustenia dotykového senzora. | ![]() |
Ikona pre udalosť, ktorá nastane pri zvýšení intenzity svetla. Poznáme ikonu aj pre zníčenie intenzity. | ![]() |
Ikona pre udalosť, ktorá nastane pri zvýšení otáčok na otáčkomery. Poznáme ikonu aj pre zníčenie otáčok. | ![]() |
Ikona pre udalosť, ktorá nastane pri zvýšení teploty na teplomery v stupňoch Celzia. Poznáme ikonu aj pre zníčenie teploty, prípadne merania vo Faradajových stupňoch. | ![]() |
Ikona pre udalosť, ktorá nastane pri zvýšení obsahu kontajnera. Poznáme ikonu aj pre zníčenie obsahu. | ![]() |
Ale aká by to bola práca bez cieľa? Keďže celá táto edukačná stránka je zamerané na komunikáciu, tak sa pozrime bližšie na udalosť, pri ktorej očakávame doručenie správy. Uvediem vám príklad a vy sa snažte prísť na to, čo daný program robí.
RCX1
RCX2
Program prvej RCX kocky je veľmi jednoduchý a je vám už dobré známy. Kocka pošle správu po stlačení dotykového senzora.
Program druhej kocky sme už čiastočne videli počas výkladu. Tak ako sme si povedali, deklarovanie udalosti musí byť pred jeho sledovaním. Ide o udalosť doručenia správy a je definovaná ako modrá. Príkazy skoku a pohybu motorčekov sú nám už dobre známe. Takže vieme povedať, že druhá RCX kocka sa bude otáčať, kým sa nevyskytne udalosť, ktorá spôsobí, že program preskočí až za príkaz konca sledovania udalosti. Keďže sme sa už naučili, že vytvárať nekonečné programy nie je vhodné, tak ukončíme otáčanie kocky.
Teda zadanie k tejto úlohe by mohlo znieť napríklad takto: V krúžku Robolabu sa Jankovi podarilo niečo, čo ešte doteraz nevidel. K jednej kocke mal pripojený dotykový senzor. Po jeho stlačení sa autíčko, ktoré sa otáčalo namieste a bolo s ním v jednej rovine, zastavilo. Ak však stlačil dotykový senzor v nesprávnom okamihu, tak sa autíčko točilo dookola ďalej.