KAREL96
Programovací
mini-jazyk Robot Karel 96 je freeware bez vyšších nárokov na hardvér.
Prečo Karel 96
Pre úvod do štruktúrovaného programovania je vhodná verzia Karel 96 pre
svoju názornosť, jednoduchý programovací režim, podmienky svetových
strán a náhody. Prostredie je farebne pútavé, kladom je tiež možnosť
pracovať pomocou myši - jednoduché stláčanie tlačidiel v programovacom
režime. Program je napísaný s farebným odlíšením syntaktických prvkov a
zarovnávaním do hĺbky štruktúry. Existuje tu možnosť zlepšovania svojich
zručností ovládania klávesnice a rozloženia znakov na nej
prostredníctvom hry Písanie. Túto hru možno realizovať v žiackom
kolektíve i formou súťaže. Nevýhodou je komplikovaná editácia, chýba
ladenie (krokovanie) programu. V režime práce nie je vidno program.
Miestnosť je fixne daná s rozmermi 10 x 12 (žiaci sa uchyľujú k
nadmernému používaniu cyklu s presným počtom opakovaní, namiesto
všeobecnejšieho podmieneného cyklu). Ak je uvedené v predchádzajúcom
texte sekcie, že sa dá programovať aj bez počítača, tak táto verzia je
pri nedostatku počítačov najvhodnejšia na ukážku správania sa Robota
Karla v jeho prostredí.
Prostredie
Karel 96
Základné
príkazy
Krok - krok v smere šípky
Vlevovbok - otočí sa o pravý uhol
Polož - položí značku (tehlu)
Zvedni - zoberie jednu značku
Naučené príkazy môžeme vyberať alebo ukladať do slovníka na pravej
strane. Môžeme využívať klávesy na zrýchlenie (Shit), prerušenie (Esc)
alebo ukončenie príkazu.
Ulož - uloží slovník na disk
Načti - načíta slovník z disku
Turbo (F8) -väčšia/menšia rýchlosť
Zvuk (F9) - vypne/zapne pípanie
Konec (Alt+F4) - ukončí program
Karel sa učí
nové príkazy
Karel je schopný naučiť sa svoje základné príkazy v slovenčine
PRIKAZ VLAVO
VLEVOVBOK
KONEC
PRIKAZ ZOBER
ZVEDNI
KONEC
alebo sa naučiť nový príkaz použitím postupnosti známych
príkazov
PRIKAZ VPRAVO
VLEVOVBOK
VLEVOVBOK
VLEVOVBOK
KONEC
V tomto režime sa Karel učí nové príkazy stlačením
tlačidiel alebo načítaním zo slovníka. Prostredie umožňuje opravu
príkazov, ich zmazanie a archiváciu.
Cyklus
Pre názornosť v ďalšom texte použijem aj tvar pascalovskej syntaxe
príslušného prvku jazyka ohraničený znakmi < a > písaný kurzívou.
Príkaz, alebo postupnosť príkazov sa opakuje presný počet krát (<for to/downto do>). Napríklad, ak je
vopred známe, že Karel stojí v rohu miestnosti s rozmerom 10 miest
(políčok) a úlohou je, aby prešiel na druhú stranu a všade zanechal
"stopu", možno využiť cyklus s presným počtom opakovaní.
PRIKAZ PREJDI
POLOZ
OPAKUJ 9 KRAT
KROK
POLOZ
KONEC
KONEC
Podmienka
Ak by sa v predchádzajúcom príklade rozmer miestnosti zmenšil, Karel by
narazil a program by sa s chybou prerušil. Karel je našťastie dosť
inteligentný (na úrovni jeho programátora) a vie vyhodnotiť jednoduchú
podmienku v tvare ÁNO (pravda <true>)
je splnená, alebo NIE (nepravda <false>),
nie je splnená. Na základe vyhodnotenia podmienky Karel buď vykoná
jeden príkaz (postupnosť, blok príkazov), alebo iný (<if then else>). Použitím tejto
konštrukcie - podmienený príkaz, žiak zabezpečí (binárne)
vetvenie programu.
PRIKAZ PREJDI
POLOZ
KDYZ NENI ZED
KROK
POLOZ
KONEC JINAK
KONEC
KONEC
Všeobecne v prostrediach Karla (okrem Karla 3.2) nie je
syntakticky zabezpečené viacnásobné vetvenie (<case
of>), vlastne ani nie je potrebné kvôli absencii
premenných, ale dá sa nahradiť viacnásobným použitím podmieneného
príkazu (napríklad pri orientácii a postupe na základe zemepisného
smeru).
Ale čo ak sa rozmer miestnosti zväčší? Karel prejde 9 krokov (dostane
sa na desiate miesto - políčko) a program skončí. Ak túto otázku položí
žiak, učiteľ môže byť spokojný a mädliť si ruky. Žiak myslí, testuje
rôzne možnosti vstupu, vidí obmedzenia konkrétneho algoritmu riešenia a
hľadá riešenie všeobecnejšie.
Spojením cyklu s podmienkou možno dosiahnuť cyklus opakovania dovtedy,
pokiaľ je/nie je podmienka splnená. Cyklus už nemá presný počet
opakovaní, ale jeho ukončenie závisí od vyhodnotenia podmienky. Karel
pozná konštrukciu podmieneného cyklu s podmienkou na začiatku, to
znamená že príkaz (postupnosť, blok príkazov) cyklu sa nemusí vykonať
ani raz (<while do>)
PRIKAZ PREJDI
POLOZ
DOKUD NENI ZED
KROK
POLOZ
KONEC
KONEC
Všeobecne v prostrediach Karla (okrem Karla 3.2) nie je
syntakticky zabezpečený cyklus s podmienkou na konci (<repeat until>).
Procedúra
Každý príkaz, ktorý sa Karel už naučil možno považovať za procedúru -
modul, ktorý môže byť neskôr volaný a využitý bez opätovného zadávania
(deklarácie). Riešenie konkrétnej úlohy (problému) sa tým rozloží na
niekoľko jednoduchších procedúr. Predstavuje konkrétny pracovný postup
pri vytváraní návrhu programu.
Všeobecne v prostrediach Karla (okrem Karla 3.2) musí byť syntakticky
zabezpečené, aby volaná procedúra (príkaz) bola deklarovaná (naučená)
skôr, než je volaná. Je tak vytvorená akási logická hierarchia - hlavný
program - podprogram - podprogram podprogramu - ...
Rekurzia
Podobne ako pri volaní procedúry sa volá a vykonáva časť programu,
príkaz, postupnosť príkazov deklarovaných a označených nejakým
identifikátorom - menom, pri rekurzii je touto procedúrou sám program
(príkaz). Príkaz, ktorý sa Karel naučil vlastne počas vykonávania volá
sám seba.
Riešené úlohy
Karel 96
Karel obmuruje svoju miestnosť
značkami
· jedným programom – príkazom (OBRAD)
· s použitím procedúry – príkazom už vopred deklarovanom
(naučenom) (OB, RAD)
· s použitím rekurzie
REKU_1 – Karel stále beží
dookola, program nikdy neskončí
REKU_2 – Karel po práci
síce stojí na mieste, ale program stále beží
REKU_3 – Program je
ošetrený
Karel sa večer opitý potáca a
sem tam si pregrcne značkami program OPILEC
Karel ráno čistí po svojom
večernom "řádení" program CISTIC
|
|
PRIKAZ
OBRAD
OPAKUJ 4 KRAT
DOKUD NENI ZED
DOKUD NENI PLNO
POLOZ
KONEC
KROK
KONEC
VLEVOVBOK
KONEC
KONEC
|
|
|
|
|
PRIKAZ
RAD
DOKUD NENI ZED
DOKUD NENI PLNO
POLOZ
KONEC
KROK
KONEC
KONEC
PRIKAZ
OB
OPAKUJ 4 KRAT
RAD
VLEVOVBOK
KONEC
KONEC
|
|
|
|
|
PRIKAZ
REKU_1
DOKUD NENI ZED
KDYZ NENI PLNO
POLOZ
KONEC JINAK
KONEC
KROK
KONEC
VLEVOVBOK
REKU_1
KONEC
|
|
|
|
|
PRIKAZ
REKU_2
DOKUD NENI ZED
KDYZ NENI PLNO
POLOZ
KROK
KONEC JINAK
KONEC
KONEC
VLEVOVBOK
REKU_2
KONEC
|
|
|
|
|
PRIKAZ
REKU_3
DOKUD
NENI ZED
POLOZ
KROK
KONEC
VLEVOVBOK
KROK
KDYZ NENI PLNO
VLEVOVBOK
VLEVOVBOK
KROK
VLEVOVBOK
VLEVOVBOK
REKU_3
KONEC JINAK
VLEVOVBOK
VLEVOVBOK
KROK
VLEVOVBOK
VLEVOVBOK
KONEC
KONEC
|
|
|
|
|
PRIKAZ
OPILEC
DOKUD NENI STISK
KDYZ JE NAHODA
KDYZ NENI ZED
KROK
KDYZ JE NAHODA
KDYZ NENI PLNO
POLOZ
KONEC JINAK
KONEC
KONEC JINAK
VLEVOVBOK
KONEC
KONEC JINAK
VLEVOVBOK
KONEC
KONEC JINAK
VLEVOVBOK
KONEC
KONEC
KONEC
|
|
|
|
|
PRIKAZ
CISTIC
DOKUD NENI STISK
KDYZ JE NAHODA
KDYZ NENI ZED
KROK
KDYZ JE NAHODA
KDYZ JE ZNACKA
ZVEDNI
KONEC JINAK
KONEC
KONEC JINAK
VLEVOVBOK
KONEC
KONEC JINAK
VLEVOVBOK
KONEC
KONEC JINAK
VLEVOVBOK
KONEC
KONEC
KONEC
|
|
|
Riešené
úlohy dowňák
|