Esimerkki: Lukujen vertailua
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(400,300); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(0); // Täyttöväri musta
textSize(32); // Tekstin koko
}
void draw() {
int luku = 3;
// Määrittele kokonaislukumuuttuja ja anna sille arvo
if (luku > 0) { // Jos luku on suurempi kuin nolla, niin …
text("Luku on positiivinen",10,100);
}
if (luku < 0) { // Jos luku on pienempi kuin nolla, niin …
text("Luku on negatiivinen",10,100);
}
if (luku == 0) { // Jos luku on nolla, niin …
text("Luku on nolla",10,100);
}
}
Tässä on yksi mahdollinen ratkaisu. Tehdään jokaisesta mahdollisesta vaihtoehdosta oma if-lause. Koska ehtoja on kolme, niin tällöin tarvitaan kolme if-lausetta. Ohjelman suoritus eri luku-muuttujan arvoilla on seuraavanlainen.
Toinen vaihtoehto on käyttää else-määrettä. Koska ehtoja on nyt kolme – eikä kaksi, niin voimme tällöin ketjuttaa if-lauseita seuraavalla tavalla.
if (ehto1) {
komennot A;
} else if (ehto2) {
komennot B;
} else {
komennot C;
}
Jos ensimmäinen ehto on voimassa, niin tällöin suoritetaan komennot A. Jos ensimmäinen ehto ei ole voimassa, niin tällöin läpikäydään uusi ehto. Jos toinen ehto on nyt voimassa, niin tällöin suoritetaan komennot B. Jos toinen ehto ei ole voimassa, niin tällöin suoritetaan komennot C. Ketjuttamisessa suoritetaan ne toiminnot, jotka ensimmäinen ehto täyttää. Mikäli mikään ehto ei täyty, niin tällöin suoritetaan komennot C.
Kokonainen ohjelma näyttäisi nyt tältä.
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(400,300); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(0); // Täyttöväri musta
textSize(32); // Tekstin koko 32
}
void draw() {
int luku = 3;
if (luku > 0) {
// Jos luku on suurempi kuin nolla, niin …
text("Luku on positiivinen",10,100);
} else if (luku < 0) {
// tai jos luku on pienempi kuin nolla
text("Luku on negatiivinen",10,100);
} else { // tai luku on nolla
text("Luku on nolla",10,100);
}
}
Ketjuttaminen on hyvä idea, jos vaihtoehtoja on monia. Viimeinen else-määre hoitaa kaikki muut vaihtoehdot, joten ei pääse syntymään sellaista tilannetta, että jokin vaihtoehto jäisi pois. Ketjuttamisen ja kolmen erillisen if-lauseen eroa voi havainnollistaa vuokaavioilla seuraavasti.
Miksi ketjuttaminen on parempi kuin erilliset ehdot? Jos meillä on erillisiä ehtoja, niin kaikki ehdot suoritetaan läpi järjestyksessä. Vaikka jo ensimmäinen ehto on tosi, siitä huolimatta myös muut ehdot käydään läpi. Ketjutuksessa ehtojen suoritus loppuu heti, kun tulee vastaan sellainen ehto, joka on tosi. Ketjuttaminen selvästi tehokkaampi tapa selvittää vaihtoehdot kuin kaikkien ehtojen läpikäyminen.