Scratch

Laskuri

Laskurilla tarkoitetaan muuttujan arvon kasvamista. Kun määrittelemme Tieto-välilehdellä uuden muuttujan: laskuri, niin siellä löytyy komento, jolla muuttujan arvo voidaan kasvattaa halutulla määrällä. Se on seuraava.



Tämä tarkoittaa käytännössä sitä, että laskuri-muuttuja kasvaa aina yhdellä, kun sitä kutsutaan.

Kun tämän komennon laittaa silmukan sisälle, niin olemme saaneet laskuri-muuttujan. Tällöin laskuri-muuttuja saa arvoja: 0, 1, 2, 3, 4, 5,…



Kun lisäksi sijoitamme laskuri- muuttujan komentoon: mene kohtaan x: y:, niin saamme hahmon liikkumaan. Koska muutos on +1, niin hahmo liikkuu oikealle. Jos muutos olisi -1, niin hahmo liikkuisi tällöin vasemmalle.



Scracthissa laskuri-idea ja muuttuja on piilotettu jo valmiiksi komentoon



Hahmo liikkuu, kun laitamme komennon silmukan sisälle, vaikka emme ole määritelleet edes muuttujaa hahmon vaakasuuntaiselle koordinaatille.

Hahmon liikuttelu nuolinäppäimillä

Hahmon liikuttelu nuolinäppäimillä tapahtuu seuraavasti.



Tässä on otettu käyttöön kaksi muuttujaa: x ja y, missä x ilmaisee hahmon vaakasuuntaista paikkaa ja y ilmaisee hahmon pystysuuntaista paikkaa. Kun x kasvaa, niin mennään oikealle ja kun x pienenee, niin mennään vasemmalle. Vastaavasti kun y kasvaa, niin mennään ylöspäin ja kun y pienenee, mennään alaspäin.

Hahmon liikuttelu hiirellä

Jos haluat, että hahmo liikkuu hiiren mukana, niin se onnistuu seuraavalla ohjausrakenteella.


Ilman muuttujia koodin voi lyhentää muotoon.


Kuten huomaat, niin hahmosta tuli käytännössä hiiriosoitin. Entäpä jos haluan liikkeen hitaammaksi? Se onnistuu tekemällä koodi.



Jos hiiren vaakasuuntainen osoitin on suurempi kuin hahmon paikka x, tällöin kasvatetaan muuttujan x-arvoa, ja hahmo liikkuu oikealle. Jos hiiren vaakasuuntainen osoitin on pienempi kuin hahmon paikka x, niin tällöin pienennetään muuttujan x-arvoa, ja hahmo liikkuu vasemmalle.

Vastaavasti jos hiiren pystysuuntainen osoitin on suurempi kuin hahmon paikka y, niin tällöin kasvatetaan muuttujan y-arvoa, ja hahmo liikkuu ylös. Jos hiiren pystysuuntainen osoitin on pienempi kuin hahmon paikka y, niin tällöin pienennetään muuttujan y-arvoa, ja hahmo liikkuu alaspäin.

Tässä muutos on laitettu arvoon 2 tai -2. Muuttamalla tätä arvoa saadaan hahmon liike hitaammaksi tai nopeammaksi, jolloin hiiren liike saadaan halutunlaiseksi.

On vielä yksi tapa liikutella hahmoa. Tässä tavassa hahmo tulee kohti hiirenosoitinta. Seuraavalla koodilla saat hahmon liikkumaan kohti hiirenosoitinta.

Hahmon liikuttelu liukusäätimillä

Hahmoa voidaan myös liikutella liukusäätimien avulla. Aluksi tarvitset kaksi muuttujaa: x ja y, joilla ilmaistaan hahmon paikka. Tee hahmoon seuraava koodi.



Paina työpöydällä hiiren oikeaa painiketta ikkunan päällä, joka näyttää muuttujan ja avautuvasta valikosta valitse komento: säädin. Tämä lisää muuttujalle liukusäätimen.



Paina uudestaan hiiren oikeaa painiketta muuttujan päällä ja avautuvasta valikosta valitse komento: aseta säätimen minimi ja maksimi.



Laita x-muuttujalle minimiksi -240 ja maksimiksi 240. Vastaavalla tavalla laita y-muuttujalle minimiksi -180 ja maksimiksi 180.



Kun suoritat ohjelman ja liikutat liukusäätimiä, hahmo liikkuu uuteen paikkaan näiden arvojen mukaisesti.

For-silmukka

For-silmukkaa vastaava rakenne Scratchissa on toista x kertaa -toistolause.



Kuinka tehtäisiin ohjelma, joka tulostaa allekkain 10 kertaa Hei-sanan? Tehdään seuraava ohjelma.



Koska tekstin tulostus on sidottu hahmon paikkaan, niin teksti saadaan tulostettua eri paikkaan vain liikuttamalla hahmoa alapäin. Koska Scratchissa ei pelkkää tekstiä voi tulostaa koordinaatistoon, niin käytännössä näytölle saadaan vain yksi puhekupla kerrallaan.

For-silmukka ja muuttuja

Tehdään ohjelma, joka tulostaa muuttujan arvon yhdestä kymmeneen ja samalla hahmo liikkuu eteenpäin.



