Laskuri
Laskuri tarkoittaa yksinkertaista laskutoimitusta kokonaislukumuuttujilla, jossa muuttujan uusi arvo on sama kuin muuttujan vanha arvo lisättynä muutos. Jos esimerkiksi muutos on 1, niin laskuri voidaan kirjoittaa muodossa:
muuttuja = muuttuja + 1;
Tämä voidaan merkitä ohjelmointikielessä lyhemminkin muodossa:
muuttuja++;
Ennen kuin voit käyttää laskuria, niin se on määriteltävä laskuri joko kokonaisluku tai desimaaliluku muuttujaksi. Samalla kun määrittelet laskuri-muuttujan, niin anna laskurille alkuarvo. Laskurimuuttuja määritellään seuraavasti:
int muuttuja = 0;
Koska a:n alkuarvo on 0, niin tässä muuttuja a saa arvoja: 0, 1, 2, 3, 4, 5, 6,… Laskuri-muuttujan määrittely ja muuttujan alkuarvon asettaminen on tehtävä heti ohjelman alussa eli laskuri-muuttujan pitää olla ns. globaali muuttuja.
Katsotaan yksikertaisella esimerkillä mitä tapahtuu, kun laskuri lisätään void draw () silmukassa olevaan piirtokomentoon.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 0; // Laskuri-muuttujan alkuarvo
void setup () {
size(400,200); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(255,0,0); // Täyttöväri punainen
}
void draw () {
a = a + 1; // Laskuri kasvaa yhdellä
ellipse(a,100,100,100); // Piirretään ellipsi
}
Havaitsemme, että punainen ympyrä lähtee liikkumaan oikealle. Kun laskurimuuttuja kasvaa, niin samalla kasvaa ympyrän x-koordinaatti. Kun koodia katsotaan tarkemmin, niin laskuri muuttuja on määritelty heti ohjelman alussa. Miksi sitä ei voi määritellä void draw () – lohkossa? Syy on alkuarvon asettamisessa. Jos laskurimuuttujalle määriteltäisiin alkuarvo void draw ()-lohkossa, niin laskuri nollautuisi koko ajan ja ympyrä ei liikkuisi mihinkään, koska laskeminen lähtisi koko ajan aina alusta.
Itse laskutoimitus: a = a +1; pitää määritellä void draw() – lohkossa, koska void draw ()-lohko on ikuisessa silmukassa. Silmukan ajaminen tarkoittaa laskurin kasvamista. Jos haluat, että ympyrä liikkuu nopeammin, niin voit laittaa muutoksen suuremmaksi kuin 1 eli kirjoittaa laskurin esimerkiksi muodossa: a = a + 2;
Alla on esitetty kuva ohjelman suorituksesta.
Muutetaan koodia. Mitä tapahtuu, jos ympyrä piirretään komennolla: ellipse(200,200,a,a); ?
Kuviota voi myös liikutella translate(x,y) komennolla. Muuta edellinen esimerkki tällöin muotoon.
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 0; // Laskuri-muuttujan alkuarvo
void setup () {
size(400,200); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(255,0,0); // Täyttöväri punainen
}
void draw () {
a = a + 1; // Laskuri kasvaa yhdellä
pushMatrix(); // Ota koordinaatisto muistiin
translate(a,100); // Liikuta koordinaatistoa
ellipse(0,0,100,100); // Piirretään ympyrä paikkaan (0,0)
popMatrix(); // Palauta koordinaatisto muistista
}
Kuinka ympyrä saataisiin liikkumaan vasemmalle? Vasemmalle liike onnistuu yksikertaisesti vähentämällä lukuja. Muutetaan koodia ja katsotaan käytännössä.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 0; // Laskuri muuttujan alkuarvo
void setup () {
size(400,200); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(255,0,0); // Täyttöväri punainen
}
void draw () {
a = a - 1; // Laskuri pienenee yhdellä
ellipse(400+a,100,100,100); // Huomaa: ympyrä alussa oikealla
}
Kirjoitamme laskurin nyt muodossa: a = a – 1; Lisäksi ympyrä pitää siirtää alussa oikealle, siksi ympyrän x:n arvoon on lisätty 400. Nyt laskuri a saa arvoja: 0, -1, -2, -3, -4,… ja x:koordinaatti arvoja: 400, 399, 398, 397, 396,…

Muuta koodia. Mitä tapahtuu, jos ympyrä piirretään komennolla: ellipse(200,200-a,100,100); ? Kokeile muuttaa background(255); komento heti void draw ()-lohkon alkuun, mitä tapahtui?
Ohjelmoinnissa on määritelty laskureita seuraavalla tavalla. Esimerkiksi tässä laskurimuuttujana käytetään a-kirjainta, joka on määritelty kokonaisluvuksi.
| Laskuri | Lyhyemmin | Merkitys |
|---|---|---|
| a = a + 1; | a++; | Kasvattaa laskuria yhdellä |
| a = a - 1; | a--; | Vähentää laskuria yhdellä |
| a = a + 2; | a += 2; | Kasvattaa laskuria kahdella |
| a = a - 2; | a -= 2; | Vähentää laskuria kahdella |
| a = a*2; | a *= 2; | Kertoo laskurin kahdella |
| a = a/2; | a /= 2; | Jakaa laskurin kahdella |
Esimerkki:
a) Jos laskuri on a = a + 3; ja a:n alkuarvo 5, niin a saa tällöin arvoja: 5, 8, 11, 14, 17,...
b) Jos laskuri on a = a - 2; ja a:n alkuarvo on 3, niin a saa tällöin arvoja: 3, 1, -1, -3, -5, -7,...
c) Jos laskuri on a =a*2; ja a:n alkuarvo on 1, niin a saa tällöin arvoja: 1, 2, 4, 8, 16, 32,...
d) Jos laskuri on a=a/2; ja a:n alkuarvo on 4, niin a saa tällöin arvoja: 4, 2, 1, 0.5, 0.25, 0.125,...
