Esimerkki: Desimaaliluvuilla laskeminen

Tehdään ohjelma, joka laskee suorakulmio piirin. Piiri lasketaan kaavalla: piiri = 2*kanta + 2*korkeus. Haluamme, että aliohjelma laskee desimaalilukuja. Kokonainen ohjelma on seuraava.

SANALLINEN ALGORITMI
  1. Aseta ikkunan kooksi 600 px vaakaan ja 200 px pystyyn.
  2. Aseta ikkunan taustaväriksi valkea.
  3. Aseta tekstin kooksi 30.
  4. Aseta täyttöväriksi musta.
  5. Määrittele desimaalilukumuuttuja kanta ja anna sille arvo 2.5.
  6. Määrittele desimaaliukumuuttuja korkeus ja anna sille arvo 3.2.
  7. Määrittele desimaalilukumuuttuja p sijoita siihen arvo, joka palautuu aliohjelmasta piiri. Kutsu ja välitä aliohjelmalle piiri muuttujien kanta ja korkeus arvot.
  8. Tulosta muuttujan kanta arvo paikkaan (10, 50).
  9. Tulosta muuttujan korkeus arvo paikkaan (10, 100).
  10. Tulosta muuttujan p arvo paikkaan (10, 150).
  11. Aloita desimaalilukuarvon palauttava aliohjelma piiri (Määrittele desimaalilukumuuttujat a ja b).
    1. Määrittele desimaalilukumuuttuja p ja sijoita siihen laskutoimituksen 2*a+2*b tulos.
    2. Palauta muuttujan p arvo takaisin pääohjelmaan.

// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
void setup () {
size(600,200); // ikkunan koko
background(255); // Taustaväri valkoinen
textSize(30); // Tekstin koko
fill(0); // Tekstin väri
}

void draw() {
float kanta = 2.5;
float korkeus = 3.2;
float p = piiri(kanta,korkeus);
text("Suorakulmion kanta = "+kanta,10,50);
text("Suorakulmion korkeus = "+korkeus,10,100);
text("Suorakulmion piiri = "+p,10,150);
}

float piiri(float a, float b) {
float p = 2*a+2*b;
return p;
}

Kun katsotaan aliohjelmaa, huomataan, että aliohjelma alkaa sanalla float eli aliohjelma palauttaa desimaalilukuarvon pääohjelmalle. Myös kaikki muuttujat on määritelty desimaalilukumuuttujiksi. Ohjelma tulostaa seuraavaa.



Aliohjelman toimintaa voidaan havainnollistaa seuraavasti.



Funktio eli aliohjelma piiri(a,b) on kuin kone, johon syötetään kannan ja korkeuden arvot, jonka jälkeen funktiokone tulostaa ulos piirin arvon, joka sitten voidaan sijoittaa pääohjelmassa muuttujalle p.

Tärkeintä on huomata, että palautettavan arvon tietotyyppi eli aliohjelman tietotyyppi on oltava sama kuin pääohjelmassa olevan muuttujan tietotyyppi, johon arvo sijoitetaan. Eli seuraava määrittely ei toimi, koska tietotyyppi on eri.

void draw() {
int kanta = 2;
int korkeus = 3;
int p = piiri(kanta,korkeus);
}

float piiri(int a, int b) {
int p = 2*a+2*b;
return p;
}

Mutta seuraava sitä vastoin toimii, koska tietotyypit ovat samat.

void draw() {
int kanta = 2;
int korkeus = 3;
float p = piiri(kanta,korkeus);
}

float piiri(int a, int b) {
int p = 2*a+2*b;
return float(p);
}

Vaikka alkuarvot ovat kokonaislukuja, niin aliohjelma voi palauttaa toisen tietotyypin muuttujan. Palautettava desimaaliluku pitää pääohjelmassa myös sijoittaa float-tyyppiselle muuttujalle.