Scratch ohjelmoindukieli

Martti Penttonen
28.3.2017

Motivatsiennu meil opastuo Scratch kieldy on juuri se, mindäh Scratch on suunniteltu MIT-yliopistos: juohatus ohjelmoindah lapsile da lapsenmielizile 8 vuvves edehpäi. Ohjelman rakendehii taritah graafizennu men'us da ohjelmoindu on kui palakižan keriändiä da ohjelman toimindan voi kerras tarkastua estruadal, kudamal otukset liikutah ohjelman mugah. Ga meil on toinegi eričysmotivatsii: Scratch kielel voi ohjata pikkarastu Martti-robottua.

Scratch on erinomaine kieli sih tarkoitukseh, mih se on luajittu – ohjelmoindan printsipoin opastundah - a pidäy mustua ku sidä ei ole tarkoitettu yleisohjelmoindukielekse. Se lekuttau otuksii ekruanan estruadal, a se ei päi kirjanpidoh libo tekstoin julguandah. Ga ohjelmoindan opastundua voi soveldua toizih ohjelmoindukielih da muunlaizehgi probliemoin sellitändäh.

Scratch-kielen tulki löydyy adresis https://scratch.mit.edu/scratch_1.4/ Viegi helpombi voi olla azendua ohjelmu operuattorusistieman azendusbrujan kauti. Uvvembigi versii scratch_2.0 on jo olemas, a myö pyzymmö vie 1.4 versies.

Kursu jagavuu luguloih

  1. Scratch ohjelmoinduymbäristö
  2. Petlat
  3. Ehtolline käsky
  4. Muuttujat da operuattorat
  5. Piirdin
  6. Iäni
  7. Yhtesruado
  8. Lähtehii

1. Scratch ohjelmoinduymbäristö

Scratch ikkun jagavuu yläreunan panelah da nelläh aloveheh: komendomen'u, ohjelmoindualoveh, estruadu da otuksien miärittelyaloveh.

Panelas voi vallita ezim. komendokielen (mones kymmenes, meil anglii) da ohjelmien tallenduskohtan, kus löydyy valmehii ohjelmii da kunne voi tallendua omii ohjelmii.

Luajimmo enzimäzen ohjelman:
- valliče men'u Motion (liikeh)
- tartu palah [move (10) steps] hural nybläl da vejä ohjelmualovehel
- painalda oigiel nybläl luguu 10 kuni väri muuttuu
- kirjuta luvun 10 paikale lugu 100, nygöi [move (100) steps]
- tartu men'u alovehel palah [turn (15) degrees] da vejä ohjelmualovehel
- kui piäl, muuta luvun 15 paikale lugu 144
- nosta [turn (144) degrees] alpäi kiini palah [move (100) steps]
- luaji toine [move (100) steps] da nosta kiini palah [turn (144) degrees]
Olemmo luadinuh ohjelman


Ezimerki 1. Otuksen siirdo da kiändö.

Ajammo ohjelman painaldamal sen piäl hurua nybliä kaksi kerdua. Midä tapahtui? Kaži juoksi nenga ravieh ku emmo ni nähnyh, ga se on nygöi vähäzen eri paikas da eri azendos. Suammo kažin jället nägyvih valliččemal men'us Pen (Piirdin) käskyn [pen down], tuomal sen ohjelmualovehel da painaldamal nybliä kaksi kerdua. Piirdin nostetah [pen up] käskyl da estruadan voi kabrastua [clear] käskyl. Algutilandeheh piäzemmö Motion men'un [set x to (0)], [set y to (0)] da [point in direction (90)]. Ku panemmo ohjelman "hatukse" Control men'us löydyjän [when flagu clicked] käskyn, ohjelmua voi kuččuo painaldamal kerran estruadan piäl olijua flaguu. Painalda nygöi flaguu 5 kerdua – midä rodieu?


Ezimerki 2. Ohjelmu da piirrändypalat.

