>

Scratch programozás


Forrás (medium.com)

Scratch programozási nyelv

A Scratch egy kifejezetten gyerekek (8-18 éves korosztály) számára fejlesztett programozási környezet. Ingyenesen letölthető Windows és Mac OS X és Linux rendszerekre. Legújabb változatát pedig már webes felületen is használhatjuk. Több mint 40 nyelven, köztük magyarul is használható!

Interpretált, vizuális programozási nyelv. A dinamikus nyelvek csoportjába tartozik – a kód a program futása közben is változtatható. A fejlesztését 2004-ben kezdte a Lifelong Kindergarten csoport az MIT (Massachusetts Institute of Technology) egyetemen, és az első hivatalos verziója 2007-ben jelent meg. Azzal a céllal készült, hogy a programozással még csak ismerkedő gyerekek is könnyedén alkothassanak animációkat, játékokat. A Scratch készítői egy olyan környezet megírására vállalkoztak, amelyben a programozás módja és tárgya a programozással ismerkedők számára érdekes és látványos.

A Scratch-ben való programozás kirakójátékozásra hasonlít: parancsokat és változókat felhasználva úgy lehet algoritmusokat összeépíteni, mint egy kirakót a darabjaiból. Ezek az elemek csak helyes módon illeszkednek egymáshoz. Az objektumorientált (szereplőközpontú) programozás támogatja az interaktív programok (például játékok) készítését, és segítségével kevésbé kell elvonatkoztatni a köznapi valóságtól. A környezet lehetőséget nyújt álló- és mozgóképi, hangi és zenei elemek vegyes használatára, így különböző tartalmakat és gondolatokat változatos médiaelemekkel lehet közvetíteni. Az elkészült programok feltölthetők a nemzetközi oldalra, ahol lehetőség van másoktól tanulni, mások munkáit értékelni, javaslatot tenni és fogadni. A programkódot mindenki a saját nyelvén tekintheti meg (ha a megfelelő fordítás létezik), így a programkódot készítő, és az azt megtekintő személyeknek nem kell érteniük egymás nyelvén.

Rövid története

 

Gyakorló feladatok

A. Rajzos feladatok egy szereplővel

Rajzolj egy téglalapot a tábla peremére 3 pont vastag piros vonallal!

Állítsd be a macsek, a "rajztábla" és a toll dolgait (emeld is fel hogy még ne firkáljon)!

Ugorj az egyik sarokba, nézz jó irányba, majd rajzolj vonalat egy másik sarokig!

Ezt ismételd, míg az összes vonal elkészül!

Végül ugorj az origóba, s írd ki, hogy "Kész"!

Használd az "ugorj ...", a "nézz ..." és végül a "gondold ..." utasításokat, valamint a tollkezelő parancsokat!

Kérdés: mik lehetnek a sarokpontok koordinátái?

Rajzold meg az origóból /ez a (0,0) pont/ indulva a koordinátatengelyeket 1 pont vastag zöld vonallal!

Állítsd be a macsek, a "rajztábla" és a toll dolgait!

Ezután ugorj az origóba!

Mindegyik féltengely megrajzolása után ugorj vissza az origóba!

A rajzoláshoz használd a "csússz ..." parancsot!


Rajzoltasd meg a következő ábrát egy kicsi bogárral lassítva! A négyzeteket a számok sorrendjében rajzolja meg a bogár és közepe az origóban legyen! (Az oldalak hossza 150 pixel.)

Cseréld le a macskát! Állítsd be a szükségeseket (célszerű először felfelé nézni és majd mindig jobbra fordulni)!

Az első négyzet megrajzolása után fordulj jobbra 90 fokot, s jöhet a következő négyzet. (És így tovább!!!)

(Aki elegendően lusta, rövidítheti ezt a sok parancsot. Lásd a lenti Help-et!)

Help (csak tedd ide az egérkurzort)


Készíts egy olyan hátteret, hogy alul barna (a föld), felül kék (az ég) legyen! Rajzolj az égre és a földre véletlen helyekre 5 pont nagy fehér pöttyöket!

