>

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

 

Bemelegítő feladatok

A. Játéktér felfedezése, alaputasítások

Állítsd be a cicát kisebbre (felére, harmadára, negyedére: 50, 33, 25 %)!

Ugorj a játéktér közepére (origó: 0;0)!

Csússz a játéktér sarkaiba (240;180), (-240;180), stb.!

Jegyezd meg a sarkok adatait/koordinátáit! Figyelj az előjelekre!


Ugorj a (0;0) helyre, majd libasorban a (100;0), a (100;100) és a (0;100) pontokba!

Minden utasítás után építs be egy várakozást, így lassabban megy a macsek!

Mit "ugrált ki" az apócska macsek?

Próbáld "kiugráltatni" ennek a tükörképeit (itt kellenek negatív számok is)!


Töröld le a táblát! Állítsd a tollat 5 pont vastagra! (A színét rád bízom.)

Emelt fel a tollat! Ugorj a (0;0) helyre! Tedd le a tollat! Várj egy kicsit!
Emelt fel a tollat! Ugorj a (0;120) helyre! Tedd le a tollat! Várj egy kicsit!
Emelt fel a tollat! Ugorj a (-120;120) helyre! Tedd le a tollat! Várj egy kicsit!
Ezt még egyszer játszd el úgy, hogy egy nagy négyzet legyen (természetesen másik helyre ugorj)!

Húzd el a cicát, hogy a negyedik pontot is lássad!


Töröld le a táblát! Állítsd a tollat 2 pont vastagra! (A színét rád bízom.)
Emelt fel a tollat! Ugorj a (0;0) helyre! Tedd le a tollat! Várj egy kicsit!

Ugorj a (0;-120) helyre! Várj egy kicsit!
Ugorj a (-120;-120) helyre! Várj egy kicsit!
Ugorj a (-120;0) helyre! Várj egy kicsit!
Végül ugorj a (0;0) helyre!

Húzd el a cicát, hogy jól lássunk mindent!


Töröld le a táblát! Állítsd a tollat 9 pont vastagra! (A színét rád bízom.)
Emelt fel a tollat! Ugorj a (0;0) helyre! Tedd le a tollat!

Csússz a (0;-150) helyre,
innen csússz a (150;-150) helyre,
majd csússz a (150;0) helyre,
végül csússz a (0;0) helyre!

Húzd el a cicát, hogy jól lássunk mindent!


Új ismeretek: "zászlóra ...", "méret legyen ...", "töröld ...", "tollszín ...", "tollméret ...", "tollat tedd le", "tollat emeld fel", "menj ...", "ugorj ...", "csússz ...", "nézz ...", "fordulj ...", "várj ..."


B. Mozgások a koordináták nélkül

Állítsd be a cicát kisebbre!

Állítsd be a táblát, tollat, tollszínt! Tollat tedd le!

Menj 100 lépést! Fordulj jobbra 90 fokot! Menj 100 lépést!


Állítsd be a macskát, a táblát, tollat, tollszínt! Tollat tedd le!

Menj 80 lépést! Fordulj balra 120 fokot! Menj 80 lépést!

Próbáld ki úgy is, hogy a beállítások után elugrasz a tábla közepére!


Rajzolj egy szép színes "T" betűt a rajztábla közepére!

Használd a "nézz ..." utasítást is!


Rajzolj egy szép színes "H" betűt a rajztábla közepére!

A "H" másik oldalára egy "E" betű kerüljön! ("E" hasonlít a "H"-ra!)


Állítsd be a macskát, táblát, tollat, tollszínt! Ezek a zászlóra kattintáskor történjenek meg!

Használd a szóköz lenyomásakor utasítást! Állítsd át "t"-re!

Programozd erre a "T" betű rajzolását! (Így kezdődjön: tollat emeld fel, ugorj ..., tollat tedd le!)

Készítsd el hasonlóan az "E" megrajzolását is a "T" mellé!

Cseréld ki a nézz ... utasítások egy részét fordulj ... utasításra!


Új ismeretek: "... lenyomásakor"


E. Végtelen ciklusok, animáció

Pingáld ki a hátteret! Cseréld ki a szereplőt egy tüzet okádó sárkányra!

Kezd el a programozást ("zászlóra ...")!
     Tégy alá egy mindig panelt!
     Tedd bele a nézz egérmutató irányába utasítást és egy menj ... parancsot!

Indítsd el a programot! A döhös sárkány követni fogja az egérmutatót/egérkurzort.

A "mindig" panel egy végtelen ciklus vagy örökös ciklus, amit addig ismétel a Scratch, amíg le nem állítod.


