Esimerkki: Laskurin ja for-silmukan vertailua

Tutkitaan, mitä eroavuuksia on, kun toisto tehdään laskurin avulla tai for-silmukan avulla. Tehdään ohjelma, joka tulostaa luvut ykkösestä kymmeneen.
Tehdään aluksi ohjelma käyttäen laskuria ja if-lausetta.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 0;
void setup () {
size(400,200); // ikkunan koko
textSize(30); // Tekstin koko 30
background(255); // Tyhjennä tausta
fill(0); // Täyttöväri musta
}
void draw() {
a++; // Laskuri 1,2,3,4,5,6,...
if (a <= 10) { // Jos laskuri alle tai yhtäsuuri kuin 10, niin
text(a,a*30,100); // Tulosta laskuri
}
}
Tehdään sama ohjelma uudestaan käyttäen for-silmukkaa.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
void setup () {
size(400,200); // ikkunan koko
textSize(30); // Tekstin koko 30
background(255); // Tyhjennä tausta
fill(0); // Täyttöväri musta
}
void draw() {
for (int a = 1; a<=10; a++) {
text(a,a*30,100);
}
}
Eroavuuksia
- For-silmukassa laskurille alkuarvo annetaan silmukassa, mutta pelkkää laskuria käyttäen alkuarvo on annettava jo heti ohjelman alussa.
- Pelkkää laskuria käyttäen toistojen määrä voidaan rajoittaa if-lauseella. For-silmukassa toistojen määrä rajoitetaan ehdolla, joka on silmukassa.
- Pelkkää laskuria käyttäen laskuri (a++) laitetaan void draw ()-lohkoon. Koska void draw ()-lohko on ikuisessa silmukassa, niin siksi laskuri kasvaa. For-silmukassa laskuri on itse lausekkeessa. Jos laitat void setup ()-lohkoon komennon: noLoop(); niin ylemmässä esimerkissä tulostuu vain ensimmäinen numero, mutta alemassa esimerkissä tulostuu kaikki numerot. For-silmukka toimii kuin oma alilohko, joka suoritetaan kerralla loppuun asti.
Tekstiä voi myös liikutella translate(x,y); komennolla. Muuta edellinen ohjelma tällöin muotoon.
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
void setup () {
size(400,200); // ikkunan koko
textSize(30); // Tekstin koko 30
background(255); // Tyhjennä tausta
fill(0); // Täyttöväri musta
}
void draw() {
for (int a = 1; a<=10; a++) {
pushMatrix(); // Koordinaatisto muistiin
translate(a*30,100); // Liikuta koordinaatistoa
text(a,0,0); // Muuttujan a arvo tulostetaan paikkaan (0,0)
popMatrix(); // Palautetaan koordinaatisto muistista
}
}
Sinulla on vielä kolmaskin vaihtoehto käytettävissä eli while-lause. While-lausetta käytettäessä laskuri on laitettava lauseen sisälle. While-lausetta toistetaan niin kauan kuin ehto on voimassa. Jossain vaiheessa, kun laskurin arvo kasvaa tarpeeksi suureksi, ehto ei enää ole voimassa while-lauseessa ja while-lausetta ei enää suoriteta. Laskuri-muuttuja on ns. globaalimuuttuja ja laskurin alkuarvo on annettava heti ohjelman alussa. Ohjelma, joka tulostaa luvut yhdestä kymmeneen while-lausen avulla on seuraavanlainen.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 1;
void setup () {
size(400,200); // ikkunan koko
textSize(30); // Tekstin koko 30
background(255); // Tyhjennä tausta
fill(0); // Täyttöväri musta
}
void draw() {
while ( a <= 10) {
text(a,a*30,100);
a++;
}
}