Készítsd el a hátteret, majd állítsd be a szükségeseket!

Próbáld összerakni az "ugorj x: véletlen -240 és 240 között     y: véletlen -180 és 180 között" parancsot!

Ha sikerül, kettőt rákattintva elugrik egy véletlenszerű helyre. Pontot is tesz, ha ugrás előtt felemeld, utána leteszed a tollat.

Ha jól működik minden, beteheted egy "mindig" elembe (ciklusnak is hívják), és ismétli a "végtelenségig", vagy míg le nem állítod.

Help (csak tedd ide az egérkurzort)


B. Animációs feladatok

Egy dino lépkedjen végig a tábla legalján!

Használd a "mindig" és a "következő jelmez" parancsokat!

(A háttér idézze a dinók korát!)


A kicsinyített cica sétáljon át a tábla közepén, a széleknél forduljon vissza!

Használd a "mindig", a "következő jelmez" és a "ha szélen vagy ..." parancsokat!

Rajzolj téglafal hátteret!


A kicsi bőregér véletlenszerűen irányt váltva repkedjen a táblán!

Használd a "mindig", a "következő jelmez", a "ha szélen vagy ..." és a "fordulj ..." parancsokat!

(A háttér megtalálható a gyűjteményben.)


Mozogjon egy labda örökkön-örökké a játéktéren, s húzzon 1 pixeles kék csíkot maga után!
Ha a szélére ér, pattanjon vissza!

A "space/szóköz" billentyű lenyomására váltson irányt véletlenszerűen (0-360 fok közt), és változtassa a tollszínt 20-al!

Használd a "szóköz lenyomásakor", "fordulj ...", "tollszín változzon ..." parancsokat!


C. Rajzeszköztár, lenyomatok, jelmezek

Válassz egy a dinoszauruszok korához illő hátteret!

Válaszd szereplőnek az ábrán látható dinót (ennek sok jelmeze van), majd készíts ezekkel a háttérre lenyomatokat!
Ezután töröld ezt a szereplőt!

Válassz egy nagyobb dinót és ez kocogjon fel-le! Színe változzon (legyen más a jelmezek színe), így jobban félnek a kisdinók!


Válaszd a rajzon látható szereplőt (pingvin) és hátteret (téli táj)!

Rajzold a háttérre a célt jelző táblát!

Írd meg a pingvin mozgását szimuláló programot! (Egy kis várakozás sem árt a jelmezváltások közt.)


Készíts a Paint rajzprogrammal hátteret, és töltsd fel egy általad kitalált programhoz! A kép mérete 480 x 360 pixel legyen!

Tehetsz rá dolgokat egy alkalmas szereplő lenyomataival (pl. fák).

A szereplő mozogjon a háttéren (az enyémen a banya mozog, de a legnagyobb fa mögött, s a többi előtt)!


Készíts fényképezőgéppel vagy telefonnal néhány szép képet (lehetnek családi fotók is), és töltsd fel a gépeden egy könyvtárba! A képek méretét módosítsd 480 x 360 pixelre!

Állítsd be ezeket a képeket egy szereplő jelmezeinek!

Írj szöveget (képaláírást) mindegyik jelmezhez, majd jelenítsd meg sorban a jelmezeket (olyanok mintha diák lennének) egy "szóköz" lenyomásával!


G. Geometria - számlálós ciklusok

Készítsd el a rajzon látható házikót!

Az oldalak mérete 160 képpont.

A legvégén a cica bújjon be a házba!


Készítsd el a szalagot úgy, hogy 8 négyzetből álljon,
és nagyjából töltse ki a lapot!

A vonal vastagsága 1 pont, színe a cica színével egyezzen!


Szője meg a pók a hálóját:

- szabályos háromszögekből (a megadott sorrendben)
- szürke színnel
- lassítva


Szője meg a pók ezt a különleges pókhálót!

Help (csak tedd ide az egérkurzort)


Készítsd el a ábrán látható csillagot!

A tollszín lila, a toll mérete 2 pont.

Help (csak tedd ide az egérkurzort)


H. Szövegkezelés - elágazások

