Pannon Egyetem Műszaki Informatikai Kar
Tanári mesterképzési szak Informatikatanári szakképzettségi terület
A LOGO nyelv oktatása
Segesdiné Sárközi Anna
Témavezető: Gál Balázs
Veszprém 2010
-2-
TARTALOMJEGYZÉK
I.BEVEZETÉS
3
II. LOGO BEMUTATÁSA
5
III. ALGORITMUS
8
III.1. ALGORITMUS ÉS A LOGO NYELV OKTATÁSA AZ ISKOLÁBAN
9
III.1.1. Vezérlési szerkezetek, az algoritmus és a LOGO
11
IV. OBJEKTUMORIENTÁLT PROGRAMOZÁS ÉS AZ IMAGINE LOGO
13
V. AZ IMAGINE LOGO PROGRAM HASZNÁLATÁNAK BEMUTATÁSA EGY JÁTÉKPROGRAM ELKÉSZÍTÉSÉN KERESZTÜL
17
V.1. HÁTTÉR ELKÉSZÍTÉSE, SZÖVEGDOBOZOK, GOMBOK ELHELYEZÉSE
17
V.2. ELJÁRÁSOK KÉSZÍTÉSE
20
VI. ÖSSZEGZÉS
27
FELHASZNÁLT IRODALOM
29
-3-
I. BEVEZETÉS
Szakdolgozatom témája a tanulási nehézségekkel küzdő és sajátos nevelési igényű gyermekek integrált oktatása. Azért választottam ezt a témát, mert iskolánkban is integráltan
oktatjuk
szemléletváltást
az
igényelt
SNI
gyermekeket,
tantestületünktől.
amely
pedagógiai
Kutatásom
és
módszertani
kérdőíves
felmérése
intézményegységünk (központi iskola és két tagiskolája) informatika tanárainak körére is kiterjedt. Informatika tanáraink, köztük én is tanítunk SNI gyermekeket, és a tapasztalataink azt mutatják, hogy ezeknek a gyerekeknek, és a gyengébb tanulóknak is nehézséget okoz az algoritmizálás és a programozás lépéseinek megértése. Informatika órákon a logikus gondolkodás kialakításában, az algoritmizálás, programozás alapjainak megértéséhez nagy segítség az Imagine LOGO program. A LOGO-val könnyedén, játékosan, és talán a legegyszerűbben is fejleszthető a problémamegoldó gondolkodás. A feladatok részekre bonthatók, a részek és a kisebb egységek megértése könnyebb. A részek megoldása után az „egész” feladat újbóli felépítésével a felvetett problémák megoldhatók. A tanulási nehézségekkel küzdő és SNI gyermekeket oktató pedagógusok tudják, hogy az összetett feladatmegoldás, például szövegértési problémák miatt, nehézséget jelent ezeknek a gyermekeknek. Ha kisebb egységekre bontunk, náluk is sikereket érhetünk el, és ép társaikat is nagyobb sikerélményekhez juttathatjuk, tudásukat jobban megalapozhatjuk, mélyíthetjük. Az informatika órán alkalmazott Imagine LOGO objektumorientált programozás oktatását teszi lehetővé. A mai „szoftverkrízis”1 a programozást az objektumorientált programozás irányába mozdítja el. A programoknak minőségi jellemzőknek kell megfelelni, mint például
karbantarthatóság
és
bővíthetőség,
újrafelhasználhatóság,
kompatibilitás,
szabványosság, hatékonyság …. Az objektumorientált program egymással kommunikáló objektumok összessége, amelyben minden objektumnak megvan a jól meghatározott feladata. Ezzel a programozási szemlélettel tudjuk tanulóinkat megismertetni az Imagine LOGO oktatása során, amely későbbi ismeretbővítésükhöz ad segítséget.
1
A szoftverfejlesztés válsága, amely szerint egy hagyományos módszer már nem képes az igényeknek megfelelő, minőségi szoftver előállítására.
-4Záródolgozatom témaválasztásának másik oka az, hogy célom a diákokkal az informatikát megszerettetni. Ezt nem azzal szeretném elérni, hogy „jaj de jót játszottunk” vagy „szörföztünk a neten” legyen a tanóráról távozó gyermekek kellemes élménye, hanem ha játékosan is, de több tudással hagyják el a számítástechnika termet, mint tanóra elején bejöttek. Az Imagine LOGO egy oktatási eszköz, amellyel elősegíthető a felfedező, önálló tanulás, és amellyel a gyerekek egy kísérleti eszközt kaphatnak a kezükbe. A LOGO nyelv kialakulásával kapcsolatban két nevet meg kell említeni. Jean Piaget nevét, aki a gyermeki gondolkodás fejlődését vizsgálta. Szerinte a „gyerekek nem passzív befogadói a világnak, hanem próbálkozásaik, érzékelésük, tapasztalataik segítségével saját megismerő mechanizmusukat alakítják, építik. A megismerés a való világ viszonyainak cselekvés segítségével történő belsővé válása. A tudás tehát nem egy tiszta papíron megjelenő lenyomat, hanem az aktív tevékenység eredményeképpen létrejövő, a környezetére reagáló rendszer.” Piaget munkatársaként dolgozott Seymour Papert, aki fiatalabb korosztály számára a számítógép programozási feladatok érthetőbbé tételére találta ki a teknőcöt. A teknőcöt gondolati fogódzónak, közvetítő objektumnak szánta, amit a kisgyermekek elfogadnak, szívesen játszanak vele. A teknőc mozgatásával a gyerekek a teknőcöt „tanítják”. Elmélete szerint így a gyerekek önmaguk is tanítás nélkül tanulnak, amit észrevétlen, kényszer nélküli, hatékony tanulásnak nevez.2 A LOGO nyelv parancsnyelv, amely az 1960-as években a LISP nyelv mellékleteként jött létre. Ma már több mint 130 féle LOGO megvalósítás létezik. Ezek közé tartozik az Imagine LOGO is, amelyet ma előszeretettel használunk az informatika-órákon általános iskolás korú gyerekeknél a programozás elveinek megtanítása során. Az Imagine LOGO hét nyelven használható, köztük magyar nyelven is. Könczöl Tamás szerint a LOGO egy programozási nyelv és oktatási filozófia is egyben. Anyanyelvi utasításai, azok egyszerű szerkezete és a Teknőc megszemélyesíthetősége miatt elég fiatal korban elsajátítható a használata. A magyar Imagine és annak LOGO programozási nyelve ideális környezetet biztosít, a közoktatás teljes keresztmetszetén jól alkalmazható, oktatási célokra ingyenesen letölthető.
2
Bedő Ferenc: A Logo programozási nyelv neveléstörténeti gyökerei II.
-5-
II. LOGO BEMUTATÁSA
A LOGO az értelmező nyelvek közé tartozik, ami azt jelenti, hogy közvetlenül adhatunk és hajthatunk vele végre utasításokat. A teknőcgrafika elősegíti a vizuális értékelést. „A testszintónia – az a lehetőség, hogy a rajzolás folyamatának egyes lépéseit saját testünk mozgásához kapcsolhatjuk- igen jelentősen segít az algoritmusok megértésében.”3
Vajon merre forduljak a j 90 utasítás hatására? A mozgáskoordinációs problémákkal küzdő gyerekeknél a szemléltetéssel a mozgások érzékelését is fejleszti, hogy a teknőc állása, mozgásiránya minden időpillanatban követhető. A LOGO nyelvnek három fontos jellemzője van:
automata elvű nyelv funkcionális nyelv mikrovilág.
Automata nyelven írt programok végrehajtója egy vagy több automata. A LOGO-ban ilyen például a rajzoló automata, ami rendelkezik állapotokkal, és az állapotok közötti átmenetet leíró függvénnyel. A LOGO-ban állapotlekérő és állapotmódosító utasítások vannak. Állapotlekérő például a „mutat xpoz”, vagy a „mutat ypoz” utasítás, amellyel a teknőc x y koordinátájára kérdezhetünk rá. Állapotmódosító utasítás például az előre utasítás, amellyel a teknőc elmozdítható, de az „xypoz! szám szám” utasítással is megadhatjuk a teknőc új helyzetét. Nincs szükség hagyományosan vett változókra és kiírásra, mivel a változás nyoma a rajzablakon látszik, nyomon követhető. A LOGO egy mikrovilág. A gyerekek sajátos, játékos környezetben a teknőc mozgatásával tanulhatják meg a számítástechnika, algoritmizálás, programozás alapjait.
3
Farkas Károly: Objektumorientált programozási szemlélet tanítása a Logo-val
-6A mikrovilág jellemzői: Olyan eszköz, amely a tudásépítéshez megfelelő környezetet biztosít. Egy szoftveren belül sokrétű tevékenységet tesz lehetővé. A gyermeki aktivitást segíti, megjelenésével alkotásra ösztönöz. A spontán tanulás elősegítője, a tanulók próbálgatás segítségével is képesek rájönni a program funkcióira. Egységes tanulási környezetet teremtő szoftver. Munkakörnyezet, amiben a gyermek, számára munkának minősülő tevékenységet végez, tehát nem a klasszikus értelemben vett játék.4 A funkcionális nyelveknél a program egy függvény, így a program futása a függvény kiértékeléséből áll. A LOGO-ban való programkészítés során eljárásokat készítünk, amelyeket egymásba ágyazva is kezelhetünk. A teknőc helyzetét, mozgását paraméterekkel adjuk meg, de használhatunk lokális és globális változókat is. A LOGO-ban alkalmazzuk a vezérlési szerkezeteket: a szekvenciát, a szelekciót és az iterációt. A szekvencia az utasítások egymásutániságát jelenti. Például egy 100 egység oldalhosszúságú négyzet megrajzolható nyolc egymást követő utasítással: e 100 j 90 e 100 j 90 e 100 j 90 e 100 j 90 Ugyanez iterációval (ciklussal), vagyis ismétléssel is megoldható: ismétlés 4 [e 100 j 90]
(ism 4 [e 100 j 90]).
Az „amíg” feltételvizsgálattal is lehet ciklust létrehozni, ami egy előltesztelős ciklust eredményez, tehát az utasításokat addig hajtja végre, amíg a feltétel igaz. amíg [ypoz>-100] [h 20]
4
Farkas Károly: A Játékos Informatika hatékonyságának igazolása. Új Pedagógiai Szemle, 2000. I. évf. 11.
-7Szelekció többféleképpen megoldható a LOGO-ban. Talán a legegyszerűbb a „ha” feltétel vizsgálat. Ha a feltétel igaz (teljesül) az utasítás végrehajtódik. ha ypoz < 0 [e 100] A „hakülönben” (rövidítve:”hak”) segítségével megadhatjuk, hogy a tevékenységek közül melyik hajtódjon végre. hak ypoz>0 [h 50] [e 30] A vezérlő szerkezeteknél kell megemlíteni a rekurziót is, ami az ismétlési szerkezetek egyik fajtája. A rekurzió olyan program, amely meghívja önmagát. Minden rekurzió három részre bontható:
befejezési tétel feldolgozó rész ismételt programhívás módosított bemenettel.
eljárás kisebbnégyzet :hossz ha :hossz > 1 [e :hossz b 90 kisebbnégyzet :hossz - 3 b 90] vége
A LOGO filozófiája, a modulszerűen felépített programozás: a feladat részekre bontása a legegyszerűbb elemekig, majd a végleges megoldásnak az apró eljárásokból való felépítése. A programírás, illetve építés részekre bontható; tisztán alkalmazható az alulról fölfelé illetve a fölülről lefelé való részfeladatokra bontás elve. Jó modellező nyelv, amely -
alkalmas különböző típusú problémák megfogalmazására, az egyszerű rajzolási struktúráktól a bonyolult decentralizált rendszerekig,
-
elsajátítása egyszerű, amely a problémáktól való figyelem elterelése nélkül megtörténhet,
-
alkalmas
hierarchikus
építőkockák
készítésével
komplex
szerkezetek
létrehozására.5
5
Addo Stuur – Turcsányiné Szabó Márta: Comenius Logo Játék és Programozás. Kossuth Kiadó, Budapest
1998.
-8-
III. ALGORITMUS
Az algoritmus „egy feladat megoldását egyértelműen, véges számú lépésben, véges idő alatt, nem csak egy konkrét érték esetén szolgáltató leírás.”6 Az algoritmus a matematikában és az informatikában nagyon fontos fogalom. A program az algoritmus egy konkrét gépre, adott programnyelven megírt alakja. Az algoritmusoknak közös tulajdonságai: Az eljárás egyértelműen leírható véges szöveggel. Az eljárás minden lépése ténylegesen kivitelezhető. Az eljárás minden időpillanatban véges sok tárat használ. Az eljárás véges sok lépésből áll. Az algoritmusnak ugyanarra a bemenetre ugyanazt az eredményt kell adnia, és minden időpillanatban egyértelműen meghatározott a következő lépése (determinisztikus algoritmus). Determináltság: az algoritmus determinált, ha ugyanazokra a kezdőállapotokra és ugyanarra a bemenetre ugyanazt az eredményt adja. Determinisztikus: az algoritmus determinisztikus, ha minden időpontban egyértelmű, hogy mi lesz a következő lépés. Ha algoritmust készítünk, első lépés a cél meghatározása, vagyis milyen problémát akarunk megoldani, milyen kezdeti adataim vannak, mit akarok elérni. Ezek után az elemi lépéseket kell összegyűjteni, amelyeken végigmenve eljutunk a kitűzött célig. Elemi tevékenység az olyan legbonyolultabb tevékenység, amely a végrehajtó számára közvetlenül érthető és egyértelműen végrehajtható anélkül, hogy további részekre bontanánk.7 Az elemi lépések:
függetlenek, egyik sem állítható össze a többi elemi lépésből, relevánsak, vagyis mindegyik lépés legalább egyszeri végrehajtása kell a probléma megoldásához, teljes rendszert alkotnak, vagyis a megoldáshoz szükséges összes lépést össze kell gyűjteni.
6 7
Rozgonyi-Borus Ferenc – Dr. Kokas Károly: Informatika 8. Mozaik Kiadó Szeged, 2009. Simon Gyula: Programozás alapjai
-9Az elemi lépések meghatározása után, pontosan meg kell mondani, egy adott lépés után, mi lesz a következő lépés. Egy algoritmus nem tartalmazhat bizonytalan lépéseket. Ha a megoldás során több lehetséges végrehajtási mód is felmerül, akkor el kell dönteni, melyiket alkalmazzuk. „A véletlennek a hagyományos algoritmusban nincs szerepe.” Az algoritmus az elemi lépések olyan sorozata, amelynek jellemzője: véges: azaz véges számú lépés után befejeződik egyértelmű, determinisztikus: azaz bármely elemi tevékenység után a következő elemi tevékenység egyértelműen meghatározott teljes: nemcsak egy konkrét esetre alkalmazható, hanem az összes azonos jellegű feladatra.
III.1. ALGORITMUS ÉS A LOGO NYELV OKTATÁSA AZ ISKOLÁBAN
A LOGO nyelv oktatása általános iskolai szinten történik. A legtöbb általános iskolában csak ötödik osztálytól kezdenek komolyabban figyelmet fordítani a programozás alapjainak ismeretére. Alsó tagozatban ismerkednek a gyerekek a LOGO program felületével, de legtöbbször csak az előre elkészített játékokat alkalmazzák. Persze ez nem általánosítható. Vannak olyan iskolák, illetve informatikatanárok, akik már harmadik vagy negyedik osztályban megtanítják a tanulóknak a LOGO nyelv alapvető utasításait, amellyel szabályos síkidomokat tudnak készíteni a gyerekek. Ezek a gyerekek sem tudatosan készítenek algoritmusokat, hanem alkalmazzák összegyűjtött ismereteiket. Amikor ötödik, némelyik tanterv szerint hatodik osztályban elkezdjük a LOGO nyelv oktatását, az algoritmusokban való gondolkodást is fejlesztenünk kell. Ez azért is fontos, mert ötödiktől nyolcadik osztályig 35-40 tanóra áll erre rendelkezésünkre.8 Ebben az óraszámban benne vannak a bevezető, ismétlő órák, a rendszerező, összefoglaló órák, valamint a számonkérésekre szánt idő is.
8
Az Apácai Kiadó, a Pedellus Novitas Kiadó által készített, valamint a Mozaik Kerettanterv-rendszer és iskolánk helyi tantervének óraszámai szerint.
- 10 Hogyan kapcsolható össze a LOGO az algoritmizálással? A teknőc mozgatására algoritmust készítünk, amelyhez az algoritmizálás vizuális ábrázolásának eszközét, a folyamatábrát alkalmazzuk. A folyamatábra az algoritmus képi reprezentációja, amely a tevékenységeket és azok végrehajtási sorrendjét adja meg. Egy eszköz, amely segít az algoritmusok tervezésében, összetett folyamatok megértésében. A folyamatábra készítésekor a következő jeleket alkalmazzuk:
Start A program, eljárás kezdete.
Stop A program, eljárás vége. Utasítás A végrehajtandó feladat elemi lépését, parancsát adja meg. Feltétel A döntés szimbóluma. Ha a feltétel igaz, akkor az igaz ágon, ha a feltétel nem teljesül a hamis (nem) ágon megyünk tovább.
Adatbevitel szimbóluma.
Adatkiírás szimbóluma.
A végrehajtási sorrend a kezdet szimbólumtól a vége szimbólumig halad. Minden tevékenységből pontosan egy nyíl vezet a közvetkező végrehajtandó tevékenységhez. Elágazás után az igaz vagy a hamis feltételnek megfelelő nyíl mutatja a következő tevékenységet. Az algoritmusok oktatásának kezdetén nem minden jelet használunk, de nincs is szükségünk minden jelre a programozás alapjainak megértéséhez. A LOGO nyelv tanítása során a folyamatábrába nem parancsszavak írunk, hanem mondatokat, amelyekkel az utasításokat leírjuk. Amikor konkrét programnyelvekkel kezdenek megismerkedni a tanulók (például Pascal), ismereteik tovább bővíthetők.
- 11 III.1.1. Vezérlési szerkezetek, az algoritmus és a LOGO
A LOGO nyelv bemutatásakor már szóba kerültek a vezérlési szerkezetek. A legegyszerűbben megérthető a szekvencia, az utasítások egymásutánisága. Erre példa egy négyzet rajzolása a LOGO-ban.
e 100 j 90 e 100 j 90 e 100 j 90 e 100 j 90
Következő lépésként a feltételvizsgálatot nézzük meg. Először az ismétlést. Itt a hátultesztelős vagy előltesztelős megoldást is elfogadjuk. A különbség, hogy a hátultezstelős ciklus esetén minimum egyszer végrehajtódik/végrehajtódnak az utasítások. Amikor a ciklust tanítjuk a LOGO „ismétlés” utasításával, azokat a feladatokat vizsgáljuk, melyekben biztosan legalább kétszer megismétlődik egy vagy több utasítás. Ilyen például a négyzet rajzolása ismétléssel. ismétlés 4 [e 100 j 90]
(ism 4 [e 100 j 90])
- 12 Az „amíg” feltétel vizsgálat előtt a gyerekek matematikai ismereteit fel kell eleveníteni, mind a szögelfordulásokról, mind a koordináta rendszerről tanultak tekintetében. A teknőc a lapon mindig északi irányba áll. Ez a nulla fok, és egy teljes elfordulással, vagyis 360 fokos elfordulással kerül vissza ebbe a helyzetbe (Teljes Teknőc Tétel). Az amíg feltétel vizsgálattal például forgathatjuk a teknőcöt akár egy fokonként is jobbra vagy balra, amíg egy adott szögelfordulást el nem ér. Az Imagine LOGO lapján egy meg nem rajzolt koordináta rendszerben mozog a teknőc. A lépésék a koordináta tengely beosztásának egységei. Amikor a legelső lapon dolgozunk a teknőc pontosan a lap közepére, az origóra (0; 0) kerül. Nézzük egy egyszerű eljárást (iterációt), ami az „amíg” feltételvizsgálatot tartalmazza.
eljárás mozgat amíg [ypoz>-50] [h 30] vége
A szelekcióra egy példa, amikor csak a feltétel teljesülése esetén hajtódik végre az utasítás.
eljárás próbaha ha ypoz < 0 [e 100] vége
- 13 Elágazás, amikor a feltétel igaz, illetve hamis volta határozza meg a következő lépést.
eljárás probahak hak ypoz>0 [h 50] [e 30] vége
IV. OBJEKTUMORIENTÁLT PROGRAMOZÁS ÉS AZ IMAGINE LOGO9
Az objektumorientált programozás esetén központi fogalom az objektum. Az objektumnak mindig van egy azonosítója, amivel lehet rá hivatkozni, vannak tulajdonságai (adatai), melyek az összes fontos jellemzőjét leírják, és tartoznak hozzá metódusok (műveletek), melyek végrehajthatóak rajta. „Az objektumorientált nyelveket három fő tulajdonság jellemzi:
9
-
az egységbezárás,
-
az öröklődés,
-
a sokoldalúság.”10
Ezen fejezet Imagine Logo program objektumorientáltságának bemutatásához az Imagine Logo program súgóját használtam. 10 Benkő Tiborné – Benkő László – Tóth Bertalan – Varga Balázs: Programozzunk Turbo Pascal nyelven! ComputersBooks Kiadó, Bp. 2003. 339.p.
- 14 Az egységbezárás az összetartozó adatok és alprogramok (metódusok) osztályba való összezárását jelent. Így a programozva a kód strukturáltabb, vagyis érthetőbb lesz. Az öröklődés azt jelenti, hogy a már meglévő osztályokból kiindulva újabbakat építünk fel, amely örökli a felhasznált osztály (szülő) tulajdonságait. Az objektumorientált programozás fontos tulajdonságai közé tartozik a sokoldalúság, amelyet kihasználva a származtatott osztály örökölt tulajdonságai megváltoztathatók, kiegészíthetők. Mielőtt az Imagine Logo ezen jellemzőit megnéznénk, még egy fontos dologról kell beszélni, a láthatóságról. Láthatóság három féle lehet: public: mindenhol látható protected: csak saját objektumokban, osztályokban és az utódokban látszik private: csak saját objektumon, osztályon belül látszik. Az Imagine egy objektumorientált struktúrájú program. Objektumok és viselkedések, párhuzamos független folyamatok, közvetlen rajzolóeszközök, egy kiterjesztett közvetlen manipulációs felület és egyéb jellemzők hierarchiáját támogatja. A teknőc a legalapvetőbb objektum. A teknőc objektumosztály egyik példánya a lapra helyezett teknőc. A teknőc a lapon vagy panelen él. Ez a teknőc helye. Egy lapon vagy panelen több teknőc is elhelyezhető. Egy teknőc minden időpillanatban aktív vagy inaktív. Két fontos szabályt kell figyelembe vennünk több teknőccel való munka során. Minden teknőcre vonatkozó parancsot párhuzamosan hajt végre minden aktív teknőc. Minden teknőcre vonatkozó művelet az első aktív teknőc megfelelő beállításának aktuális értékével tér vissza. Az Imagine világa objektumokból és olyan utasításokból áll, amelyeket az objektumoknak lehet elküldeni, ezáltal futtatva őket. Az objektumoknak küldött utasítások mindig arra utasítják őket, hogy csináljanak valamit anélkül, hogy ismernék a „belsőjüket”. Az objektumok belsejét az osztályok létrehozása határozza meg. Az objektumok a kapcsolódó jellemzők alapján egy hierarchiába rendeződnek. Legfelül a Fő elnevezésű osztály áll. Ennek az osztálynak osztálya a teknőc osztály, amelynek egyik példánya egy teknőc. A teknőc meghatározott viselkedéssel vagy képességgel bír.
- 15 Minden osztálynak és példánynak van pontosan egy felmenő-osztálya, melyet szülőnek nevezünk. Például a teknőc osztály a t1 teknőc szülője. (A Fő osztálynak nincs szülője, ez a legáltalánosabb osztály.) A lapon élő minden objektumnak van egyedi neve. A név használatával küldhető utasítás az objektumnak. Például:
t2’e 100
vagy
lap2’t3’j 90
A szülőjükön kívül az objektumok kapcsolódhatnak további felmenő-osztályokhoz is, ez a többszörös öröklődés. Egy teknőc például tartozik egy teknőc osztályhoz, de ahhoz az osztályhoz is, amelyen él, a laposztályhoz. Ha a teknőcöt a lapon elhelyezett panelra helyezzük, a panel osztályhoz is tartozni fog, amely már ahhoz a laphoz tartozik, amelyen létrehozták. Az Imagine összes objektuma felosztható primitív adatokra és osztályok hierarchiájára. Primitív adatok a szöveg, amely szám is lehet, a lista és a kép. Ha egy primitív adat létrehozásra került, használtuk, de többet már nem kell, automatikusan törlődni fog. Ilyen például a mutat xpoz vagy kiír ypoz utasításra megadott számérték. A Fő osztály négyféle primitív alosztályból áll: vizuális elemek, vizuális helyek, nem vizuális objektumok (például: joystick), egyéb objektumok, amelyek közvetlenül a főosztályhoz kapcsolódnak. Vizuális elemek a teknőc, szövegdoboz, csúszka, gomb, eszközgomb, médialejátszó és a web. Vizuális helyek a lap, a panel és az eszköztár. A vizuális elemek és helyek látható formában jelennek meg a képernyőn. Sohasem törlődnek
automatikusan.
A
vizuális
osztályok
primitív
osztályait
nem
lehet
megváltoztatni. Minden objektum tárol információkat az objektumváltozóiban. Ezek együtt megadják az objektum állapotát. Az objektumnak küldött utasítások megváltoztatják ezt az állapotot. Az Imagine-ben kétféle változó van: nem objektumváltozó és objektumváltozó. Az objektumváltozók az objektumom belül tárolódnak. Némely objektumváltozók privátok (például az objektum létrehozási koordinátái), mások általánosak (például tollszín), és
- 16 megoszthatók az objektum összes leszármazottjával. Ha egy objektum saját változóit módosítjuk, a leszármazottak megfelelő saját változói nem változnak. Nem objektumváltozók a helyi (lokális) és globális változók. A globális változók elérhetők valamennyi eljárásból, folyamatból és objektumból. A lokális változók csak abból az eljárásból érhetők el, amely létrehozta a változót, vagy bármely aktív eljárásból, amelyet ebből hívtak meg. Egy objektum működését az összes felmenő osztálya meghatározza. Ezt nevezzük öröklődésnek. A szülőkhöz és a helyhez fűződő kapcsolat rögzül az objektum létrehozásakor, de a viselkedésekhez kötődő kapcsolatok ideiglenesek, bármikor létrehozhatók, törölhetők vagy megváltoztathatók. Az Imagine metódusai az eljárások, amelyek az objektumokhoz eseményként hozzáadhatók. Egy eljárás, egy másik eljárásból is meghívható. Az eljárást elkészíthetjük az objektumra vonatkozóan. Ekkor ezt az eljárást maga az objektum és a belőle létrehozott objektumok láthatják (protected). Ha egy eljárást a főosztályban hozzuk létre, akkor bármelyik objektum elérheti (public). Végezetül nézzünk az öröklődésre és a sokoldalúságra egy nagyon egyszerű példát. A t1 teknőcből létrehozhatunk egy t2 teknőcöt a klónoz "t1 [poz [-100 -100] vonszolható hamis] utasítással. Ezek után a t2 nevű teknőcön, ami örökölte szülője tulajdonságait változtatásokat hajtunk végre: t2'tsz! "vörös
t2'tv! 7.
Létrehozzuk a t2 teknőcből a t3 nevű teknőcöt. Ez a teknőc örökli a t2 tulajdonságait. Hozzáadunk egy eljárást, amivel kört rajzoltathatunk a haKlikk eseménnyel, és megváltoztatjuk az alakját. Ezt a teknőcöt klónozzuk, vagyis örököltetjük a tulajdonságait a t4 teknőcöt kapjuk. A t4 tollszínét kékre állítjuk. Ha a t4 teknőcre kattintunk, láthatjuk, hogy a t3-ban létrehozott eljárás és hozzáadott esemény is öröklődött. t1
t2
t3
t4
- 17 -
V. AZ IMAGINE LOGO PROGRAM HASZNÁLATÁNAK BEMUTATÁSA EGY JÁTÉKPROGRAM ELKÉSZÍTÉSÉN KERESZTÜL
Egy Bogi versenynek elnevezett játék elkészítésének menetén keresztül mutatom be az Imagine LOGO programot. A játék elkészítése során nem használtam ki a program által adott összes lehetőséget. A játékprogram magyarázata feltételezi az Imagine LOGO minimális szintű ismeretét, az alapvető utasítások és ikonok használatát. Az általam készített játékban rajzolt, animált bogarak (bogik) versenyeznek. A verseny előtt fogadni lehet a győztesre, és a verseny végén kiírásra kerül, hogy ki nyerte meg a futamot és megnyertük-e a fogadást. Ezt a kis játékot azért készítettem, mert egy nagyon hasonló programot készítettünk informatikatanár képzésünk folyamán. Persze nem Imagine Logo volt a felhasznált környezet, hanem a Microsoft Visual Studio 2005, amelyben C# nyelven programoztunk, és használata során szerezhettünk ismereteket az objektumorientált programozásról.
V.1. HÁTTÉR ELKÉSZÍTÉSE, SZÖVEGDOBOZOK, GOMBOK ELHELYEZÉSE
Első lépésként a játék hátterét kell elkészíteni. Ezt mindenki ízlésének megfelelően alakíthatja a festő eszköztár segítségével. A versenyző bogarak az y tengelyre vetítve 30-as és 120-as koordináta vonalában fognak vízszintesen mozogni. A versenyzők célja az x tengely 250 egységnél húzott függőleges vonal lesz. A cél megrajzolása a következő utasítássorral lehetséges. tf xypoz! 250 -40
- 18 tv! 7 tsz! "vörös tl e 210 tf A célvonal megrajzolása után elhelyezzük a lapon a szövegdobozokat.
A fenti képen látható, hogy összesen hat szövegdobozt helyeztünk el a lapon. Tehát most van szd1, szd2, …, szd6 szövegdobozunk. A továbbiakban, ha nem változtatjuk meg az elnevezést, nehezen fogunk eligazodni közöttük. Az szd1 szövegdoboz kivételével minden szövegdoboznak a tartalmára utaló nevet adunk. Ha láthatatlanná tesszük a szövegdobozt, akkor is tudni fogjuk, melyik, milyen szöveget tartalmaz. Elhelyezzük a lapon a gombokat. Kettő gomb kell a fogadás megtételéhez. Egy gomb az indításhoz, egy az új játék indításához, és egy az eredmény kiíratásához.
- 19 Az eljárások megírása előtt a versenyzőket kell elhelyezni a lapon. Egy teknőcünk már van, egy újabbat illesztünk a lapra. Mindkét teknőc alakját és méretét is megváltoztathatjuk. Ezek után figyelnünk kell az esetleges utasítások kiadására. Vagy mindkét teknőcöt aktívvá kell tenni, vagy a t1’, illetve t2’ kifejezéssel jelölnünk kell melyik teknőcre vonatkoznak utasításaink. Készülő játékprogramunk intézője a következő:
Az intézőben az elhelyezett szövegdobozok, teknőcök és gombok láthatók, amelyek a Fő osztályba tartozó lap1 osztály objektumai. A teknőcök a teknőc osztályhoz, a szövegdobozok a szövegdoboz osztályhoz, a gombok a gombosztályhoz tartoznak, amik a lap1-hez, mint vizuális helyhez, tartozó vizuális elemek. Mindent elhelyeztünk a lapon, ami a játékprogramunkhoz kell. Következő lépés az eljárások elkészítése.
- 20 -
IV.2. ELJÁRÁSOK KÉSZÍTÉSE
Az eljárások elkészítése előtt végig kell gondolni, milyen feladatokat kell megoldanunk. 1. A teknőcöket versenyeztetni akarjuk, tehát a lapon egy függőleges vonal mentén kell elhelyeznünk őket (rajtpozició). Ez úgy tudjuk megoldani, hogy mindkét teknőc y koordinátája ugyanakkora lesz. Ezen kívül a teknőcöket egy irányba is kell állítani, hogy a lapon vízszintesen mozogjanak. 2. A teknőcöket mozgatni kell. Mivel versenyeztetni akarunk, nem adhatjuk meg az előrehaladás konkrét értékét. Véletlen számot kell generálnunk, ami az előrelépés nagyságát megadja. Végtelen ideig nem léptethetjük a teknőcöket, de az előrelépések számát sem érdemes pontosan megadni. Ezért egy feltételvizsgálatot kell végezni. A cél az x koordináta 250-es értékéhez lett berajzolva. A teknőcök addig
mozognak,
míg
a
vízszintes
vonal
mentén
eddig
eljutnak.
A
feltételvizsgálatot elég csak az egyik teknőc mozgásánál elvégezni, amely mindkét teknőc mozgásának leállását jelenti majd. 3. A teknőcöket el kell rajtoltatni, ami a teknőcök mozgását indítja el. Ez most feleslegesnek tűnik, mivel az előző pontban a mozgatást írtuk le. Mivel több szövegdoboz is van a lapon, ezeknek nem kell mindig látszódniuk, majd itt kerül beállításra mikor melyik jelenjen meg. (Szövegdoboz láthatóságát az első pont eljárásánál is változtatni kell majd.) 4. A játék lényege, hogy fogadjunk, és megnyerjük a fogadást. Tehát ki kell íratni a játék eredményét, és a nyertes fogadást. Ehhez három eljárást fogunk készíteni, egyet az első versenyzőre, egyet a második versenyzőre való fogadásra, és egyet a nyertes versenyző kiíratására. Mielőtt bármelyik eljárást elkészítenénk, egy globális változót kell bevezetni. Azért van szükségünk globális változóra, mert szeretnénk, hogy bármelyik eljárás hozzáférhessen. A változókat a LOGO-ban nem kell deklarálni. A másik tulajdonsága a változóknak, hogy a változó egy tömb, amelyben tárolhatunk számokat, szöveget, karaktert, de akár számpárokat is. Egy változóban, vagyis tömbben ezek vegyesen is előfordulhatnak.
- 21 globvál "fszám [ ] globvál "fszám elsőnek 0 :fszám
Az fszám változó létrehozása után a tömb első tagjának értékét beállítjuk nullára. A nulla érték jelenti, hogy nem tettünk még fogadást. Az első eljárásunk a pozicionálás. Az eljárás az indhelyzet nevet kapja. eljárás indhelyzet t1'xypoz! -370 120 t2'xypoz! -370 30 t1'irány! 90 t2'irány! 90 globvál "fszám csere 1 :fszám 0 vége Ezen az eljáráson később még módosítunk a szövegdobozok láthatóságának beállítása miatt. A pozicionáláshoz feleslegesnek tűnik a globvál "fszám csere 1 :fszám 0 sor. Erre azért van szükség, hogy a futamokban tett fogadásokat törölni tudjuk. Ha utasításként begépeljük az indhelyzet eljárás nevét, értelmezi a LOGO, a teknőcök beállnak a starthelyzetre. Az elkészített játékban nem fogunk utasításokat gépelni. Az Új játék feliratú gombra kattintva szeretnénk a teknőcöket startra állítani. Ezért az Újjáték gombhoz haLenyom eseményként hozzáadjuk az indhelyzet eljárást.
- 22 Következő eljárást a teknőcök mozgatására kell elkészíteni.
eljárás mozgat amíg [t1'xpoz < 250] [t1'e 1+ vsz 10 t2'e 1+ vsz 10 várj 100] vége
Ebben az eljárásban minimum egy lépést megtesz mindegyik teknőc, de a véletlenszám (vsz) parancs előállít egy értéket. Ezzel a véletlenszámmal növeli a lépések számát. A vsz 10 paranccsal olyan értéket állítunk elő, amely 1 és 10 közé esik. A várj 100 utasításra azért van szükség, mert nélküle a teknőcök „végig rohannának” a pályán. Tehát a megadott ezredmásodpercig várakozik a program. eljárás rajt t1'mozgat t2'mozgat vége A rajt eljárás egy egyszerű szekvencia, amit eseményként a rajt gombhoz hozzá kell adnunk. Így már két gombunk működik a játékban. A starthoz tudjuk állítani a versenyzőket az Új játék gombbal, és a versenyt lejátszhatjuk a Start gombbal. (A mellékelt CD-én CD_1 néven megtalálható az eddig elkészített játékprogram.)
- 23 A következő két eljárás nagyon egyszerű. Ha az egyes versenyzőre fogadunk, akkor az fszám tömb első elemének értékét 1-re, ha a kettes versenyzőre fogadunk 2-re kell állítani. Az indhelyzet eljárásban (amit már megírtunk) az fszám értékét mindig visszaállítjuk nullára. eljárás fogad1 globvál "fszám csere 1 :fszám 1 vége
eljárás fogad2 globvál "fszám csere 1 :fszám 2 vége Mivel a fogadás az 1. vagy a 2. gombra való kattintással történik, az 1. gomb eseményeként a fogad1 eljárást, a 2. gomb eseményeként a fogad2 eljárást hozzá kell adni. A gombok működését a gombra való kattintás után, az fszám kiíratásával ellenőrizhetjük. Kattintás az 1. gombra: Kattintás a 2. gombra: Kattintás az Új játék gombra:
A nyertes és a fogadás kiíratására több feltételt tartalmazó eljárást kell írnunk. Az eljárás bonyolultnak tűnik, de a folyamatábráját végignézve, logikája végigkövethető. eljárás nyertes hak t1'xpoz > t2'xpoz [nyertelső'látható! "igaz ha első :fszám = 1 [gratula'látható! "igaz]] [hak t1'xpoz = t2'xpoz [döntetlen'látható! "igaz]
- 24 [nyertmásodik'látható! "igaz ha első :fszám = 2 [gratula'látható! "igaz]]] várj 3000 gratula'látható! "hamis döntetlen'látható! "hamis nyertelső'látható! "hamis nyertmásodik'látható! "hamis vége
- 25 Az eljárás megírása után az Eredmény feliratú gombhoz eseményként a nyertes eljárást hozzá kell adni. Ezek után már csak egy kis módosítást kell csinálnunk. A verseny rajtja után nem akarjuk, hogy a fogadás megváltoztatható legyen. A rajt gomb megnyomása után a kirefogad szövegdobozt és a fogadás két gombját láthatatlanná kell tennünk. Tehát a rajt eljárást kiegészítjük az alábbiak szerint: eljárás rajt kirefogad'látható! "hamis 1.'látható! "hamis 2.'látható! "hamis t1'mozgat t2'mozgat vége Ha a rajtnál ezeket a szövegdobozokat láthatatlanná tesszük, az új játék kérésekor újra láthatóvá kell tenni. Tehát az indhelyzet eljárást is módosítani kell. eljárás indhelyzet t1'xypoz! -370 120 t2'xypoz! -370 30 t1'irány! 90 t2'irány! 90 globvál "fszám csere 1 :fszám 0 kirefogad'látható! "igaz 1.'látható! "igaz 2.'látható! "igaz vége
- 26 Játékprogramunk elkészült. (Az elkészített Bogi játék a mellékelt CD-én CD_2 illetve CD_21 néven megtalálható.) A játék teljes felépítését az alábbi ábrák mutatják:
CD_2
CD_21
Az elkészített játékprogramunk felépítése mindkettő lehet. A különbség a kettő között, hogy a CD_2 program eljárásai minden objektum számára elérhetőek, bármikor bármelyik objektumhoz eseményként hozzáadhatóak. A CD_21 program eljárásai (kivétel a mozgat eljárás, mivel a rajt eljárás meghívja) csak az adott objektumhoz tartoznak, csak az adott
- 27 objektumhoz adható hozzá eseményként. Ezeket az eljárásokat a többi objektum nem „láthatja”. Az elkészített programunkat játéknak szántuk, nem szeretnénk, hogy a „felhasználók” véletlenül változtatnának rajta. Az Imagine LOGO-ban elkészített munkánkat *.exe fáljként is el tudjuk menteni. (A mellékelt CD-én CD_3 néven található.) Az
elkészült
programot
úgy
is
elmenthetjük,
hogy
a
legelterjedtebb
böngészőprogramokban is megtekinthető legyen (CD_4). (Ehhez a plugin telepítése szükséges.) Sokan a LOGO nyelvet csak általános iskolai oktatáshoz kapcsolják, pedig készíthető vele például sorba rendezés, maximum vagy minimum keresési eljárás is. Tanítási órák színessé tételéhez interaktív táblán használható szemléltető eszköz is létrehozható, hangfájlok, videók beillesztését is lehetővé teszi.
VI. ÖSSZEGZÉS
A játékprogram készítésén végigmenve érezhető, hogy nem használtunk ki minden lehetőségét a LOGO programozási nyelvnek. Hogy milyen lehetőségeink vannak még az Imagine LOGO-ban? Erről a program súgójában, a Sulinet Digitális Tudásbázisból, valamint az Imagine LOGO oldalán, a http://logo.sulinet.hu/ és a http://imagine.elte.hu/ oldalon található információk alapján tájékozódhatunk. Az oktatás során nagyon jól alkalmazható Andrej Blaho és Ivan Kalas: Az Imagine varázslatos világa című munkafüzet, amely a program könyvtárában megtalálható. A LOGO nyelv és az algoritmizálás alapjainak oktatásához a Comenius LOGO, a Lapoda LOGO és az Imagine LOGO is jól használható. Ezek a programok hasonlítanak egymáshoz, de számos ponton különböznek is. Mindegyik egy oktató jellegű mikrovilág, amely módosítható, elősegítve ezzel a tanítási folyamatot. Különböző a felületük, az
- 28 elérthető funkcióik. A parancsok hasonlóak, de a Comenius LOGO-ban megírt eljárásokat nem lehet lefuttatni az Imagine LOGO alatt. A LOGO nyelv nem csak az oktatás kezdeti szakaszában, hanem akár a középfokú és felsőfokú oktatásban is eredményesen alkalmazható például a MicroWorlds Logo használatával.
- 29 -
FELHASZNÁLT IRODALOM Addo Stuur – Turcsányiné Szabó Márta: Comenius Logo Játék és Programozás. Kossuth Kiadó, Budapest 1998. Andrej Blaho és Ivan Kalas: Az Imagine varázslatos világa http://logo.sulinet.hu/ utolsó hozzáférés: 2010. május 10. Bedő Ferenc: A Logo programozási nyelv neveléstörténeti gyökerei II. http://w3.enternet.hu/infokt/logo/l_lnt2.htm utolsó hozzáférés: 2010. május 10. Benkő Tiborné – Benkő László – Tóth Bertalan – Varga Balázs: Programozzunk Turbo Pascal nyelven! ComputersBooks Kiadó, Bp. 2003. Farkas Károly: Objektumorientált teknőc-geometria http://www.arg.unideb.hu/if2008/kiadvany/papers/D45.pdf utolsó hozzáférés: 2010. május 15. Farkas Károly: A Játékos Informatika hatékonyságának igazolása. Új Pedagógiai Szemle, 2000. I. évf. 11. IMAGINE portál http://imagine.elte.hu/ utolsó hozzáférés: 2010. május 10.
Itt az IMAGINE! http://logo.sulinet.hu/ utolsó hozzáférés: 2010. május 10. Rozgonyi-Borus Ferenc – Dr. Kokas Károly: Informatika 8. Mozaik Kiadó Szeged, 2009. Simon Gyula: Programozás alapjai (diasorozat)
- 30 Sulinet Digitális Tudásbázis http://sdt.sulinet.hu/Player/default.aspx?g=ffa68cfb-dea9-44bf-b06447dd85c24c1c&v=1&b=3&cid=ce1ba150-9bbd-440b-95ff-7911348378b9 utolsó hozzáférés: 2010. május 10. Weigel Szilvia: A Logo programozási nyelv weszil.hu/suli/zv/logo_szilvi_bemutato.ppt utolsó hozzáférés: 2010. május 10.
Wikipedia http://hu.wikipedia.org utolsó hozzáférés: 2010. május 10.