Kraps

Sissejuhatus

Andmed on informatsiooni esitus kujul, mis võimaldab seda salvestada, töödelda ja edastada programmjuhtimisega seadmete abil.
Andmete puhul käsitletakse nende esitusviisi ja organisatsiooni. Esitusviisi järgi jagunevad andmed liikidesse ja tüüpidesse, organisatsiooni poolest eristatakse skalaarandmeid, andmekogumeid ja objekte.

Andmete liigid

Siin vaadeldakse Scratchis kasutatavaid andmeliike ja tegevuste täitmist nendega. Tegevused (operatsioonid) esitatakse avaldiste abil. Kasutatavad tehted ja funktsioonid sõltuvad andmete liigist.
Scratchi projektides saab kasutada järgmisi andmeliike:

  • märkandmed
  • graafikaandmed
  • heliandmed.

Märkandmed

Scratchis kasutatakse järgmisi märkandmeid:

  • arvud
  • tekstid
  • tõeväärtused.

Arvud

Arvude jaoks ei ole Scratchis erinevaid vorminguid ja tüüpe, nagu teistes programmeerimiskeeltes. Tegemist on nö tavaliste täis- ja reaalarvudega, kusjuures formaalset vahet ei tehta.
Murdosa eraldamiseks täisosast reaalarvudes kasutatakse punkti.
Arve võib esitada käsuplokkides ja avaldistes konstantidena ning sisestada klaviatuurilt.
arv1
Arvväärtusi saab omistada muutujatele ja loendi elementidele ja kasutada viimaseid käskudes.
arv2

Arvude jaoks on neli põhitehet: +, -, *, / (liitmine, lahutamine, korrutamine, jagamine) ning võrdlustehted, mis esitatakse vastavate plokkide abil.
On olemas teatud valik matemaatilisi funktsioone. Vt „Arvavaldised“.

Tekstid

Tekstandmete väärtus on Scratchis, nagu ka teistes programmeerimissüsteemides, suvaliste märkide jada. Tekste saab kasutada ainult mõnedes plokkides: teadete väljastamiseks, dialoogide korraldamiseks jmt. Tekst kirjutakse konstandina otse plokki, sisestatakse klaviatuurilt, omistatakse muutujale või loendi elemendile. Tekstkonstante ei paigutata mingite piirajate (jutumärkide või ülakomade) vahele nagu seda peab tegema tekstipõhistes programmeerimiskeeltes. Tekstide jaoks on tehted: ühendamine, märkide eraldamine, võrdlemine jmt.
txt1
Vt „Tekstavaldised“.

Tõeväärtused

Tõeväärtuste ehk loogikasuuruste jaoks on ainult kaks väärtust ehk loogikakonstanti: tõene (true) ja väär (false). Ilmutatud kujul neid praktiliselt ei kasutata. Loogikaväärtused tekivad võrdlustes ja loogikaavaldistes, mida kasutatakse tingimuste esitamiseks.
bool
Vt „Loogikaavaldised“.

Graafikaandmed

Scratchis võib esineda kahte liiki graafikaandmeid:

  • graafikaobjektid
  • graafilised kujutised.

Graafikaobjektid

Graafikaobjektid (vt ka jaotist Scratchi põhiobjektid) imporditakse graafikafailidest või luuakse Scratchi joonistamisredaktoriga projekti loomise faasis. Formaalselt on tegemist kas lava taustadega või spraitide kostüümidega. Objektide loomiseks võib kasutada PNG, GIF, JPG, BMP faile. Objektidega saab määrata käsuplokkide abil erinevaid tegevusi: asukoha ja suuruse muutmine, pööramine, peitmine jm

Graafilised kujutised

Graafilised kujutised luuakse projekti täitmise ajal. Selleks kasutatakse käske gruppidest Pliiats ja Liikumine (vahel ka Välimus). Grupi Pliiats käsud võimaldavad määrata pliiatsi omadusi: värv, joone paksus, olek (üleval või all) jm. Grupi Liikumine käskude abil muudetakse joonistava spraidi asukohta vastavalt kujutise geomeetriale.

