Nem akármilyen hét köszöntött ránk, ugyanis április 4 és 8 között rendezik az első Digitális Témahét programját, amely keretén belül országszerte több száz általános és középiskolában jelenhetnek meg a modern digitális eszközök és szolgáltatásokat az oktatás részeként. A HelloWorld oktatási mozgalmunkkal mi is csatlakoztunk az Emberi Erőforrások Minisztériuma által kiírt kezdeményezéshez, a hét folyamán megosztva a teljes Scratch-suli tananyagunkat, amely segítségével bárki elsajátíthatja a programozás alapjait. Lentebb elolvashatod sorozatunk harmadik részét - ha többre vágysz, gyere vissza holnap is, vagy látogasd meg Robotprogramozó táboraink valamelyikét.
Az idei nyár sem maradhat HelloWorld tábor nélkül! Milyen lesz? Vegyétek a tavalyit, és szorozzátok meg kettővel :) Új helyszínnel, új programokkal és tananyagokkal készülünk. Velünk tartotok?
Közzétette: HelloWorld – 2016. március 3.
Nem csupán játékos formában hasznosíthatjuk fejlesztői tudásunkat, a Scratch segítségével ugyanis valóban hasznos irodai alkalmazásokkal is bővíthetjük szoftveres repertoárunkat. Az ilyen programok megalkotása igazi kihívás lehet, a haladó logikai lépéseknek köszönhetően jelentős mérföldkőként szerepelhet kódolási fejlődésünkben. Most megmutatjuk, hogyan állíthatunk össze néhány egyszerű lépésben egy teljes egészében működőképes, alapvető műveleteket könnyen elvégző számológépet.
Alkotásra fel
Oldalunkról is letölthető alkalmazásunk nem igényel külön kiegészítő képeket, hisz a saját "szoftverünk" megalkotásához mindössze néhány objektumra lesz szükségünk, melyeket a Scratch képszerkesztőjében pillanatok alatt elkészíthetünk. A számológépet vezérlő gombok létrehozásához éppen ezért hívjunk életre tíz szereplőt, melyekre egyesével vázoljuk fel nulla és kilenc között a számokat. Ezt követően a műveletek elvégzéséhez szükséges billentyűket is vezessük fel vásznunkra (tehát készítsünk további öt szereplőt, melyekre a négy alapművelet, valamint az egyenlőség jeleit skicceljük fel). Amint létrehoztuk a szükséges billentyűket, nem lesz más teendőnk, mint tetszőleges sorrendben elhelyeznünk a rendelkezésünkre álló vászon felületén.
A megfelelő formavilág kialakítását követően el is kezdhetjük létrehozott digitális eszközünk programozását. Az egyelőre működésképtelen gombsorunkba egyszerű üzenetküldések segítségével lehelhetünk életet, ehhez pedig az [e szereplőre kattintáskor] startszabályt helyezzük el az összes szereplő programozási felületén, majd minden egyes ághoz csatoljunk egy, a billentyű felületén található felirattal megegyező kis üzenetet (ne csak a számok esetén járjunk el ilyen módon, a műveleteket tartalmazó gomboknál is hajtsuk végre a programozás kezdő lépéseit). A számsor programozását ezennel le is tudtuk, csupán a műveletekhez kell majd visszatérnünk a későbbiekben.
Megfelelő háttér
Gombjaink hatásait a háttéren összpontosítjuk, ezen a felületen tehát sorban fel kell vezetnünk az összes lehetséges érkező üzenet startértékét. Hogy a későbbiekben listázhassuk a számológépünkre küldött adatokat, két dologra lesz szükségünk: egy listára (melyben eltároljuk a számológépünkre érkező számokat és műveleteket), valamint egy változóra (amely az éppen beírt információinkat és a kapott végeredményünket a megjelenítőre varázsolja).
A két komponens létrehozása után a listák megjelenítését kikapcsolhatjuk, azonban a pontosabb visszajelzés érdekében érdemes helyet szorítanunk a lista adatait prezentáló felületnek a rendelkezésünkre álló vásznon. Első körben garantáljuk, hogy a megalkotott listánk minden újraindítást követően törlődjön, ehhez pedig nem kell mást tennünk, mint a háttér programozási felületén az indítási zöld zászlóra kattintást kiegészítenünk az előzőekben létrehozott változó üres értékre állításával és a lista minden feladatának törlésével.
Kiírás a kimenetre
Egy apró trükk segítségével valósítjuk meg a gombok leütésének követését, mely az ideiglenesen tárolt felületre egészen addig ontja a numerikus adatokat, ameddig egy következő műveleti jel meg nem szakítja a számsort. Nézzük meg egy konkrét példán keresztül, mit kell tennünk az egyes számkarakterek leütését követően. Az 1 jelzésű gombra kattintva egy üzenet érkezik a háttér felületére, ezt követően nincs más teendőnk, mint a [változónk legyen] utasítást csatolni a recepthez. Az értékadó négyzetébe pedig a Műveletek menüponton belül elrejtett [együtt] funkciót kell csatolnunk, melynek első értéke az ideiglenesen tárolt változó, második értéke pedig az adott gombon található szám (jelen esetben tehát az 1).
Ezután az összes lehetséges számot tartalmazó üzenettel kapcsolatban is járjunk el hasonlóan, és már pötyöghetjük is be az értékeket a változó megjelenítésével létrehozott kijelzőre. Miután már lehetőséget kínál a programunk hosszú számok begépelésére, kíséreljük meg eltárolni listánkba az egyes funkciókat. A számok bevitelét egészen addig engedélyezzük, amíg egy műveleti jelre nem kattintunk. E funkció megvalósításához a szereplő üzenetküldő rítusa után helyezzünk el egy blokkot, amivel a változónkat a listához fűzzük (add-to) majd egy következő blokk hozzáadásával ürítsük ki az aktuális változót. Az így megalkotott képletet az összes műveleti jelet tartalmazó billentyű mellé kell társítanunk.
Végső simítások
Térjünk vissza ismételten a háttér programozási felületéhez, ahol most a műveleti jelektől érkező üzeneteket kezeljük le és illesszük be a listánkba. Ehhez az [insert] funkciót használjuk, amivel helyezzük listánk utolsó helyére az éppen aktivált művelet jelét. Hasonlóan a számsorok megalkotásához, a jelek listára helyezéséhez is az [együtt] műveletet kell használnunk annyi különbséggel, hogy most első helyre kerüljön a kiszemelt jel, mögé pedig a változó, amit rögtön a következő lépésben (vagyis azonnal a listára helyezést követően) a már korábbiakban alkalmazott módon ki kell ürítenünk. Miután mindent megfelelően beállítottunk, csupán az egyenlőségjel által érkező lezáró üzenet receptjének megalkotása maradt hátra. Természetesen itt is apró trükkök segítségével egyszerűsítsük le teendőinket; egyetlen dolgot kell csupán szem előtt tartanunk, ami nem más, mint a szépen sorrendben eltárolt szám-művelet-szám hármasok, hiszen megfelelő hívásukkal könnyedén előáll a keresett eredményünk.
Az egyenlőségjelre kattintással érkező üzenet blokkja után helyezzünk el egy [ha-akkor] elágazást, melynek feltételébe egy egyenlőségi műveletet ékeljünk, itt fogjuk ugyanis lekezelni az aktuálisan kiválasztott művelet igazságértékét. A zöld mező bal oldali négyzetébe építsük be a lista második elemét figyelő funkciót (item 2 of lista), jobb oldalra pedig a használni kívánt jel kerüljön. A [ha-akkor] funkción belül helyezzünk el egy, a változónk értékének módosítására szolgáló blokkot, és az ehhez aktuálisan kiválasztott műveletet pakoljuk az átadni kívánt értéken belülre, méghozzá oly módon, hogy az [item-of] funkció mindenkori első és harmadik értéke kerüljön sorrendben a jobb és bal oldalra. Hozzunk létre a már kész recept alapján mind a négy művelethez egy-egy ilyen módon felépített [ha] elágazást, a feltételes opciók után pedig egy [ismételd kétszer] blokkot szúrjunk a képlet végére, melyben az első elem törlését követeljük meg a listánkból. A harmadik elemtől nem szabadulunk meg, az ő helyére kell beszúrnunk a két számunkból megalkotott ideiglenes értéket a [replace item 1 at lista with változó] parancs csatolásával; ily módon a többszöri művelet végrehajtása során sem sérül a listánk elején folyton figyelt hármas csapat jelenléte.
A megfelelő visszacsatoláshoz még egy [ha-akkor-különben] elágazást kell a képletünk végéhez illesztenünk, melynek feltételeként listánk hosszát kell felügyelnünk, és egészen addig újra kiküldenünk az egyenlő gombra kattintáskor is továbbított üzenetet, amíg az aktuális elemszám egynél nagyobb értéket mutat. Az eredmény megfelelő megjelenítésének érdekében a [különben] ágban helyezzünk el egy várakozási blokkot, majd a zászlóra kattintásnál használt eszközök segítségével ürítsük ki a listát és a változót. Mindössze ennyi munkára volt szükségünk ahhoz, hogy egy alapvető funkciókkal bíró számológépet megalkossunk, melynek képességeit a rendelkezésünkre álló műveletek segítségével tesztelhetjük.
Bővítési lehetőségek
Rengeteg fejlesztési lehetőségünk van, ha kissé tovább szeretnénk gondolni a számológépünket. Egy egyszerű tizedespont segítségével például a törtszámokat is pillanatok alatt bevezethetünk. Emellett a nullosztás lehetőségét is érdemes lehet kiszűrni; igaz, hogy az ilyen művelet végrehajtását azonnal mutatja a kijelzőnk, azonban sokkal elegánsabb, ha saját hibaüzenettel szakítjuk meg a program működését. Persze további műveleteket is bevezethetünk (gyökvonás, négyzetre emelés), akár extra billentyűkkel is kiegészíthetjük már meglévő felületünket. Sőt a billentyűfigyelést a háttérre programozva akár klaviatúránkról is vezérelhetjük az adatok bevitelét.
A sorozat tovább részei:
1 - Kezdjünk el programozni
2 - Támadnak az űrlények
3 - Műveletek bűvkörében
4 - Kártyajáték születik
5 - Többjátékos üzemmód
6 - 3D-s játékkészítés
7 - Extrák a programozáshoz