Esimerkki: Arvo kirjain

Tehdään funktio arvo_kirjain(a,b); joka arpoo numeron esimerkiksi väliltä 97...122 ja muuttaa numeron sitä vastaavaksi kirjaimeksi. Numeroa 97 vastaa kirjain a, numeroa 98 vastaa kirjain b, numeroa 99 vastaa kirjain c, numeroa 100 vastaa kirjain d jne. Tehdään vain yksi arpominen eli laitetaan komento noLoop().

Ohjelman koodi on seuraava.

SANALLINEN ALGORITMI
  1. Aseta ikkunan kooksi 600 px vaakaan ja 200 px pystyyn.
  2. Aseta tekstin väriksi eli täyttöväriksi musta.
  3. Aseta tekstin kooksi 30.
  4. Laita asetus, joka toistaa void draw ()-lohkoa vain kerran.
  5. Määrittele merkki-muuttuja mika_merkki ja sijoita siihen aliohjelman arvo_kirjain palauttama arvo. Välitä aliohjelmalle pienin ja suurin numero, jonka väliseltä alueelta arvotaan kokonaisluku.
  6. Tulosta muuttujan mika_merkki arvo paikkaan (10,100).
  7. Aloita merkin palauttava aliohjelma arvo_kirjain (Määrittele kokonaislukumuuttujat a ja b).
    1. Määrittele kokonaislukumuuttuja numero ja sijoita siihen kokonaisluku, joka saadaan kun arvotaan luku väliltä [a,b]. Lukuväli tarkoittaa numeroita ASCII-taulukossa.
    2. Määrittele merkki-muuttuja nimeltään: merkki ja sijoita siihen arvo, joka tulee konversiosta, joka muuttaa arvotun numeron merkiksi.
    3. Palauta merkki-muuttujan arvo takaisin pääohjelmaan.

// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
void setup () {
size(600,200); // Ikkunan koko
fill(0); // Tekstin väri musta
textSize(30); // Tekstin koko 32
noLoop(); // Vain yksi toisto
}

void draw () {
background(255); // Tyhjennä tausta
char mika_merkki = arvo_kirjain(97,122); // Kutsutaan aliohjelmaa
text("Arvottu merkki on "+mika_merkki,10,100); // Tulostetaan merkki
}

char arvo_kirjain(int a, int b) {
int numero = round(random(a,b)); // Arvotaan kokonaisluku väliltä a…b
char merkki = char(numero); // Muuttaa numeron merkiksi
return merkki; // Palautetaan merkki
}


Kun ajat ohjelman, niin ensin pääohjelma kutsuu aliohjelmaa: arvo_kirjain(a,b), missä a:lle ja b:lle välitetään kokonaislukuarvo. Aliohjelma arpoo kokonaisluvun väliltä [a,b] ja muuttaa arvotun luvun merkiksi. Tämä merkki palautetaan takaisin pääohjelmaan, siksi aliohjelman tietotyyppi on char. Sama tietotyyppi on pääohjelmassa mika_merkki-muuttujalla. Ohjelman tulostus näyttää esimerkiksi tältä.




Ohjelman suoritusta voidaan havainnollistaa seuraavasti.



Aliohjelma arvo_kirjain(a,b) saa syötteenä luvut 97 ja 122, jonka jälkeen aliohjelma arpoo luvun tältä väliltä ja muuttaa luvun sitä vastaavaksi merkiksi ascii-taulukossa. Aliohjelma tulostaa esimerkiksi merkin 'k' ulos, joka sijoitetaan pääohjelmassa mika_merkki-nimiselle muuttujalle.