Programozás és robotika #2: A belépési pont | KOLLABOR

Programozás és robotika #2: A belépési pont

Szerző: 2020. 06. 21.Blog, Robotika

Ebben a részben a számítógép-programozás egyik legalapvetőbb elvével ismerkedhettek meg, mely szinte minden programozási nyelvben jelen van. A szemléltetéshez az előző részben bemutatott Microsoft MakeCode for Micro Bit nevű szoftvert fogjuk alkalmazni. A MakeCode kétféle módban is működtethető: lehet vele programkódot írni JavaScript nyelven, viszont mi most a másik módban fogjuk használni, melyben vizuálisan, úgynevezett blokkok segítségével lehet szó szerint összepattintani programokat.

Vágjunk is bele: nyissuk meg a MakeCode for Micro Bit felületét (ami még mindig a makecode.microbit.org címen lakik) és kezdjünk egy új projektet. Akárcsak az előző részben, a MakeCode ismét megkínál bennünket két blokkal az elején: az egyikre az „indításkor”, a másikra az „állandóan” felirat van vésve. Utóbbitól most egy laza mozdulattal megszabadulunk, egyelőre nem lesz rá szükség.

Az indításkor blokk jelöli a programunk belépési pontját, ami egész egyszerűen azt takarja, hogy ha a programunkat lefuttatjuk, akkor az erről a szent helyről fog indulni, és a program azokat a műveleteket fogja legelőször elvégezni, amiket a belépési pontnál, azaz jelen esetben az indításkor blokkban helyezünk el. A legtöbb programozási nyelvben az a szokás, hogy egy programnak egy darab belépési pontja van, ez sok esetben „main” néven fut egyébként (pl. C, C++, C#, Rust, Kotlin és Java nyelveken is). A legtöbb operációs rendszer is azt várja el, hogy egy futtatható programnak pontosan egy darab belépési pontja legyen, de például az Android nem tartozik ezek közé.

No de ez most mindegy is, a lényeg, hogy egy MakeCode projektben is egy darab indításkor blokk lehet csak. Ha kinyitom az Alapok kategóriát és behúzok még egy indításkor blokkot, meg még egyet, meg még egyet, akkor a MakeCode azt magasról le fogja ignorálni. Úgyhogy ezen a ponton a többit törlöm is: csak egy maradhat.

Az előző részben megemlítettem már, hogy a MakeCode-ban több különböző blokktípus leledzik. Ezek közül kettőt nevesítettem is, az egyik az esemény, a másik a parancs blokk típus volt.

Hello world!

Az esemény blokkokat – ilyen az indításkor blokk is – leginkább a közepükön elhelyezkedő bazinagy bevágásról lehet felismerni, továbbá arról, hogy az ilyen blokkokra egy olyan kifejezés van ráírva, ami a „mikor?” kérdőszóra viszonylag értelmesnek hangzó választ ad. Mikor? Indításkor.

Most az Alapok kategóriából kihalászok egy parancs blokkot: legyen mondjuk az előző részben már belengetett ledek bekapcsolása. A parancs blokkokat a tetejükön található bemélyedésről és az aljukon található kitüremkedésről lehet a legjobban felismerni, amiknek a párját az esemény blokk bevágásánál is felfedezhetjük. Ezek a blokkok végrehajtható feladatokat, utasításokat tartalmaznak és leginkább a „mi történjen?” kérdésre adnak választ, többnyire „valami csinálása” formátumban, de itt a MakeCode magyar fordítása némileg inkonzisztens – egyelőre legalábbis.

Ha a ledek bekapcsolása blokkot az indításkor blokk bevágása fölé húzom, egy kis animáció is mutatni fogja, hogy az oda remekül beilleszthető lesz. Ha elengedem az egeret, be is pattan a helyére. Ezzel létrejött egy rendkívül egyszerű program, melynek a belépési pontján lefut egy, azaz egy darab parancs, ami a virtuális Micro Bit kütyün megjeleníti azt az ábrát, amit megrajzoltam. A MakeCode alapjáraton minden egyes módosítás után elkezdi az elejéről futtatni a programot, amit összeraktunk; így ha kiveszem a ledek bekapcsolása blokkot az indításkor blokkból, rögtön láthatjuk is ennek az eredményét: tök sötét a kijelző, mivel az indításkor blokkban – a programunk belépési pontján – nem található olyan parancs blokk, ami bármit felrajzolna rá.

A virtuális Micro Bit alatt található stop gomb megnyomásával egyébként ki lehet kapcsolni az automatikus futtatás funkciót, így a MakeCode nem fogja minden egyes módosítás után elejéről futtatni a programunkat. Ezt a funkciót a lejátszás gomb megnyomásával lehet visszakapcsolni.

Előbb az egyik, aztán a másik

Most nézzük meg, mi történik, ha kihalászok még egy ledek bekapcsolása blokkot az Alapok kategóriából és azt elhelyezem a meglévő ledek bekapcsolása blokk alatt eggyel. Ha erre is rajzolok valamit, majd elindítom a programunkat, láthatjuk, hogy a kijelzőn mindkét rajz megjelenik: előbb az egyik, aztán a másik. Az esemény blokkokban ugyanis tetszőleges számú parancs blokkot elhelyezhetünk egymás alatt, ezeket felülről lefelé haladva fogja a számítógép egymás után végrehajtani. Most elhelyezek egy harmadik ledek bekapcsolása blokkot is, így már egy három képkockából álló animációnál tartunk.

Ha az alsó blokkot az egérrel megragadom, azt át tudom tenni az indításkor blokkunk tetejére, így módosítható a blokkok sorrendje. Fontos, hogy a MakeCode-ban ha elkezdünk vonszolni egy blokkot, az az összes alatta lévő blokkot is magával húzza, ami sokszor hasznos, de néha pont nem. Ezt meg kell szokni. Az biztos, hogy ha mondjuk három parancs blokkból a középsőt szeretnénk eltávolítani, akkor annak a legegyszerűbb mondja ennek a kijelölése és a Delete vagy Backspace gomb használata, vagy jobb klikk a törlendő blokkra és a helyi menüből válasszuk a „Blokk törlése” opciót.

Még több parancs

Zárásként még megmutatok néhány hasonló elven működő parancs blokkot is, melyek szintén az Alapok kategóriában laknak és melyek segítségével a kijelzőn lehet dolgokat megjeleníteni; ilyen például a szám kiírása, mely egy kötelezően kitöltendő paraméterrel is rendelkezik: azt a számot fogja kiírni a kijelzőre, amit a paraméterben megadtunk. Ha ez a szám 0 és 9 közötti egész szám, akkor az ki fog férni a kijelzőre, egyéb esetben viszont nem, ezért ilyenkor a Micro Bit egy LED-es reklámtáblához hasonlóan jobbról balra görgeti végig a megadott számot a kijelzőn. Ennek a blokknak közeli rokona a szöveg kiírása, mely pontosan ugyanezt tudja, csak szöveggel: egész pontosan az angol ábécé betűit, néhány írásjelet, gyakran használt speciális karaktereket és számokat lehet megjeleníteni a segítségével. Egy karakternél hosszabb szövegeknél itt is a fényújság metódus játszik. Gyakran hasznos még az ikon megjelenítése blokk, ami olyan, mint a rajzolós ledek bekapcsolása blokk, csak lustáknak: előre gyártott piktogramokat lehet vele a kijelzőn megjeleníteni, miután kiválasztottunk egyet paraméterként a lenyitható listából.

Az Alapok kategória neve alatt szereplő továbbiak vagy more feliratra kattintva találunk még két kijelző-manipuláló parancsblokkot: az egyik az összes LED-et kikapcsolja (tehát tök ugyanazt csinálja, mintha egy rajz nélküli ledek bekapcsolása blokkot használnánk, csak ez kisebb), illetve van még egy előre legyártott ikonokat megjelenítő blokk, ez nyíl megjelenítése néven fut, paramétereként pedig megadhatjuk, hogy milyen irányba mutató nyilat szeretnénk a kijelzőn látni. Az Alapok kategóriában már csak egy parancsblokk maradt, amiről még nem beszéltem, ez pedig a meglehetősen beszédes nevű szünet blokk, mely futtatáskor a paramétereként megadott ezredmásodpercig várakoztatja a kütyüt, mielőtt a következő parancsra lépne.

Tehát összefoglalva: ebben a részben szót ejtettünk a programok belépési pontjáról, ahol parancsokat, vagy más néven utasításokat helyezhetünk el, amiket a számítógép felülről lefele haladva egymás után fog elvégezni. A következő részben folytatjuk ezt a témát és megismerkedünk a változókkal is.

Érdekel a robotika? Beszélgessünk!

Várunk a Kollabor Közösség Discord szerverén a #robotika csatornán!

https://discord.gg/RMkdBX6