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 opakovaná | komunikácia a udalosti | komunikácia s kontajnermi |
Každý je alebo aspoň bol žiakom základnej školy. Nikomu sa nechce veľmi učiť a preto za najobľúbenejšní predmet považuje telesnú výchovu. Jednoducho sa tam len behá, hrajú sa nejaké hry a športuje sa.
Nie často, ale niekedy predsa potrebujete niečo od vyučujúceho, a preto idete za ním do kabinetu. Prídete pred dvere a na dverách čítate. Ak chcete hovoriť s učiteľom Mrkvičkom zaklopte raz, ak s učiteľkou Hraškovou zaklopte dvakrát a ak s učiteľom Zeleňom zaklopte trikrát.
Nikoho však netrápi, že sa im pred týždňom pokazil zvonček. Keďže nevedia zohnať opravára, tak to vyriešili tak, že prepojili zvonček so svetlom v kabinete. Teda teraz miesto zvuku zvončeka, im bliká svetlo v kabinete. A to buď raz, dvakrát alebo trikrát. Záleží od toho koho hľadáte.
Kedže my sme šikovní programátori, tak sa pokúsime danú situáciu nasimulovať v prostredí Robolab. Zvonenie z vonku dverí a svietenie svetla vo vnútri kabinetu sú dve rozdielne veci, tak použijeme 2 RCX kocky. Jednu nazveme Zvonček a tú druhú Svetlo.
Najprv sa venujme programu pre Zvonček. Ten je jednoduchý. Asi najzložitejšie je nastaviť dotykový senzor do polohy počítadla. A nakonci jednoducho postať správu s počtom klikov na počítadle. Tu sa nám teda prvýkrát objavuje opodstatnenie posielania hodnoty v správe. Potom program pre zvonček bude vyzerať takto:
Možno sa čudujete prečo je v programe použitá ikona pre uplynutie čsového intervalu. Je to preto, lebo inak by hneď po nastavení dotykového senzora do polohy počítadla, bola v správe poslaná hodnota 0, lebo sme nestihli ešte stlačiť Zvonček.
Keďže v správe, ktorá bola doručená kocke Svetlo sa nachádza údaj, ktorý chceme využiť, tak potrebujeme použiť novú ikonu vetvenia. Poznáme dve takéto ikony:
Ak chceme doručenú správu porovnávať s konkrétnou hodnotou. V našom prípade, či sa doručená správa rovná alebo nerovná dvom. | |
Ak chceme určiť, či hodnota v doručenej správe je väčšia, alebo menšia alebo rovná ako hodnota tri, v našom prípade, tak použijeme nasledujúcu ikonu. |
Napísať časť programu, kde žiarovka blikne raz, dvakrát alebo trikrát, vieme. Ak to spojíme s ikonami pre vetvenia na základe hodnoty v doručenej správe, tak program pre svetlo bude vyzerať takto:
Samozrejmä, že ikony vetvenia môžete použiť ako chcete. A aj ich kombináciu.
Takto napísaný program dobre prebehne len vtedy, ak dôjde k stlačeniu dotykového cenzora. Ale čo sa stane ak počas 4 sekúnd nebude stlačený? Program v zvončeku skončí, ale program svetiel bude bežať dovtedy, kým ho mechanicky nevypneme. Ako teda opraviť tento zistený problém?
Jedným z možných riešení je použitie udalostí. Možno ste už o nich počuli. Ak nie, tak si prečítajte motivačný výklad ku kapitole o komunikácii na základe udalostí. Práca so všetkými udalosťami je rovnaká ako pri udalosti, ktorá nastane pri doručení správy. Jediným rozdielom je, že musíte definovať port, na ktorom daná udalosť má nastať.
Ak teda zadefinujeme udalosť stlačenia dotykového senzora v režime počítadla, tak správa bude poslaná. Ak by sme však za touto udalosťou hneď ukončili program, tak by sme tým nič nevyriešili. Preto musí hneď po u plynutí časového intervalu 4 sekúnd nasledovať podmienka, či udalosť nastala. Ak nastala, tak je všetko v poriadku. Ak však nenastala, tak musíme poslať správu, že program má skončiť. Napríklad tak, že pošleme správu s hodnotou 10,lebo ako už vieme, číslo 0 v správe nemôžeme.
Ale predtým ako spustíme program v kockách, tak ešte musíme upraviť program v kocke Svetlo. Nakoniec budú programy vyzerať takto:
Zvonček
Svetlo
Na tomto príklade je už vidieť použitie aj druhej ikony vetvenia na základe hodnoty v doručenej správe.