Scratch
Aliohjelma eli lohko: Tiimalasin tekeminen
Tehdään ohjelma, joka piirtää tiimalasin.

Käytimme tässä liiku x askelta ja käänny x astetta komentoja. Nämä komennot ovat periaatteessa Scratchin aliohjelmia eli funktioita, joilla voimme liikkua Scratchin koordinaatistossa. Scratchissa voitaisiin myös tehdä näistä liikkumisista omat aliohjelmat, jolloin voimme ne nimetä haluamallamme tavalla. Sama ohjelma omien aliohjelmien avulla on seuraavanlainen.

Aliohjelma tehdään Scratchsissa seuraavasti.
- Mene Lisää lohkoja välilehdelle.
- Napsauta: Tee lohko – painiketta.
- Valitse Alavalinta: Vaihtoehdot napsauttamalla hiirellä kolmion näköistä painiketta, jolloin paljastuu lisää valintoja.
- Valitse: Lisää numerosyöttö napsauttamalla hiirellä kuvaketta.
- Kirjoita lohkolle nimi syöttökenttään. Tässä lohkon nimi on: eteen.
- Kirjoita lohkolle muuttujan nimi, johon pääohjelmasta välitetään tietoa.
- Kuittaa valinta napsauttamalla hiirellä OK painiketta.
- Nosta Liike-välilehdeltä komento: liiku x askelta, niin että komentopalikka tarttuu kiinni aliohjelmapalikkaan.
- Rahaa hiirellä aliohjelman muuttuja: askel tyhjään kohtaan. Olet nyt luonut aliohjelman.

Kukka ja lehti aliohjelmina
Lohkojen avulla saadaan ohjelma pilkottua osiin. Muistellaan ohjelmaa, joka piirsi silmukoiden avulla terälehden, kukan ja lopuksi useita kukkia. Määritellään aluksi lohko, nimeltä lehti.
- Mene Lisää lohkoja välilehdelle.
- Napsauta: Tee lohko -painiketta.
- Kirjoita lohkolle nimi syöttökenttään. Tässä lohkon nimi on: Lehti.
- Kuittaa valinta napsauttamalla hiirellä OK-painiketta.

- Lisää Lehti-lohkoon seuraava koodi, jolloin olet luonut lohkon eli aliohjelman.

- Aliohjelmaa kutsutaan pääohjelmasta. Rakenna seuraavaksi seuraavanlainen pääohjelma.

- Kun ajat ohjelman, niin tällöin piirretään vain yksi lehti, koska kutsuit Lehti-aliohjelmaa yhden kerran.


Syy tähän on se, että Lehti-aliohjelmaa kutsutaan kaksi kertaa pääohjelmasta.

Myös toinen aliohjelma voi kutsua toista aliohjelmaa. Tee uusi lohko nimeltään Kukka ja lisää siihen seuraava koodi.

Kukka-aliohjelma kutsuu nyt 10 kertaa Lehti-aliohjelmaa. Kun muutat pääohjelman koodin seuraavanlaiseksi, niin pääohjelma kutsuu kerran Kukka-aliohjelmaa.

Lopputulos näyttää seuraavanlaiselta.

Voit jatkaa ketjua eteenpäin. Määritellään uusi lohko nimeltään: Pensas ja muutetaan pääohjelma, kutsumaan pensas aliohjelmaa. Nyt sinulla pitäisi olla pääohjelma ja kolme lohkoa: Pensas, Kukka ja Lehti.

Ketju toimii seuraavasti. Pääohjelmasta kutsutaan kerran Pensas-aliohjelmaa, Pensas-aliohjelmasta kutsutaan 6 kertaa Kukka-aliohjelmaa ja Kukka-aliohjelmasta kutsutaan 10 kertaa Lehti-aliohjelmaa. Lopputulos on seuraavanlainen.

Muuttujan arvon välittäminen lohkoon
- Paina hiiren oikeaa painiketta Lehti-lohkon päällä ja valitse avautuvasta valikosta komento: muokkaa.
- Napsauta hiirellä kolmiota Vaihtoehdot sanan edessä, jolloin avautuvat vaihtoehdot.
- Napsauta hiirellä Lisää numerosyöttö-painiketta.
- Kirjoita syöttökenttään muuttujalle nimi. Esimerkiksi tässä muuttujan nimi on: Askel.
- Kuittaa lisäys napsauttamalla hiirellä: OK painiketta.

- Raahaa hiirellä muuttuja oikeaan kohtaan. Tässä se kohta on askeleen pituus.
- Koska Lehti-aliohjelmaa kutsutaan Kukka-aliohjelmasta, niin välitettävä arvo pitää lisätä aliohjelman kutsuun. Laitamme tähän arvon 4.

