A Scratch objektumorientált, interpretált, dinamikus és vizuális programozási nyelv, amelyet elsősorban a programozással ismerkedő gyerekek számára fejlesztenek.

Scratch

Paradigma
Jellemző kiterjesztés
  • sb
  • sb2
  • sb3
  • sprite
  • sprite2
  • sprite3
Megjelent2001
TervezőMitchel Resnick
FejlesztőMitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, és Brian Silverman
Utolsó kiadás3.0 (stabil verzió, 2019. január 2.)[1]
Hatással volt rá
  • Logo
  • Etoys
  • StarLogo
  • AgentSheets
Operációs rendszerWindows, Mac OS X, Raspbian, Android
Licenc3-clause BSD License
Weboldal

Ötvözete többek között a Squeak EToys, a CricketBlocks és a Logo környezeteknek. A programkód – amely a programkészítés során felhasznált szereplők viselkedését írja le – színekkel kategorizált kirakóelemekből építhető össze. Ezek parancsok, változók, állapotkomponensek, logikai kifejezések, elágazás- és ciklusszervező utasítások, és csak szintaktikailag helyes módon illeszkednek egymáshoz. A programozás eseményvezérelt, és sokszor többszálú.

A Scratch ingyenesen letölthető, és egyre több iskolában használják világszerte (például magyarul is tud). Jelenleg Windows, Mac OS X és Raspbian (Raspberry pi) operációs rendszerekre telepíthető.

A Scratch-et a Lifelong Kindergarten csoport fejleszti az MIT Media Lab keretein belül. Mottójuk: “Az óvodásokra jellemző világmegismerési-tanulási folyamatot minden korosztályra ki kell terjeszteni.” A csoport az óvodások alkotójátékát irigyelte meg, amely során a gyerekek saját célokat fogalmaznak meg, a felmerülő problémahelyzeteket pedig kísérletezéssel oldják meg. Valamely cél elérése általában újabb ötletek megfogalmazásához vezet, így a megoldandó problémák, és a megszerzett tapasztalatok is egyre magasabb szintűek lehetnek. Egy kezdőknek tervezett felületnek az önálló kísérletezést kell minden lehetséges módon támogatnia. A Scratch nemcsak gyerekeknek, hanem bárkinek jól használható környezet lehet.

Objektumorientáltság szerkesztés

 
Parancsszavak
 
Mintaprogram

A Scratch-ben való programozás objektumorientált. Úgy véljük, hogy az objektumelvű programozás sikeres lehet kisgyerekek körében is. Bizonyítandó, hogy képesek objektumokban gondolkozni, elég számítógépes játékokat tekintenünk – például a Super Mariót – ahol az eredményes játék feltétele a játék szereplőinek megkülönböztetése, tulajdonságaik és a közöttük fennálló lehetséges kapcsolatok megértése. Akik tudnak Mariózni – márpedig a kisgyerekekre ez igaz –, azok objektumorientáltan is tudnak gondolkodni. Számunkra ez a legjobb eszköz, amivel interaktív grafikus programokat[2] tudunk készíteni. Nyilvánvalóan más szoftverekkel is készíthető volna kirakójáték, képvetítő, országkereső és társasjáték, de azok a környezetek biztosan bonyolultabbak a Scratch-nél. A kirakóelemek nyelve egyetlen kattintással átállítható, így a programkódot készítő, és az azt megtekintő személyeknek nem kell érteniük egymás nyelvén.

A Scratch-ben minden parancs könnyen elérhető, nem kell súgót vagy honlapokat böngészni ahhoz, hogy a kiadható parancsokat és azok helyes használatát megtaláljuk. A kezelőfelület könnyen áttekinthető: a három fő részből álló (parancskészlet, programozási tér, játéktér) szerszámosláda-szerű ablak mellett csak egy továbbit, a festőablakot kell használni a programkészítés során. Az algoritmus és az eredmény egyszerre látható, így a kettő közti kapcsolat követhető és világos. Mint minden „valamire való” nyelvben, a Scratch-ben is lehet szekvenciát, ciklust és elágazást készíteni. Ha áttekintjük az egyes vezérlőutasítások népszerűségét a Scratch-elő gyerekek körében, a következő kép rajzolódik ki:

  • Habár a legnépszerűbb szerkezet a szekvencia, nagyon kevés programban szorítkoznak a szekvencia kizárólagos használatára.
  • A legnépszerűbb vezérlőparancs a végtelen ciklus, amely mind animáció-, mind játékkészítésnél hasznos.
  • Szintén közkedvelt (eseményvezérelt környezetről lévén szó) a mindig ha parancs, amely egy végtelen ciklus, és egy ha parancs ötvözet.
  • Előbbi parancs szinte kiszorítja a „klasszikus” ha szerkezetet.
  • A csak adott számszor lefutó ismétlés nem gyakori.
  • Nagyon ritkán használják az ismételd eddig ciklust, amelynek szinte csak elméleti jelentősége van (a környezet ugyanis ezzel a paranccsal együtt biztosíthatja az ún. strukturált programozás alapszerkezeteit).