Ohjelman voi tallendua panelan File men'us. Ekruanal ozuttelijan otuksen voi hävittiä miärittelyalovehel hiiren oigiel nybläl, da panna tilale toizen. Otus-alovehen piäl olijas New Sprite men'us voi vallita mintah valmehen, ottua mintah piävyndällizesti libo piirdiä oman otuksen. Sen sobii voi vaihtua ohjelmoindualovehen Costumes men'us da komendoalovehen Looks men'us. Estruadan nägymiä muuttamah piäzöy otuksien miärittelyalovehen Stage kodazes.

2. Petlat

Iellizen ezimerkin lopus kuhkutettih ajamah ohjelmu viideh kerdah flaguu painaldamal. Eigo koneh iče vois nenga ruadua? Muga, sih niškoi on petlat. Enzimäine muodo petloi on [repeat (10) ohjelmu]. Tämän käskyn sydämes olii ohjelmu ajetah 10 kerdua.


Ezimerki 3. Lugumiärälline petlu. Tiähti.

Toine muodo petlua on lopetusehtolline. Petlan sydämes olijua ohjelmua ajetah nenga moneh kerdah, kuni petlan lopus oliju ehto todevuu:


Ezimerki 4. Lopetusehtolline petlu.

Täs ohjelmas kaži kävelöy 10 askeldu kerrallah edehpäi, kuni seiny tulou vastah, sit loppou kävelendän.

Kolmas luadu petlua on loputoi petlu. Panemmo kažin kävelemäh ielleh järilleh seinäs seinäh loputtomasti. Ohjelman voi azettua painaldamal ruskiedu täpliä flagun oigiel puolel.


Ezimerki 5. Loputoi petlu.

3. Ehtolline käsky

Ei mennä ristikanzan hommat yhty vaihtoehtotoindu raizivuo, a tilandehen mugah pidäy vallita toimindutaba. Mugai tiedokonehen pädevys perustuu sih, ku toimindu rippuu tilandehes. Meil jo aijembi oli lopetusehtolline toisto. Nygöi tuttavummo ehtollizih käskylöih, kudamat lövvytäh Control men'us. On kaksi variantua: Ehtollizen käskyn [if (ehto) ohjelmu] ohjelmah mennäh vaiku silloi, ku ehto on tozi, muite se jätetäh sivuh. Toizes variantas [if (ehto) ohjelmu1 else ohjelmu2] ehton olles tozi vallitah ohjelmu1, a ku ehto ei olle tozi, sit ohjelmu2.


Ezimerki 6. Ehtolline käsky.

4. Muuttujat da operuattorat

Vuozituhanzien aijan rahvaskundu on kerännyh tieduo da tallendannuh sidä myöhembi käytettäväkse. Nygöi äijän tieduo on suadavil da käytettävis tiedokonehen kauti. Pienembäs škualas sama pädöy tiedokonehohjelmah. Jo suaduloi tuloksii maksau tallendua myöhembäh käyttöh niškoi. Se on muuttujien virgu. Muuttuju on tiijon tallenduspaikan adressi. Nimitys "muuttuju" vihjua sih ku tallenduspaikan syväindö voi muuttuo. Muuttujas x voi erähičči olla lugu 1 ga kodvazen peräs 3. Muuttujan syväindyö sanotah sen arvokse. Muuttujan arvonnu voi olla luguloi, kirjaimii, sanoi libo myöhembi sellitettävii listoi.

Scratchas muuttuju perustetah Variables men'us palal Make a variable. Pidäy andua muuttujale nimi da painaldua OK. Muuttuju tulou nägyvih estruadale. Perustammo nenga muuttujan x. Samal voimmo siirdiä käskyn [set (x) to (0)] ohjelmualovehele da hiiren oigien nyblän vuoh muuttua luvun 20 luvun 0 paikale. Men'us Motion päi siirrämmö käskyn [move (10) steps] käskyn [set (x) to (10)] al. Menemmö järilleh Variables men'uh da viämmö muuttujan x luvun 10 piäle. Luajiimmo ohjelman