Kérj be egy hárombetűs szót!

Ha valóban ennyi,
     írd ki: "Rendben, ez hárombetűs!"

Help (csak tedd ide az egérkurzort)


Kérj be egy nyolcbetűs szót!

Ha valóban ennyi,
     írd ki: "Rendben, ez nyolcbetűs!"
egyébként
     nyávogjon!


Kérj be egy hárombetűs szót!

Ha valóban ennyi,
     írd ki a betűit fordítva
egyébként
     írd ki: "Ez nem hárombetűs" és nyávogjon!


Kérj be egy "ly"-ra végződő négybetűs szót!

Ha a válasz hossza 4 akkor
     Ha a 3. betű "l" és a 4. betű "y" akkor
          írd ki: "Rendben!"
     egyébként
          írd ki: "Nem stimmel!" és nyávogjon!
egyébként
     írd ki: "Ez nem négybetűs!"

Algoritmus (kattints ide)


Kérj be egy mondatot, majd írd ki, hogy kijelentő, kérdő vagy felszólító mondat-e!

Algoritmus (kattints ide)


I. Változók használata

Kérd be egy négyzet oldalának hosszát ( válasz )!

Írd ki a kerületének ( 4 * válasz ) és a területének ( válasz * válasz ) nagyságát!

(A "válasz" tárolja a bekért adatot, "változónak" is nevezhető. Kapcsold be, hogy látható legyen!)

Help (csak tedd ide az egérkurzort)


Kérj be két előjeles számot, majd írd ki az összegüket a következőképpen:
     eszám - egyik szám ( -30 <= eszám <= 10 )
     mszám - másik szám ( -20 <= mszám <= 20 )
     összeg - az előbbi két szám összege


Kérj be egy "n" pozitív egész számot (legfeljebb 10 legyen)!

Írasd ki a számokat "n"-ig lassítva: 1, 2, ... , n !


Kérj be egy "n" pozitív egész számot (legfeljebb 10 legyen)!

Írasd ki a számokat "n"-től fordítva, lassítva: n, ... , 2, 1 !


Kérj be egy kétjegyű számot!

Ellenőrizd,
     ha nem kétjegyű, írj ki hibaüzenetet
     egyébként számítsd ki és írd ki jegyeinek összegét!

Oldd meg a feladatot kétféleképpen: csak a "válasz" használatával illetve segédváltozókkal!
(Kapcsold be a "válasz" láthatóságát, míg a többiét kapcsold ki!)

Algoritmus (kattints ide)


K. Körök, változók

Készítsd szabályos 6, 8, 12, 48 szöget! (Utóbbi már szinte kör!)

Az egyes részprogik az "a", "b", "c", "d" billentyűk lenyomására induljanak, és egy háttérre rajzoljanak!
Használj változókat a "szóköz"-re induló 24 oldalúhoz (n=24 - oldalszám, a - oldalhossz, e - elfordulás szöge)!

Help (csak tedd ide az egérkurzort)


Készíts programot a körökből álló ábra megvalósítására!


Készíts programot a körökből álló ábra megvalósítására!

Help (csak tedd ide az egérkurzort)


Készíts programot a körökből álló ábra megvalósítására!


Készíts programot a körökből álló ábra megvalósítására!

Segítségül:
- a színek beállításához célszerű öt színes pöttyöt tenni a háttérre (kék,fekete,piros/sárga,zöld)
- a körök (48 oldalú) tetejének koordinátái: (-100;120), (0;120), (100;120), (-50;20), (50;20)

Észrevetted, hogy öt nagyon hasonló részprogramod van? Lehetne egy ciklusba "gyűrni"?

Algoritmus (kattints ide)


V. Vegyes feladatok

Készítsd el a rajzon látható mintákat!

Az egyes minták az "a", "b" illetve a "c" billentyűk lenyomására rajzolódjanak ki.


Rajzolj véletlenszerű helyre 8 pixel méretű színes pontokat (1000 darabot)!


Rajzold meg az ábrán látható panelházakat!

(Magasságuk és színük véletlenszerű.)


