Processing ohjelman rakenne

Tähän asti olet luonut ohjelmia, jotka koostuvat kerran suoritettavasta käskypinosta. Komennot suoritetaan järjestyksessä ylhäältä alas, jonka jälkeen ohjelma päättyy. Tässä kappaleessa opit, minkälaisista palasista tyypillinen Processing-ohjelma koostuu.

Metodit

Aiemmin kaikkia tietokoneelle annettavia ohjeita on kutsuttu nimellä käsky. Kun tietokone suorittaa esimerkiksi ellipse-käskyä, se joutuu kuitenkin tekemään paljon enemmän asioita kuin yksi komento antaa ymmärtää. Tietokoneen on esimerkiksi laskettava, mihin ympyrän kehän pisteet sijoitetaan, ja sen on lähetettävä tiedot jokaisesta piirrettävästä pikselistä tietokoneen näytönohjaimelle. Yksittäinen käsky koostuu siis oikeasti niin suuresta joukosta erilaisia käskyjä, että voidaan puhua kokonaisesta aliohjelmasta oman ohjelmamme sisällä.

Aliohjelmia kutsutaan eri kielissä hieman eri nimillä. Processingissa aliohjelmia kutsutaan metodeiksi. Metodille annettavia arvoja puolestaan kutsutaan parametreiksi.

Metodit ovat siis meille jo tuttu juttu, vain nimi on uusi:

metodinNimi(parametri1, parametri2, parametri3, ..);
parametritonMetodi();

ellipse(100, 100, 50, 50);
noStroke();

Kommentit

Kurssin johdanto-luvussa tutustuit kommentteihin. Kommenteilla tarkoitetaan mitä tahansa tekstiä rivillä, joka alkaa kahdella /-merkillä:

// tämä on kommentti. tämä on viesti muille ohjelmoijille, ei tietokoneelle.

Tietokone hyppää näiden rivien yli suorittaessaan koodia, ne eivät siis vaikuta ohjelman toimivuuteen. Voit kirjoittaa selvennyksiä koodisi toiminnasta, jotta sinun ja muiden on myöhemmin helpompi lukea koodia. 


Setup ja draw -metodit

Useat tietokoneohjelmat sisältävät erilaisia toistorakenteita. Ohjelma suorittaa tiettyjä osia yhä uudestaan ja uudestaan. Ohjelma voi esimerkiksi odottaa uusia käskyjä kayttäjältä tai palata tiettyyn tilaan suoritettuaan tietyt toiminnot. Processingissa tämä runko muodostuu setup ja draw -metodeista.

void setup(){
 // täällä oleva koodi suoritetaan vain kerran 
}

void draw(){
  // täällä oleva koodi suoritetaan oletusarvoisesti 
  // 60 kertaa sekunnissa kunnes ohjelma suljetaan
}

Setup ja draw ovat metodeja aivan kuten aiemmin käyttämämme metoditkin. Erona on se, että ylläolevassa koodissa määrittelemme metodien toimintaa, kun aiemmin vain kutsuimme niitä.

Setup ja draw ovat myös siitä erikoisia, että meidän ei tarvitse itse kutsua niitä mistään, vaan ohjelman käynnistyessä suoritetaan ensin setup alusta loppuun, ja sen jälkeen siirrytään automaattisesti suorittamaan draw-metodia, kunnes ohjelman suoritus lopetetaan. Setup-metodi siis valmistelee suoritettavan ohjelman alkutilan ja draw-metodi toimii ruudun päivittäjänä.

Ohjelmamme rakentuu setup- ja draw-metodien sisällä olevista komennoista, joilla kutsutaan muita metodeja. Kopioi ylläoleva koodi omaan editoriisi ja kokeile nyt kirjoittaa vaikkapa ellipse-kutsu draw-metodin sisään (eli {- ja }-merkkien väliin).

void setup(){
  size(500, 500);
}

void draw(){
  ellipse(250, 250, 50, 50);
}

Ohjelma piirtää jatkuvasti kymmeniä ellipsejä sekunnissa. Tutustut seuraavassa osioissa satunnaisuuteen, joka havainnollistaa draw-metodin toimintaa, mutta tee allaoleva tehtävä vielä ennen sitä.


Harjoitus

Piirrä ellipse-metodilla ympyrä, jonka läpimitta on vähintään 200 ja joka mahtuu kokonaisuudessaan ikkunan sisäpuolelle.

Aseta ikkunan koko setup-metodissa ja kutsu ellipse-metodia draw-metodissa.