- Nyt kun ajat pääohjelman, niin lopputulos on se, että terälehden pituus on eri kuin äsken.

Voit lisätä myös muuttujan Kukka-aliohjelmaan. Laita muuttujan nimeksi: Lehtiä.
- Napsauta hiirellä Lisää numerosyöttö-painiketta.
- Kirjoita syöttökenttään muuttujalle nimi: Lehtiä.
- Kuittaa lisäys napsauttamalla hiirellä: OK painiketta.

- Raahaa hiirellä muuttuja: Lehtiä, oikeaan kohtaan. Silmukan toistojen määrä on lehtien määrä.
- Lisäksi meidän täytyy laskea kulma, joka tarvitaan uuden lehden piirtämistä varten. Kulman suuruus riippuu lehtien määrästä. Oikea kulma saadaan, kun täysiympyrä jaetaan lehtien määrällä.
- Koska Kukka-aliohjelmaa kutsutaan Pensas-aliohjelmasta, niin välitettävä arvo pitää lisätä aliohjelman kutsuun. Laitamme tähän arvon 8, koska haluamme 8 terälehteä kukkaan.

- Nyt kun ajat pääohjelman, lopputulos on seuraava.

Voit lisätä myös muuttujan Pensas-aliohjelmaan. Laita muuttujan nimeksi: Kukkia.
- Napsauta hiirellä Lisää numerosyöttö-painiketta.
- Kirjoita syöttökenttään muuttujalle nimi: Kukkia.
- Kuittaa lisäys napsauttamalla hiirellä: OK painiketta.

- Raahaa hiirellä muuttuja: Kukkia, oikeaan kohtaan. Silmukan toistojen määrä on kukkien määrä.
- Lisäksi meidän täytyy laskea kulma, joka tarvitaan uuden lehden piirtämistä varten. Kulman suuruus riippuu kukkien määrästä. Oikea kulma saadaan, kun täysiympyrä jaetaan kukkien määrällä.
- Koska Pensas-aliohjelmaa kutsutaan pääohjelmasta, niin välitettävä arvo pitää lisätä aliohjelman kutsuun. Laitamme tähän arvon 8, koska haluamme 8 kukkaa pensaaseen.

- Nyt kun ajat pääohjelman, niin lopputulos on seuraava.

Olet saanut nyt aikaiseksi ketjun. Pääohjelmassa kutsutaan Pensas-aliohjelmaa. Pääohjelmassa määrätään kukkien määrä pensassa. Kukkia -muuttuja määrää kukkien määrän. Pensas-aliohjelma kutsuu Kukka-aliohjelmaa. Pensas-aliohjelmassa määrätään terälehtien määrä kukassa. Lehtiä -muuttuja määrää terälehtien määrän. Kukka-aliohjelma kutsuu Lehti-aliohjelmaa. Kukka-aliohjelmassa määrätään lehden pituus yhdessä lehdessä. Lehden pituus määräytyy Askel-muuttujan avulla.
Voit kehitellä ideaa eteenpäin. Voit lisätä Kukka-aliohjelmaan myös Askel-muuttujan ja Pensas-aliohjelmaan sekä Askel- että Lehtiä -muuttujan. Jolloin pääohjelma ja aliohjelmat näyttävät tältä.
Nyt voit määrätä pääohjelmassa kukkien määrän, terälehtien määrän ja terälehden pituuden seuraavasti.

Aliohjelmat ja toistolause
60 viivaa
Esimerkki: Aliohjelma, joka laskee ympyrän pinta-alan
Esimerkki: Tekstin välittäminen aliohjelmaan.
Luodaan aliohjelma eli lohko nimeltään: Viikonpäivä() ja lisätään siihen tekstisyöttökenttä.

Välitetään lohkolle viikonpäivän nimi ja lohko palauttaa vastauksena kommentin, jonka arvo näkyy alla olevassa taulukossa.
Ohjelman koodi on seuraava.
Kun välität haluamasi viikonpäivän aliohjelmaan, niin ohjelma tulostaa esimerkiksi seuraavaa.
Esimerkki: Koordinaatisto ja ympyrä aliohjelmina
Haluamme tehdä kuvan mukaisen xy-koordinaatiston ja piirtää siihen ympyrän, jonka säde on 5.
Tee aliohjelmat koordinaatisto ja ympyrä, jotka ovat seuraavan näköisiä.
Kuten esimerkistä huomaamme, niin aliohjelman käyttö lyhentää pääohjelmassa koodia huomattavasti ja mahdollistaa oman komennon: ympyrä(5), missä 5 on ympyrän säde ruutuina. Tässä ruudun suuruudeksi on määrätty 20 pikseliä.