Koska toista x kertaa -lauseessa ei ole oletuksena muuttujaa, niin tarvitsemme luoda erikseen muuttujan. Tämä on käytännössä sama kuin, jos luomme laskuri-muuttujan, jonka arvoa kasvatamme toista x kertaa -silmukan sisällä.

Esimerkki: Reitin kulkeminen

Haluamme liikkua pisteestä (0,0) pisteeseen (200,100) siten, että käytämme laskuria a vaakasuuntaiseen liikkumiseen ja laskuria b pystysuuntaiseen liikkumiseen. Liikutaan ensin 200 askelta oikealle, jolloin laskuri a kasvaa ja 100 askelta ylöspäin, jolloin laskuri b kasvaa. Lisätään hahmolle seuraava koodi.



Kun piilotamme hahmon ja laskemme kynän alas liikkumisen ajaksi, niin saamme aikaiseksi seuraavan reitin.

Esimerkki: Viiden kertotaulu

Tehdään ohjelma, joka laskee ja tulostaa viiden kertotaulun. Kun teemme laskurin a, joka kasvaa yhdestä kymmeneen silmukan sisällä, niin saamme viiden kertotaulun aikaiseksi kertomalla laskurin viidellä. Kokonainen ohjelma näyttää tältä.


Ohjelman tulostus näyttää tältä.



Tulostuslause, jossa on sekaisin tekstiä ja muuttujia, voidaan muodostaa: sano x sekunnin ajan - ja yhdistä ja – komennoilla. Alla oleva kuva havainnollistaa asiaa.

Pinta-alojen summa

Tehdään ohjelma, joka laskee neliön pinta-alojen summan, kun neliön sivun pituus kasvaa 1:stä 10:een. Ohjelman koodi on seuraava.



Ohjelman lopussa tulostuu seuraavaa.



Pyörivä neliö

Tehdään ohjelma, jossa neliö pyörii keskellä ikkunaa.



Nyt tulostuu seuraavaa.



Sisempi toistolause piirtää yhden neliön neljällä viivalla. Ulompi toistolause piirtää 30 kappaletta neliöitä. Ennen kuin neliö voidaan piirtää, niin meidän täytyy kuljettaa hahmon keskipiste origosta paikkaan (-100, 100). Neliön piirtämisen jälkeen meidän täytyy palauttaa hahmo takaisin origoon eli paikaan (0, 0). Kun hahmo on origossa, niin muutamme aloitussuunnan 12 astetta oikealle, niin seuraava neliö piirretään 12 astetta kiertyneenä edelliseen neliöön nähden. Koska 12° ∙ 30 = 360°, niin täyteen ympyrään mahtuu 30 neliötä.

1800 pistettä

Tehdään ohjelma, joka piirtää 60 x 30 = 1800 pistettä.



Nyt ohjelma tulostaa seuraavaa.



Tarvitset kaksi muuttujaa: a ja b. Muuttujalla a liikutaan vaakasuunnassa ja muuttujalla b liikutaan pystysuunnassa. Sisempi toistolause hoitaa vaakasuuntaisen liikkeen ja ulompi toistolause hoitaa pystysuuntaisen liikkeen. Koska sisempää toistolausetta toistetaan 60 kertaa, niin muuttujan a arvo pitää aina nollata eli asettaa arvo a = 1 ennen uuden toistolauseen aloittamista. Muuttuja b tarvitaan vain nollata yhden kerran heti alussa. Piste (-230, 150) on kuvion alkukoordinaatti ja pisteet tulostetaan 5 yksikön välein eli siksi siellä on laskutoimitus 5*a ja 5*b.

Pyörivä ympyräjono

Tehdään ohjelma, jossa 13 ympyrää jonossa pyörii ympäri keskipisteen suhteen. Ohjelman koodi on seuraavanlainen.



Tulostuu seuraavaa.

1000 ympyrää

Tehdään ohjelma, joka arpoo satunnaisen värin ja sijoittaa ympyrän satunnaiseen paikkaan koordinaatistossa. Ohjelman koodi on seuraava.



Scratchissa satunnainen väri on jokin numeroarvo väliltä 0–200. Scratchissa ikkunan koko on 480 x 360, missä origo on ikkunan keskellä, jolloin arvomme paikan tälle alueelle. Laitamme nämä komennot toistolauseen sisälle, jossa laitamme kynän alas satunnaiseen paikkaan. Ohjelma tulostaa nyt seuraavaa.

Suora xy-koordinaatistossa

Tehdään ohjelma, joka piirtää suoran y =kx+b. Ohjelman koodi on seuraavanlainen. Suora saadaan piirrettyä, kun silmukan sisällä laskemme suoran pisteiden (x, y) arvoja 480 kappaletta. Ennen piirtämistä piirretään x- ja y-akseli.



Ohjelma tulostaa nyt seuraavaa.



Kokeile muuttaa muuttujan k arvoa. Mitä havaitset?

Yhtälön ratkaisu

Tehdään ohjelma, joka ratkaisee yhtälön 4x+4 = 2x+16. Ohjelman koodi on seuraava.



Ohjelma laskee yhtälön vasemman ja oikean puolen erikseen. Jos yhtälön vasemmanpuolen arvo on yhtä suuri kuin oikea puoli, niin olemme löytäneet yhtälön ratkaisun. Nyt tulostuu seuraavaa.