Számítsd ki a héttel osztható kétjegyű számok összegét az "ismételd" és az "ismételd eddig:" ciklusok mindegyikével!

Algoritmus (kattints ide)


Készíts egy olyan hátteret, hogy alul barna (a föld), felül kék (az ég) legyen!

Rajzolj a földre 500 véletlen helyre 5 pont nagy fehér pöttyöket!

(Módosítsuk a programot úgy, hogy a föld már teljesen fehér, csak a kék "égen" vannak hópelyhek!)


 

Elmélet és feladatok

S. Utasítássorok (szekvenciák)

Számítsuk ki és írjuk ki egy bekért szám négyzetét!

A szám legyen a "szam", a négyzete a "negyzet" változóban!

  • szám bekérése (válasz)
  • "szam" legyen a "válasz"
  • "negyzet" egyenlő szam*szam
  • kiírni a "negyzet"-et

Rajzoljuk meg kékkel a koordinátarendszer x éx y tengelyét!

  • rajztábla törlése
  • toll beállítása (szín, méret) /két utasítás/
  • toll felemelése
  • ugrás a (-240;0) helyre
  • toll lerakása
  • ugrás a (240;0) helyre
  • toll felemelése
  • ugrás a (0;180) helyre
  • toll lerakása
  • ugrás a (0;-180) helyre

Készítsd el azokat a szekvenciális (soros) programokat, amelyek "összehozzák" a jobboldali ábrát!

Segítségül néhány javaslat:

  • több szereplő legyen (macska, A, B)
  • a macsek szereplő rajzolja ki az x és az y féltengelyeket
  • a látható változók az A és a B koordinátái (véletlenszámok a pozitív negyedben)
  • az A, B szereplők ugorjanak a helyükre, s írják ki koordinátáikat
  • a macsek szereplő rajzolja ki az AB szakaszt (és álljon félre)

A szekvencia egyszerű tevékenységek, utasítások sorozata; egymás után, sorrendben végrehajtható utasításokat jelent.


E. Elágazások/kiválasztások (szelekciók)

Döntsük el, hogy egya bekért háromjegyű szám osztható-e 10-el!

Használjuk a "ha ... akkor ..." elágazást! A program az "e" betű lenyomására induljon!

  • írjuk ki "Kérek egy háromjegyű számot:", és kérjük is be
  • a "válasz"-t tegyük a "szam" változóba
  • egy "ha ... akkor ..." modulban írjuk ki "A szám osztható 10-el"
    a feltétel: a "szam" 3. betűjének vizsgálata

(Ha nem osztható, akkor nem írunk ki semmit.)


Döntsük el, hogy egy bekért háromjegyű szám osztható-e 10-el!

Használjuk a "ha ... akkor ... különben ..." elágazást! A program az "k" betű lenyomására induljon!

  • írjuk ki "Kérek egy háromjegyű számot:", és kérjük is be
  • a "válasz"-t tegyük a "szam" változóba
  • egy "ha ... akkor ... különben ..." modulban írjuk ki: "A szám osztható 10-el" vagy "A szám nem osztható 10-el"
    a feltétel: a "szam" 3. betűjének vizsgálata

Oldjuk meg az előző feladatot úgy, hogy bármilyen pozitív egész számra helyesen működjön!

Help (csak tedd ide az egérkurzort)


Kérjünk be egy -99 és 99 közé eső egészet, és írjuk ki hogy milyen előjelű és hányjegyű! ( pl. -99: "A szám negatív, kétjegyű" )

Egy lehetséges megoldás (vázlatosan):

  • írjuk ki: "Kérek egy -99 és 99 közé eső egész számot: ", és kérjük is be
  • a "válasz"-t tegyük a "szam" változóba
  • három "ha ... akkor ..." modulban vizsgáljuk a "szam" előjelét (szam=0, >0 vagy 0<)
  • adjunk ezekben értéket a "szoveg" változónak ("A szám nulla (azaz egyjegyű)", "A szám pozitív, ", "A szám negatív, ")
  • a "ha szam>0 akkor ..." elágazásba tegyünk két újabb elágazást, ezekben a feltétel a "szam hossza = ..."
  • belül a "szoveg"-hez ragasszuk (együtt) még az "egyjegyű" illetve "kétjegyű" szöveget
  • a "ha szam<0 akkor ..." elágazás hasonló felépítésű az előbbihez
  • végül írassuk ki az összegyűjtött "szoveg"-et