Heliandmed

Sarnaselt  graafikaandmetele võib Scratchis eristada ka kahte liiki heliandmeid:

  • heliobjektid
  • hetkhelid

Heliobjektid

Heliobjektid (vt ka jaotist Scratchi põhiobjektid) on heliklipid, mis imporditakse või lindistatakse projekti loomise ajal. Saab kasutada WAV ja MP3 vormingus faile. Heliklippe saab esitada grupi Heli käskudega [mängi heli nimi]  ja [mängi heli nimi kuni valmis].

Hetkhelid

Hetkhelid tekitatakse arvuti poolt vastavate käskude toimel. Scratchis kasutatakse selleks käske [mängi nooti ...] ja [mängi trummi ...]. Mõlemal juhul saab valida erinevaid instrumente, helitugevust ja tempot.

Avaldised

Avaldise abil antakse eeskiri vajaliku väärtuse leidmiseks: määratakse tehted ja operatsioonid ning nende täitmise järjekord. Üldjuhul koosneb avaldis operandidest ja tehtemärkidest.

Operandideks võivad olla:

  • konstandid
  • muutujad
  • loendite elemendid
  • funktsioonid.

Konstandi väärtus esitatakse otse avaldises.
Muutuja näidatakse nime abil.
Loendi element esitatakse loendi nime ja indeksi abil
Funktsiooni esindab funktsiooniviit, mis koosneb funktsiooni nimest ja argumendist, mis võib omakorda olla avaldis.
oper

Lubatud tehtemärgid ja funktsioonid sõltuvad andmete liigist ning võib eristada arv-, tekst- ja loogikaavalisi. Üldjuhul võib kasutada ka segaavaldisi, kuid alati peab arvestama sobivust tehete, funktsioonide ja operandide liikide vahel.
Scratchi avaldiste eripäraks on see, et need moodustatakse graafilistest plokkidest ja neis ei saa kasutada sulgusid, mis on tüüpiline tekstipõhistele keeltele.

Arvavaldised

Tehted ja struktuur

Arvude jaoks on neli põhitehet, mis esitatakse vastavate plokkide abil.
arva1
Kuna tehete täitmise järjekorra määramiseks ei saa kasutada sulgusid, vajab avaldiste koostamine mõningat harjumist. Ühes plokis olev avaldis vastab sulgudes olevale avaldisele.
Näiteks plokk apb vastab avaldisele (a + b).

Järgnevalt on toodud mõned avaldiste koostamise näited. 
naide

alam Kui avaldis kipub minema pikaks ja keeruliseks, võib kasutada abimuutujaid ja lasta arvutada avaldis nö ositi. Näiteks ülaloleva (mitte küll eriti keerulise) avaldise väärtuse leidmiseks võiks kasutada kahte abimuutujat:
V1 = x-a
ja V2 = y+b.

Matemaatikafunktsioonid

Arvandmete jaoks on teatud valik matemaatikafunktsioone. Need esitatakse avaldistes taolise ploki abil: fun
Vasakpoolses väljas saab valida funktsiooni nime:
   abs, floor, celling, sqrt, sin, cos, tan, asin, acos, atan, ln, log, e^, 10^.
argument võib üldjuhul olla avaldis, sealhulgas ka muutuja või konstant:
a2b2 ry  sin   sin(x + 45) – argument kraadides

Scratchis ei ole astendamistehet ega ka vastavat funktsiooni, on aga funktsioonid
e^, 10^.

Väikese täisarvulise astendaja korral võib astendamise asendada korrutamisega:
a^3 = a*a*a. 

Kui tegemist on suvalise astendajaga võib kasutada matemaatikast tuntud seost: ax , kus x on suvaline reaalarv axp.
a3j    as

On pakutud järgmine empiiriline valem inimese pindala S (m^2) leidmiseks.
  ip kus m on mass (kg) ja L – pikkus (cm)
Kõrval on toodud skript, milles kasutatakse abimuutujaid a ja b ning astendamist.