Állítsd be megfelelően a cicát!

Tegyél ki egymagába egy következő jelmez utasítást! Kattints rá kétszer! Ismételgesd! Olyan, mintha menne.

Tégy be egy mindig panelt! Tedd bele az előbbit, és indítsd el a programot!

Menjen is ("menj ... lépést")!

Ha túl gyors, lassítsd le ("várj ...")!

A széleken elakad, semmi gond, tegyünk bele ha a szélén vagy, pattanj vissza parancsot!

Ez a látvány az animáció. A trükk egyszerű: a cicának két alakja/jelmeze van, ezek váltogatása tűnik mozgásnak. (Találsz olyan szereplőket is, amelyek kettőnél több jelmezzel bírnak!)


Cseréld ki a szereplőt egy labdára! Állítsd be az indulási irányát véletlenszerűvé: "fordulj véletlen 0 és 360 között fokot"!

Állítsd be a toll jellemzőit is, amilyet majd rajzoltatni akarsz!

A mindig panelbe most csak két parancs kell: "menj ...", "ha a szélén vagy ...".

Ha nem teszel rajztörlést, a futást leállítva odébb teheted a labdát (futás közben nekem nem sikerült).


Fessed ki a hátteret, írj információs szöveget rá (RG helyett a te monogramod álljon)!

Cseréld ki a szereplőt egy bogárra! Rajzold a szárnyaira a monogramodat! (Ha kell, kicsinyítsd!)

Állítsd be a toll jellemzőit!

Tégy be egy mindig panelt és ebbe:
     "menj ..." utasítást (a lépésszám véletlenszerűen változzon, pl. 2...10 lépés közt)
     "fordulj ..." utasítást (a szög véletlenszerűen változzon, pl. -30...30 fok közt)
     pici várakozást (pl. 0.05 mp)
     "ha szélén vagy, ..." parancsot!

Próbáld ki!

Kicsit még fejlesszünk rajta! Tégy be egy ezen szereplőre kattintáskor panelt és ebbe:
     "mondd ... 1 mp-ig" utasítást és
     "dobolj ... 0.5 ütemig" parancsot!


Új ismeretek: "mindig", "nézz egérmutató ...", "következő jelmez", "ha a szélén ...", "ezen szereplőre ...", "dobolj ...", ""


F. Számolós ciklusok, változók

Írjunk ki egy 1 és 45 közé eső véletlenszámot (mondd: véletlen 1 és 45 közt)!

Tegyük ezt egy ismételd 6 panelba! Most 6-szor megismétli!!!

Ha kicsit gyors, tégy egy várakozó utasítást a ciklusba, vagy használd a "mondd ..." helyett a "gondold ..." parancsot!

Az "ismételd" panel egy számolós ciklus vagy megszámlálható ciklus, a benne lévőket annyiszor ismétli a Scratch, amilyen szám utána áll.


Rakd ki a tollat tedd le parancsot (ne a "zászlóra kattintáskor" alá)! Kattints rá kettőt: ekkor végrehajtja!

Próbáld ki külön a következő két összeragasztott utasítást:
     menj 100 lépést
     fordulj jobbra 60 fokot!

Mi történik, ha ezt 6-szor ismétled?

Tegyük ezt egy ismételd 6 ciklusba! Tégy bele egy várakozó utasítást is! (Ez is indítható önállóan! Ha nem fér el a rajz, vidd máshova a cicát!)

Rakd össze mindezt egy "rendes" programba ("indító zászló", beállítások, ciklus)!


Kirajzolunk 20 darab macskát a lapra a következőképpen:
     hozz létre egy "x" és egy "y" nevű változót a macska helyének tárolására (Adatok / Változó létrehozása)
     vedd ki az előttük lévő pipát, így nem fognak látszódni
     méretezd a cicát felére és töröld a rajzlapot
     tégy ki egy 20-as ciklust!

A ciklusba tegyük a következőket:
     egy x legyen véletlen -240 és 240 között parancsot és
     egy y legyen véletlen -180 és 180 között parancsot (miért éppen ezek a számok?)
     egy ugorj x: x y: y parancsot (Ha ez is kész, próbáld ki a programot! Ha gyors, tehetsz bele "lassítót"!)
     még egy készíts lenyomatot parancsot! (Ez szegény macskát "odanyomja" a rajzlapra.)

Kész a program. Próbáld meg odébbvontatni az igazi cicát! (A program végén nyávoghatna, így talán könnyebb lesz megtalálni.)


Játsszuk el a "Boci-boci tarka ..." kezdetű dalt! (Itt található egy kotta: hangszer.network.hu)

