>

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

 

Matematika feladatok

M. Matek feladatok I.

Készíts egy matek programot, ami kétjegyű számok összegét kérdezi a játékosoktól!

Induláskor:
  • a háttér egy tábla legyen (tölts be egy ilyet)
  • mellette álljon a tanár néni (Abby)
  • jelmeze a "felfelé néző jelmez" legyen
A szükséges változók és ezek szerepe:
  • esz: egyik összeadandó szám
  • msz: másik összeadandó szám
  • hiba: ebben számoljuk az elkövetett hibák számát
  • ssz: ez jelzi a éppen következő feladat sorszámát
  • állítsuk be a kezdőértékeket (csak amelyiket szükséges)

A progi 10-szer csinálja a következőket:
  • írjuk ki a feladat sorszámát (ssz)
  • az összeadandó számok (esz és msz) 10 és 30 közt legyenek
  • írjuk ki ezeket, és kérjük be az összegüket (válasz)
  • ha a beírt összeg helyes
       a tanár jelmeze a "tapsoló jelmez" legyen
       írja ki: "Nagyos szuper!"
  • ha a beírt összeg hibás
       növelje a hibaszámot (hiba)
       a tanár jelmeze a "szomorú jelmez" legyen
       írja ki: "Hibás!"
A 10 feladat után értékelje az összteljesítményt:
  • ha nem volt hiba, akkor
       egy új háttéren jelenjen meg a "100 %" szöveg
  • egyébként
       mondja ki a hibaszámot pl. "2 hibád volt"

Házi (csak tedd ide az egérkurzort)

Algoritmus (kattints ide)


Kérj be egy pozitív egész számot!

Írasd ki a szám osztóit!

Algoritmus (kattints ide)


Kérj be két pozitív egész számot!

Írasd ki a számok legnagyobb közös osztóját (LNKO)!

Help (csak tedd ide az egérkurzort)

Algoritmus (kattints ide)


Ötször végezze el a program következőket:

- Találjon ki két véletlenszámot (10-20 köztieket)!
- Kérje be a szorzatukat!
- Ellenőrizze, majd írjon ki egy megfelelő szöveget!

Végül értékelje az öt adott választ!

Algoritmus (kattints ide)


Rajzoljuk ki a koordinátarendszert (van egy ilyen háttér is)!

- A program rajzoljon ki egy P pontot véletlenszerű helyre!
- Kérje be a tippjeidet ezekre!
- Értékelje az eltéréseket valamilyen módon!

Mindezeket ötször ismételje meg!

Algoritmus (kattints ide)


N. Matek feladatok II.

Kérjünk be egy egész számot, és döntsük el, hogy osztható-e tízzel, öttel, kettővel!

  • akkor osztható tízzel, ha 0-ra végződik
  • akkor osztható öttel, ha 0-ra vagy 5-re végződik
  • akkor osztható kettővel, ha 0, 2, 4, 6 vagy 8 az utolsó számjegye
Kezdeti teendők:
  • cseréljük le a "macska" szereplőt "varázsló"-ra (Wizard2)
  • fessük a hátteret halványzöldre (sapka zöldje)
  • írjuk rá sárgával az "OSZTHATÓSÁG" szöveget (betűtípus Glória, színe a sapka sárgája)
  • alulra, kisebb betűkkel a "szóközre továbblép" segítséget
  • mondja a szereplő: "Egy egész számról eldöntöm, hogy osztható-e tízzel, öttel vagy kettővel"
  • várjon a szóköz billentyűre
  • kérjen be egy egész számot az "Egész szám: " szöveggel
A szükséges változók és ezek szerepe:
  • egész: a bekért egész szám (beletesszük a válasz-t)
  • hossz: a bekért egész szám hossza (jegyek száma plusz az előjel, ha van)
  • utsjegy: a bekért egész szám utolsó jegye
Oszthatóság 10-el:
  • ha az utolsó jegy 0, akkor
       írja ki vagy gondolja: "A szám osztható 10-el"
       esetleg adjon valamilyen hangot
  • egyébként
       írja ki vagy gondolja: "A szám nem osztható 10-el"
Oszthatóság 5-el:

     Hasonló az előzőhöz, de a feltétel kettős ( utsjegy=0 vagy utsjegy=5 )

Oszthatóság 2-vel:

     Hasonló az előzőhöz, de a feltétel többes ( utsjegy=0 vagy utsjegy=2 vagy ... utsjegy=8 )


Minden szükséges helyre tegyünk egy várakozást a szóköz billentyűre!


A játékot két személy játszhatja (pl. "G" és "B") a következőképpen:

  • adott egy szám, amelyből felváltva vesznek el
  • egyet, kettőt, ..., legfeljebb ötöt vehet el a soron következő játékos
  • elvenni kötelező

A játékot az nyeri, aki az utolsót vagy utolsókat veszi el!


Először a hátteret készítsük el (a szövegeket célszerű vektorgrafikával felírni)!


A változók:
  • szam: ezt kell nullára csökkenteni (kezdőértéke legyen pl. 20)
  • ssz: ez jelképezi a soron következő játékost,
       ha értéke -1, akkor a baloldali játékos vesz el
       ha értéke +1, akkor a jobboldali játékos vesz el
Előkészítés:
  • állítsuk be a "szam" kezdőértékét (20 vagy több?!)
  • állítsuk be a "ssz" értékét (+1 vagy -1)
Program "lelke":
  • tegyünk ide egy elölvizsgáló ciklust (ismételd eddig: ...)
       ebből nyilván akkor lépünk ki, ha a "szam" 0 lesz
  • bele egy elágazást,
       feltétele a "ssz" értéke
       ha +1, a macska nézzen jobbra
       ha -1, a macska nézzen balra
  • kérjük be az elvételt a következő szöveggel: "Mennyit veszel el (1,2,...,5) ?"
  • állítsuk be a "szam" új értékét (segítség: kivonás)
  • állítsuk be a "ssz" változását (segítség: szorzás -1-el)
Játék győztese:
  • tegyünk a program végére egy elágazást, amely "kihirdeti a győztest"
       feltétele nyilván a sorszám
       ha 1, írja azt hogy "B" nyert
       ha -1, írja azt hogy "G" nyert
  • gondoljuk végig, hogy az elágazás előtt mire mutat a "ssz", ha kell, állítsunk rajta

Továbbfejlesztés

Kezdőjátékos bekérése (a progi elején):
  • hogy ne mindig ugyanaz a játékos kezdjen, kérjük be a kezdőjátékos nevének rövidítését ("Ki kezd (B/G) ?")
  • a "válasz"-tól függően állítsuk be a "ssz" értékét
       ha "B", akkor +1-re
       ha "G", akkor -1-re

A megoldásnál nem ellenőriztük az elvett szám nagyságát, tehát ne csaljunk szándékosan !


Házi (csak tedd ide az egérkurzort)

Itt van például két kép: B.png és a másik G.png



Algoritmus (kattints ide)

* A feladat egy nehezítése az adatbekérés, azaz:
     ne fogadjon el mást, csak a "B" vagy "G" betűt
     ne engedjen csalni az elvételkor sem, azaz csak 1, 2, 3, 4, 5 számok lehessenek


 

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