ips

Tekstavaldised

Scratchis ei ole eriti palju vahendeid tegevuste täitmiseks tekstidega.
Tekstide ühendamiseks saab kasutada plokki  yh
Mõlemas väljas võivad olla omakorda ühendamisplokid.
txt

Plokk pik võimaldab teha kindlaks antud teksti pikkuse: märkide arvu tekstis. Tekst võib olla esitatud konstandi, muutuja või avaldise abil.
np käsk omistab muutujale m eesnimes ja perenimes olevate tähtede arvu kokku.
Plokk  nr tagastab antud numbriga (nr) märgi tekstis.

nt

Skript küsib kõigepealt kasutaja käest nime. Kasutaja sisestatud tekst võetakse läbi ploki vastus muutuja nimi väärtuseks. Ploki pikkus abil tehakse kindlaks märkide arv nimes ja omistatakse see muutujale n.
Enne korduse algust võetakse muutuja k (näitab tähe järjenumbrit nimes) väärtuseks 1.
Korduse täitmisel eraldatakse nimest täht järjenumbriga k ja kuvatakse see.
Korduse lõpus suurendatakse k väärtust ühe võrra, et võtta nimest järgmine täht.

Loogikaavaldised

Loogikaavaldisi kasutatakse tingimuste määramiseks mitmes juhtimisplokis: kui, korda kuni, oota kuni.
Loogikaavaldise väärtus on alati kas tõene või väär.
Lihtsamad ja ka enim kasutatavad loogikaavaldised on võrdlused, mis esitatakse järgmiste plokkide abil.
vrd
Siin on avaldis1 ja avaldis2 üldjuhul kas arv- või tekstavaldised, erijuhul võivad olla muutujad või konstandid. Kui võrdlusmärgiga näidatud suhe väärtuste vahel kehtib, on avaldise väärtus tõene, vastupidisel juhul väär.

Mõned näited.

m2

Võrreldakse kahte suurust: a ja b. Kui a on väiksem b-st, on võrdluse väärtus tõene ning muutuja min väärtuseks võetakse a, vastupidisel juhul b. Seega saab muutuja min väärtuseks väiksem kahest väärtusest.

akb

Käsk küsi loeb kasutaja poolt sisestatava väärtuse ja salvestab selle plokis vastus.
Kui-plokis võrreldakse vastus väärtust korrutise a*b väärtusega. Kui need on võrdsed, suurendatakse muutujat punkte ühe võrra, vastupidisel juhul kuvatakse teade Vale.

hiir

Kui kaugus spraidist nimega hiir on suurem kui 100, osutab antud objekt hiirele ja teeb selles suunas 5 sammu.

stopp

Stopperi töö modelleerimine.
Kõigepealt nullitakse taimer nulli.
Järgneb kordus, kus muutujale aeg omistatakse pidevalt taimeri jooksev väärtus. Kordus toimib seni, kuni muutuja aeg saab võrdseks või suuremaks muutuja m_aeg väärtusest.
Käsk stopp kõik lõpetab programmi töö.

Plokk mitte , kus avaldis on loogikaavaldis (lihtsamal juhul võrdlus), muudab avaldise väärtuse vastupidiseks.

Scratchis puuduvad võrdlustehted <>, <=, >=. Neid saab realiseerida plokiga mitte:
mk
Näiteks ploki palk väärtus on tõene, kui palk <= 1000.

Plokid  javoi võimaldavad ühendada loogikaavaldisi (enamasti võrdlusi) ja moodustada liittingimusi.
Näiteks ploki  av1 väärtus on tõene, kui a < x <= b.
Ploki a2 väärtus on tõene, kui nimi on Juku või Kalle ja vanus on suurem 12-st.

Mõned andurid tagastavad ka tõeväärtusi. Näiteks puuteandurid tagastavad väärtuse tõene, kui puude toimub ning väär vastupidisel juhul.
Kui pall puudutab väravat, suurendatakse muutuja väärtust ühe võrra.
puude