Előkészítés:
     tempó legyen 70 ütem/perc
     hangszer legyen 4 (gitár)

Az első hangok (ez ismételhető még egyszer - ciklus):
     60 szóljon 0.5 ütemig
     64 szóljon 0.5 ütemig
     60 szóljon 0.5 ütemig
     64 szóljon 0.5 ütemig
     67 szóljon 1 ütemig
     67 szóljon 1 ütemig

Próbáld ki kölönböző hangszerekkel! (Ha jó a hallásod, folytathatod is!)


Írjunk ki 8 darab öttel osztható kétjegyű számot (10, 15, 20, ...)!

Részletezve:
     hozz létre egy "ketjegyu" nevű változót a szám tárolására (Adatok / Változó létrehozása)
     vedd ki a mellette lévő pipát, így nem fog látszódni
     tedd a "zászló" alá a kétjegyu legyen ... utasítást (írd át a 0-t a megfelelő számra)
     vegyünk elő egy ismételd 10 parancsot (javítsd át a 10-est)
     tégy a ciklusba egy gondold ketjegyu 2 mp-ig parancsot (Indítsd a programot! Miért nem jó?)
     tegyünk még a ciklusba egy kétjegyu változzon 1 parancsot (Most már jobb, de nem az igazi!)
     javítsd át az "1"-et egy jobb számra

Mentsd el a progit, ha jó!


Új ismeretek: "mondd ...", "gondold ...", "ismételd ...", "véletlen ...", "... legyen", "... változzon ...", "készíts lenyomatot", "játszd le ...", "tempo legyen ...", "hangszer legyen ...", "... szóljon ..."


H. Elágazások: egy-, kétirányú

Finomítsunk az E3 (Ping-pong labda) programon, hiszen a labdának több jelmeze is van!

Tegyünk a ciklusba egy ha szóköz lenyomva? akkor panelt, ebbe pedig
     "fordulj véletlen ..." (ami az elején van) és a
     "következő jelmez" parancsokat!

(Kattints a "Jelmezek" fülre, futás közben szépen látszik a jelmezváltás!)

A "ha ... akkor" panel egyirányú elágazás, felül / elöl egy feltétel áll, amely vagy igaz, vagy hamis. Ha igaz, akkor az "akkor" utáni parancsok végrehajtódnak, egyébként nem.


Hozz létre egy "v" változót, ebben tároljuk majd az előjeles véletlenszámot! (Az előtte álló pipa maradjon, így látható lesz!)

A program első parancsa: v legyen véletlen -2 és 2 között!

Utána három ha ... akkor legyen! Ezekben a feltételek v < 0, v = 0 és v > 0. Bennük írassuk/mondassuk ki a: "Negatív", "Nulla", "Pozitív" szöveget! (Ha tetszik, 0-nál nyávoghat is a cica.)


Hozzad létre az "eszam" és az "mszam" változókat, ezekben tároljuk a bekért szamokat! (A pipák maradjanak!)

A program első parancsa: mondd: Kérek két különböző számot! és várj ... mp-ig!
A 2. kérdezd meg Kérem az elsőt: és várj!
A 3. eszam legyen válasz!
A 4. kérdezd meg Kérem a másodikat: és várj!
A 5. mszam legyen válasz!

Tegyünk be egy ha ... akkor ... különben ... panelt, és ebbe:
     a ha után "eszam > mszam",
     az akkor után "mondd: Az első a nagyobb!",
     a különben után "gondold: A második nagyobb!" álljon!

A "ha ... akkor ... különben ..." panel kétirányú elágazás, felül / elöl a feltétel áll, amely vagy igaz, vagy hamis. Ha igaz, akkor az "akkor" utáni parancsok hajtódnak végre, különben a "különben" utániak.


Hozz létre egy "szo" változót, ebben tároljuk majd a bekért szót! (Pipa maradjon!)

A program első parancsa: kérdezd meg Kérek egy hárombetűs szót: és várj!

A második szo legyen válasz!

Tegyünk be egy ha ... akkor ... különben ... panelt, és ebbe:
     a ha után "szo hossza = 3",
     az akkor után "mondd: ...",
     a különben után "gondold: ..." álljon!


Alakítsd át az F2 (Véletlenszám előjele) programot úgy, hogy három helyett csak kettő elágazás legyen benne!

(Segítségül csak annyit, hogy két kétirányút kell használni, s az egyiket a másikba beletenni/beágyazni!)


Új ismeretek: "ha ... akkor", "ha ... akkor ... különben", "kérdezd meg: ...", "... hossza"


 

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