Ezimerki 7. Siirdymine muuttujan mugah.

Ku ajammo ohjelman, kaži siirdyy 20 askeldu oigiele. Ku muutammo luvun 100 luvun 20 sijah da ajammo ohjelman, kaži siirdyygi 100 askeldu oigiele.

4.1. Luvut

Perindehellizesti tiedokonehtu on käytetty luguloil čotaičendah. Mugai anglien kielesgi tiedokonehes käytetäh nimitysty "computer". Kuibo čotaijah Scratch kielel? Ku tahtonemmo čotaija, äijygo on 1+1, tarvičemmo Operators men'us löydyjiä [()+()] operuattorua. Toimimmo nenga:
- Variables men'us valličemmo Make a variable. Olgah se summu - Siirrämmö [set (summu) to (0)] ohjelmualovehelle - Siirrämmö Operators men'us palan [()+()] 0:n paikale - Kirjutammo luvun 1 operuattoran + mollembile puolile - Painaldammo set palua kaksi kerdua. Muuttujan summu arvo nägyy estruadal.


Ezimerki 8. Summan laskemine.

Äijängo on luguloin 1, 2, ... 10 tulo? Käytämmö petlas tulo operuattorua * da Variables men'us löydyjiä käskyy [change (lugu) by (1)] kudai kazvattau muuttujan lugu arvuo 1:l


Ezimerki 9. Kerdoman laskemine.

Nygöi luajimmo ohjelman, kudai čotaiččou nenganimitettylöi Fibonaccin luguloi, kudamis enzimäzet ollah 0 da 1 da sen jälgeh jogahine lugu on kahten iellizen summu:


Ezimerki 10. Fibonaccin luvut.

Operations men'us löydyy harvinazembiigi operatsieloi, ezim. jagojiännös mod, nellikönjuuri √ da arcustangentu atan, ken niidy tarvinnou. Puaksuh tarvičemmo piävyndähizii luguloi. Niidy luajitah operatsiel [pick random () to ()]. Täs arbukuubiekan vastineh:


Ezimerki 11. Arbukuubiekku.

4.2. Merkijonot

Merkijono tarkoittau merkilöin, kirjaimien jonuo, tekstua. Scratch kieles on operuattoru [join (hello)(world)] kahten merkijonon yhtehliittämizeh da [letter (i) of (word)] merkijonon kirjaimen suandah paikan mugah. On vie [length of (word)] kudai andau merkijonon piduhuon. Merkijono voi olla suorah annettu libo muuttujas, kui kirjaimen paikkuozutingi. Ku liitämmö yhteh merkijonon "yksi" (muuttujas) da suorah annetun merkijonon "_kaksi" (allus tyhjy), suammo merkijonon, kudaman piduhus on 10 da toine kirjain on k.


Ezimerki 12. Merkijono-operatsiet.

Konzu ohjelman pidäy suaha tieduo käyttäjäspäi, voi käyttiä ask käskyö (Sensing), answer operuattorua (Sensing) da say käskyy (Looks).


Ezimerki 13. Kyzely.

Luajimmo nygöi Fibonaččin luvut merkijonoloil. Nethäi kuvatah krouliekoin lizävyndiä. Krouliekan poigaine p kazvau sugukypsäkse krouliekakse K vähä yli kuukavves: p→K. Saman aijan peräs sugukypsy krouliekku suau poigazen: K→Kp. Ohjelmannu


Ezimerki 14. Krouliekoin ližävyndy merkijononnu.

4.3. Listat

Listu on samantabaine jono kui merkijono, a jonos voi olla muudugi kui merkii da elementoi voi lugie, hävittiä, korvata libo ližätä mistahto listan kohtas.


Ezimerki 15. Listuoperatsieloi. Lopukse x=5.


Ezimerki 16. Krouliekoin ližävyndy listannu.

4.4. Toziarvot

