Scratch

Aliohjelma eli lohko: Tiimalasin tekeminen

Tehdään ohjelma, joka piirtää tiimalasin.




Ohjelman koodi on seuraava.



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.

  1. Mene Lisää lohkoja välilehdelle.
  2. Napsauta: Tee lohko – painiketta.
  3. Valitse Alavalinta: Vaihtoehdot napsauttamalla hiirellä kolmion näköistä painiketta, jolloin paljastuu lisää valintoja.
  4. Valitse: Lisää numerosyöttö napsauttamalla hiirellä kuvaketta.
  5. Kirjoita lohkolle nimi syöttökenttään. Tässä lohkon nimi on: eteen.
  6. Kirjoita lohkolle muuttujan nimi, johon pääohjelmasta välitetään tietoa.
  7. Kuittaa valinta napsauttamalla hiirellä OK painiketta.
  8. Nosta Liike-välilehdeltä komento: liiku x askelta, niin että komentopalikka tarttuu kiinni aliohjelmapalikkaan.
  9. 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.

  1. Mene Lisää lohkoja välilehdelle.
  2. Napsauta: Tee lohko -painiketta.
  3. Kirjoita lohkolle nimi syöttökenttään. Tässä lohkon nimi on: Lehti.
  4. Kuittaa valinta napsauttamalla hiirellä OK-painiketta.



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



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



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



Kun muutat pääohjelman koodia seuraavalla tavalla, ohjelma piirtää kaksi terälehteä eri paikkaan. 



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

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



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



  8. 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ä.

  1. Napsauta hiirellä Lisää numerosyöttö-painiketta.
  2. Kirjoita syöttökenttään muuttujalle nimi: Lehtiä.
  3. Kuittaa lisäys napsauttamalla hiirellä: OK painiketta.



  4. Raahaa hiirellä muuttuja: Lehtiä, oikeaan kohtaan. Silmukan toistojen määrä on lehtien määrä.
  5. 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ä.
  6. 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.



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


Voit lisätä myös muuttujan Pensas-aliohjelmaan. Laita muuttujan nimeksi: Kukkia.

  1. Napsauta hiirellä Lisää numerosyöttö-painiketta.
  2. Kirjoita syöttökenttään muuttujalle nimi: Kukkia.
  3. Kuittaa lisäys napsauttamalla hiirellä: OK painiketta.



  4. Raahaa hiirellä muuttuja: Kukkia, oikeaan kohtaan. Silmukan toistojen määrä on kukkien määrä.
  5. 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ä.
  6. 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.



  7. 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.



Esimerkiksi näillä arvoilla tulostus näyttää tältä.

Aliohjelmat ja toistolause

Tehdään ohjelma, joka piirtää yhdellä toistolauseella yhden neliön. Lisätään tämän ympärille toinen toistolause, jolloin saadaan aikaiseksi kahdeksan neliötä. Käytämme tässä samoja aliohjelmia kuin ensimmäisessä esimerkissä. Ohjelman koodi on seuraava.



Ohjelma tulostaa nyt seuraavaa.

60 viivaa

Tehdään ohjelma, joka tulostaa 60 kappaletta erivärisiä viivoja ympyrän kehälle. Ohjelman koodi on seuraava.




Jolloin ohjelma tulostaa seuraavaa.


Esimerkki: Aliohjelma, joka laskee ympyrän pinta-alan

Pääohjelmassa kutsutaan aliohjelmaa: Ala ja samalla välitetään aliohjelmaan ympyrän säteen arvo. Pinta-ala lasketaan muuttujaan: ala, jonka jälkeen tulostetaan sekä säde, että pinta-ala.




Kun ohjelma ajetaan, niin tulostus näyttää tältä.


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ä.