Algoritmus (kattints ide)


Az elágazás segítségével valamely utasításcsoport végrehajtását feltétel bekövetkezéséhez köthetjük.    EE   KIE   TIE


C. Ismétlések/ciklusok (iterációk)

Írjuk ki (kis szünettel) az öttel osztható háromjegyű számokat 150-ig (ezt is)!

Használjuk az "ismételd ..." ciklust! A program az "m" betű lenyomására induljon!

  • használjuk a "szam" változót a háromjegyű tárolására
  • állítsuk be a kezdőértékét
  • gondoljuk végig, hogy hányszor ismétlődjön a ciklus
  • a ciklusban írjuk ki (várakozással)
  • a ciklusban növeljük meg (ügyesen)

Írjuk ki (kis szünettel) az öttel osztható háromjegyű számokat 150-ig (ezt is)!

Használjuk az "ismételd eddig: ..." ciklust! A program az "e" betű lenyomására induljon!

Az elöltesztelő ciklusba akkor lép be, ha a feltétel HAMIS.
Az elöltesztelő ciklusból akkor lép ki, ha a feltétel IGAZ.

  • használjuk a "szam" változót a háromjegyű tárolására
  • állítsuk be a kezdőértékét
  • gondoljuk végig, mi legyen a "ciklusfeltétel"
  • a ciklusban írjuk ki (várakozással)
  • a ciklusban növeljük meg (ügyesen)

Írjuk ki (kis szünettel) az öttel osztható háromjegyű számokat 150-ig (ezt is)!

Használjuk a "mindig" ciklust! A program az "o" betű lenyomására induljon!

  • használjuk a "szam" változót a háromjegyű tárolására
  • állítsuk be a kezdőértékét
  • a ciklusban írjuk ki (várakozással)
  • a ciklusban növeljük meg (ügyesen)
  • tegyünk még bele egy "ha" modult, s ebbe egy "ez a feladat álljon le" parancsot, mert valóban örökös ciklus lesz
    gondoljuk végig, mi legyen a "feltétel"

Készítsd el a jobboldali ábrát!

Segítségül csak ennyit:

  • egy számlálós elkészíti a piros háromszöget (oldala 150)
  • a következő a kisebb zöldet (oldala 100)
  • ezeket ismételjük 3-szor

Algoritmus (kattints ide)


Rajzold meg egy-egy programmal a jobboldali négy ábrát!


Rajzold meg egy-egy programmal a jobboldali hat ábrát!


A ciklus ismétlődő tevékenységek megvalósítására szolgál.    SZC   ETC   HTC


F. Eljárások, függvények

Készítsük el a jobboldali ábrát kirajzoló programot!

Először csináljunk egy "négyzet" parancsot (eljárásnak is hívják), benne:

  • tollat le
  • egy 4-es ciklusban: előre 100 pixel, jobbra fordul 90 fok
  • tollat fel

Próbáljuk ki!

Vegyük észre, hogy ha egy négyzet kirajzolása után előre megyünk 100 pixelt és balra fordulunk 120 fokot, akkor a következő négyzethez érkezünk. Tehát csak ezt kell 3-szor ismételni.

A főprogram tehát:

  • beállítások (cica, toll)
  • ciklus 3-szor
         négyzet
         előre 100 pixel
         balra 120 fok

Készítsünk programot, amely egy bekért felső határig kiírja a prímeket!



 

Mintafeladatok

Egyszerűbb mintaprogramok

A *-gal jelzett program kicsit nehezebb! A képaláírásra kattintva a program látható.

Nehezebb mintaprogramok

A *-gal jelzett program kicsit nehezebb! A képaláírásra kattintva a program látható.

Linkek, dokumentumok