Ehtollizes petlas, ehtollizes käskys da ehtollizes vuotandas [wait until ()] kyzytäh ehton todevundua. Se voi olla:
- luguloin (olgah muuttuju libo muuttumatoi) verdailu [()<()], [()>()] libo [()=()] (jälgimäine merkijonoloilegi)
- lougielline operatsii [not ()], [() and ()], [() or ()] libo nämien kombinatsii.


Ezimerki 17. Kaži kävelöy ielleh-järilleh.

5. Piirdin

Normualizesti kaži hiivuou jälgii jättämättäh. Ku hännän jälgi jiäs nägyvih, pidäy vallita Pen men'us [pen down]. Sit nägyy kus kaži kävelöy. Piirdin nostetah [pen up] komendol. Nenga piirrämmö nellikön.


Ezimerki 18. Nellikkö.

Jällen sangevuon voi azettua [change pen size to ()] käskyl da värin käskyl [set pen color to ()], kudaman voi ozuttua noumeroil libo valliččemal värin 0..200 hiirel.


Ezimerki 19. Nellikön sivuloin värittämine.

Piirdiä voi i otuksen kuvil [stamp] käskyl. Sen koguo da värii vaihtetah Looks men'un [set size to () %] da [set color effect to ()], jälgimäzeh voi i käyttiä [change color effect by ()] muoduo. Värit vallitah noumeral 0..200.


Ezimerki 20. Ohjelmu piirdäy kažin 20 väril.

6. Iäni

Scratchas on valmehennu iänii, ezim. kažin n'augu. Net lövvytäh men'us Sound. Ližiämmö n'avvundan aijembi luvus 3 ezitettyh ohjelmah.


Ezimerki 21. Kaži kävelöy ielleh-järilleh da kiändyjes n'auguau.

Ga voibi Scratchal soittuagi. Sävelen korgevus ozutetah noutal 0=C-1 noutassah 127=G9. Nouttu 69=A4 on 440 Hz, sit alahpäi da ylähpäi freksvensii muuttuu kerdoimel 21/12. Nenga madalin nouttu on 8.1758 Hz da korgevin 12544 Hz. Nouttu soitetah käskyl [play note () for () beats], kudamas enzimäine noumer ozuttau sävelkorgevuon da toine piduhuon taktan ozannu. Sävelkorgevuttu vallites Scratch ozuttau klaviatuuran da noutan nimen. [rest for () beats] ozuttau pauzan piduhuon.


Ezimerki 22. Erähän sävelmän alguu.

7. Yhtesruado

Tässah ajettavannu on ainos olluh yksi otus da sidä ohjuaju ohjelmu. Scratchas voi yhtel aigua olla toimindas mondugi otustu da net voijah olla vuorovaikutukses toine toizenke.

Kačommo ezimerkii, kudamas mašin ajau dorogal ielleh-järilleh. Konzu mašin lähtöy ajamah, se sežo työndäy viestin Go, da sit kažigi rubieu juoksendelemah poikki dorogas ielleh-järilleh. Täs tiettäväine on avarien varavo. Aijembi libo myöhembi se vältämättäh tapahtuu. Mašinan sensoru [touching (Sprite1)] huomuau ähkähtyksen da työndäy viestin Ozain. Viestin suaduu kaži n'auguau. Ozakse mašin ei murene da kažigi jatkau juoksendeluu, loputtomasti.

Ezimerki 23. Mašinan ohjelmu (hural) da kažin ohjelmat (oigiel).

Lähtehii

  1. Matti Nelimarkka – Noora Vainio – Nyyti Kinnunen:
    Ohjelmointia Scratchin kanssa. http://avoinoppikirja.fi/tiedostot/muut/ohjelmointia_scratchin_kanssa.pdf.
    Täs tekstas oli äijän abuu tädä kursutekstua luadijes.
  2. Getting started with Scratch. http://scratch.mit.ed
  3. Scratch Reference Guide. https://download.scratch.mit.edu/ScratchReferenceGuide14.pdf
  4. Scratch Wiki. https://wiki.scratch.mit.edu/wiki/Scratch_Wiki_Home