Típusok szerepköre szerkesztés

  • A szövegtípus ritka, csak konstans paraméterként jelenik meg. Ebben a vizuális- mozgásos környezetben a szövegműveletek nem motiváltak, így azok nincsenek.
  • A logikai típushoz már a megszokott műveletek is hozzátartoznak: és, vagy, nem. Ezek természetesen egymásba is ágyazhatók.
  • A számtípus lehet egész és valós értékű is, szükség esetén a környezet kerekít. Szám a legtöbb állapotkomponens (x hely, méret stb.), ezenkívül például grafikus hatások mértékét is számmal fejezik ki. A számtípushoz az összes ismert matematikai függvényt hozzácsatolták (például arcus cosinus), és változót is számtípussal lehet létrehozni.

Változó szerkesztés

A létrehozott változókhoz egy-egy opcionálisan megjeleníthető kijelző tartozik a játéktérben. A kijelzőn szerepel a változó neve, de ha egyértelmű, hogy a változó mit számlál, a név elrejthető (nagy kijelző). Arra is lehetőség van, hogy egy változó értékét kívülről, tehát a felhasználói oldalról is változtatni lehessen: ekkor egy beállítható tartományú csúszkát lehet megjeleníteni a kijelző alsó felén.

Nem lehet szintaktikai hibát véteni: ahová például csak logikai állítás való (mondjuk egy elágazás megszervezésekor), oda csak logikai értékek, ahová szám, oda csak számértékek illeszthetők (a kirakóelemek formái is segítenek a megkülönböztetésben). Minthogy hibázni nem lehet, a visszacsatolás azonnali (nem csak később derül ki a probléma, mikorra az algoritmus már tovább bővült), és a tévesztés nem jár kudarccal, mert nincsenek hibaüzenetek.

A grafikus programkód ízlésesen jeleníti meg a parancsokat: mutatja az egymásba ágyazásokat, színekkel különbözteti meg az eltérő kategóriákba (mozgás, vezérlés stb.) eső utasításokat. A fogd és vidd technikának köszönhetően a szöveges gépelésnél hatékonyabban változtatható meg a kód: könnyű parancsblokkokat mozgatni, paramétereket átírni vagy lecserélni, feltételeket változtatni. A módosítások akár dinamikusan, programfutás közben is elvégezhetők.

Eseményvezérelt programozás szerkesztés

A környezettel való ismerkedés elején a parancsok egyesével is kipróbálhatók. Úgy látom, hogy rögtön ezután a parancsokat gomblenyomásokhoz érdemes rendelni. Egyrészt a gombokkal való irányítás természetes ötlet,másrészt előnyös, ha már a legelső programok is interaktívak. A Scratch-ben az eljárások elsősorban perifériás eseményekhez kötött feladatok. A billentyűzet gombjainak lenyomásán túl valamely szereplőre való kattintást is lehet az ún. eseményjelző sapkákkal figyelni.

Programokban előfordulhatnak olyan „belső események”, amelyek valamikor bekövetkeznek, de nem köthetők perifériához (a billentyűzethez vagy az egérhez). Kétféle megoldást vázolhatunk fel – és ez már módszertani meggondolás –, aszerint hogy a belső esemény egyszer, vagy többször következhet-e be. Csak egyszer fog például az élet változó nullázódni. A megmutatott kódrészletben a várj eddig parancs úgy viselkedik, mint egy sorompó: a változó 3-ra állítása után csak akkor engedi tovább a vezérlést, ha az élet felveszi a nulla értéket (többszálú programozásról lévén szó, a várakozás ideje alatt zajlik tulajdonképpen a játék). Rendszeres esemény lehet például két szereplő ütközése. Meggondolandó, hogy az ütközést annak a szereplőnek érdemes vizsgálnia, amelyik arra reagálni kíván. Ha például egy szellem újra meg újra felbukkanó gyertyákat gyűjt, akkor (habár mi a szellemet irányítjuk) a gyertyának érdemes vizsgálnia találkozást, minthogy neki lesz feladata egy új helyre ugrani. Itt a már ismert mindig ha parancs jöhet kapóra.

Szereplőközpontú programozás szerkesztés

Már többször szóba került, hogy a programozás során szereplőket vezérlünk. A programban használt szereplők a jobb alsó részen gyülekeznek, és mindegyikükhöz feladatok (eljárások), jelmezek és hangok tartoznak. Jelmezek például webböngészőből, fájlkezelőkből közvetlenül áthúzhatók a jelmezlistába, de hagyományos módon is megnyithatók képfájlok (bmp, jpg, png, gif stb.). Hangokra ez hasonlóképpen igaz (a Scratch kezeli például a wav és az mp3 formátumokat).

Érdekes eredményre jutunk, ha egy szereplő önmagának küld üzenetet: ilyenkor „klasszikus” eljárás-meghívást hozunk létre. A példa egy olyan katicát mutat, amelyet a nyílgombokkal lehet irányítani, és amely számára a piros szín halálos. Az egyes irányokba való elmozdításokban csak a szög beállítása eltérő, utána mind a lépés, mind a színellenőrzés közös rész. Most is üzenetküldést használhatunk. Paraméter nélküli eljárást készítettünk. Paraméteres eljárások készítését a környezet nem teszi lehetővé, de játékkészítésnél azok viszonylag ritkán volnának szükségesek, és globális változókkal egyébként is kiküszöbölhetők.

Jegyzetek szerkesztés

  1. Scratch 3.0 is here!. (Hozzáférés: 2019. január 2.)
  2. Számítógépes grafika

Külső hivatkozások szerkesztés