3.2 Peruslaskutoimitukset
Yhteenveto


|
// Ohjelman tehnyt: e-Oppi Oy
// 29.1.2017
void setup() {
size(400,300); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(0); // Tekstin väri musta
textSize(24); // Fontin koko
}
void draw() {
// Anna alkuarvot
int luku1 = 3;
int luku2 = 4;
float luku3 = 3.0;
float luku4 = 4.0;
// Tee laskutoimitukset
int summa = luku1 + luku2;
int erotus = luku1 - luku2;
int tulo = luku1*luku2;
float osamaara = luku3/luku4;
float potenssi= pow(luku1,luku2);
// Tulosta vastaukset
text(luku1+" + "+luku2 +" = "+summa,100,50);
text(luku1+" - "+luku2 +" = "+erotus,100,100);
text(luku1+" \u00B7 "+luku2 +" = "+tulo,100,150);
text(luku1+" : "+luku2 +" = "+osamaara,100,200);
text(luku1 +"\u2074 = "+potenssi,100,250);
}
Peruslaskutoimitukset
Peruslaskutoimitukset on määritelty ohjelmoinnissa seuraavasti.
Laskutoimitus |
Komento |
Ohjelmointi |
Matematiikka |
---|---|---|---|
Yhteenlasku |
+ |
3 + 5 |
3 + 5 |
Vähennyslasku |
- |
9 - 4 |
9 – 4 |
Kertolasku |
* |
4*5 |
4 · 5 |
Jakolasku |
/ |
24/8 |
24 : 8 |
Potenssi an |
pow(a,n) |
pow(2,3) |
23 |
Tehdään tästä seuraavanlainen ohjelma.
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(400,250); // Määritellään ikkunan koko
background(255); // Taustaväri valkoinen
fill(0,0,255); // Tekstin väri sininen
textSize(30); // Tekstin koko 30 px
}
void draw() {
int yhteen = 3 + 5;
int vahennys = 9 - 4;
int kerto = 4*5;
float jako = 24.0/5.0;
float potenssi = pow(2,3);
text("3 + 5 = "+yhteen,100,40);
text("9 - 4 = "+vahennys,100,80);
text("4*5 = "+kerto,100,120);
text("24:5 = "+jako,100,160);
text("2^3 = "+potenssi,100,200);
}
Tässä jokaiselle laskutoimituksen vastaukselle on perustettu oma muuttujansa. Potenssilaskussa muuttujaksi on aina määriteltävä desimaalilukumuuttuja (float). Muissa laskuissa voit valita, että käytätkö kokonaisluku vai desimaaliluku muuttujaa. Jakolaskussa on aina valittava desimaalilukumuuttuja, koska laskua aloittaessa emme tiedä meneekö jakolasku tasan. Jos jakolasku ei mene tasan ja olet määritellyt sen kokonaislukumuuttujaksi, niin tällöin luku katkaistaan. Jakolaskussa myös lukujen on oltava alussa desimaalilukuja, jotta lukuja ei katkaista kokonaisosasta poikki. Tulostus nyt näyttää tältä.
Huomio: Haluaisitko tähden tilalle kertomerkin tai potenssin oikeasti ylös? Kertomerkin voit tulostaa komennolla: \u00B7 ja kolmannen potenssin voit tulostaa komennolla: \u00B3.
Kun siis muutat kertolaskun tekstintulostuskomennon muotoon:
text("4\u00B75 = "+kerto,100,120);
Vastaavasti kun muutat potenssin tekstintulostuskomennon muotoon:
text("2\u00B3 = "+potenssi,100,200);
Joitain hyödyllisiä ja tavallisimmin käytettyjä tulostuskomentoja on lueteltu alla olevassa taulukossa.
Merkki | Tulostuskoodi | Merkki | Tulostuskoodi | Merkki | Tulostuskoodi |
---|---|---|---|---|---|
® | \u00AE | ¼ | \u00BC | ⁰ | \u2070 |
© | \u00A9 | ½ | \u00BD | ¹ | \u00B9 |
° | \u00B0 | ¾ | \u00BE | ² | \u00B2 |
± | \u00B1 | α | \u03B1 | ³ | \u00B3 |
€ | \u00AC | β | \u03B2 | ⁴ | \u2074 |
√ | \u221A | γ | \u03B3 | ⁵ | \u2075 |
· | \u00B7 | π | \u03C0 | ⁶ | \u2076 |
‰ | \u2030 | Δ | \u0394 | ⁷ | \u2077 |
∞ | \u221E | μ | \u03BC | ⁸ | \u2078 |
∑ | \u2211 | ≤ | \u2264 | ⁹ | \u2079 |
→ | \u2192 | ≥ | \u2265 | ⁿ | \u207F |
≈ | \u2248 | ≠ | \u2260 | ↔ | \u2194 |
Edellinen esimerkki havainnollisti laskuja lukujen kesken, mutta myös muuttujia voi laskea aivan samalla tavalla. Pyri koodia kirjottaessa siihen, että käytät muuttujia jo alusta asti. Tehdään edellinen ohjelma uudestaan, niin että käytämme muuttujia myös laskutoimituksessa oleville luvuille, niin ohjelma on tällöin seuraava.
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(400,250); // Määritellään ikkunan koko
background(255); // Taustaväri valkoinen
fill(0,0,255); // Tekstinväri sininen
textSize(30); // Tekstin koko 30 px
}
void draw() {
// Alkuarvot muuttujille
int luku1 = 3;
int luku2 = 5;
int luku3 = 9;
int luku4 = 4;
float luku5 = 24.0;
float luku6 = 5.0;
int luku7 = 2;
//Laskutoimitukset muuttujien kesken.
//Sijoita laskutoimituksen vastaus omille muuttujille.
int yhteen = luku1 + luku2;
int vahennys = luku3 - luku4;
int kerto = luku4*luku2;
float jako = luku5/luku6;
float potenssi = pow(luku7,luku1);
// Tulosta muuttujien arvot näkyviin.
text(luku1+" + "+luku2+" = "+yhteen,100,40);
text(luku3+" - "+luku4+" = "+vahennys,100,80);
text(luku4+"\u00B7"+luku2+" = "+kerto,100,120);
text(luku5+":"+luku6+" = "+jako,100,160);
text(luku7+"\u00B3 = "+potenssi,100,200);
}
Kuten huomaat, ohjelman koodi näyttää jo paljon selkeämmältä. Ohjelmassa on nyt löydettävissä kolme eri vaihetta.
- Muuttujien määrittely ja alkuarvojen antaminen.
- Laskujen tekeminen muuttujien kesken.
- Vastauksen tulostaminen eli muuttujien arvon tulostaminen.

Huomaa, että kertomerkki ja kolmas potenssi on myös tulostettu oikein tulostuskoodeilla: \u00B7 ja \u00B3.
Esimerkki: Summan ja erotuksen tulo
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(600,300); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(0); // Tekstin väri musta
textSize(24); // Fontin koko
}
void draw() {
// 1) Anna alkuarvot
int luku1 = 36;
int luku2 = 24;
// 2) Tee laskutoimitukset
int summa = luku1 + luku2;
int erotus = luku1 - luku2;
int tulo = summa*erotus;
// 3) Tulosta vastaukset
text("Lukujen "+luku1+" ja "+luku2 +" summa on "+summa,100,100);
text("Lukujen "+luku1+" ja "+luku2 +" erotus on "+erotus,100,150);
text("Summan ja erotuksen tulo on "+tulo,100,200);
}
Luvut 36 ja 24 ovat kokonaislukuja ja vastaus on myös kokonaisluku eli käytämme int-tyyppistä muuttujaa. Ylimääräisten muuttujien: summa, erotus ja tulo, käyttäminen selkeyttää ohjelmaa. Ohjelmassa on nyt kolme selkeää vaihetta:
- Alkuarvojen antaminen luku1 ja luku2 muuttujille,
- summan, erotuksen ja tulon laskeminen ja
- Muuttujien arvojen tulostaminen eli vastauksen tulostaminen.
Komennot on suoritettava tässä järjestyksessä. Ohjelman tulostus on seuraava.

Kokeile muuttaa muuttujien luku1 ja luku2 arvoa. Mitä huomaat?
Esimerkki: Potenssilasku
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(600,300); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(0); // Tekstin väri musta
textSize(24); // Fontin koko 24
}
void draw() {
// Määrittele alkuarvot desimaalilukuina
float luku1 = 48.0;
float luku2 = 52.0;
// Laske annettu laskukaava
float vastaus = (luku1-luku2)/pow((luku2-luku1),2);
// Tulosta vastaus muuttujien avulla
text("("+luku1+" - "+luku2+"):("+luku2+" - "+luku1+")\u00B2 = "+vastaus,100,100);
}
Koska laskun vastaus on desimaaliluku, niin tässä ohjelmassa kannattaa käyttää desimaalilukumuuttujia eli määritellään muuttujan tietotyypiksi float. Kun teet sijoituksen luku1:een ja luku2:een, niin lisää luvun loppuun: .0 eli piste ja nolla, jotta myös lähtöarvot ovat desimaalilukuja. Lisää laskutoimituksiin sulkuja, jotta laskut suoritetaan oikeassa järjestyksessä.
On totta, että void draw () -lohko olisi voitu lyhentää muotoon:
void draw() {
text("(48 - 52):(52-48)\u00B2 = "+(48.0-52.0)/pow((52.0-48.0),2),100,100);
}
Mutta ei tehdä näin vaan opetellaan muuttujien käyttöä. Se selkeyttää ohjelmaa ja jatkon kannalta muuttujien hallinta on tärkeää. Ja kun muutat alkuarvoja eli muuttujien luku1 ja luku2 arvoja, niin silloin ei tarvitse enää muuttaa tulostuslausetta. Ohjelma on muuttujien avulla helpommin hallittavissa, jos haluamme laskea saman laskun eri muuttujien arvolla.

Laskukaavat piirtokomennossa

Myös piirtokomennoissa voi käyttää laskukaavoja. Jos viivan alkupiste on (x,y), niin viivan loppupiste voidaan ilmaista lisäyksen avulla. Tässä muuttujalla a on kuvattu vaakasuuntainen lisäys ja muuttujalla b on kuvattu pystysuuntainen lisäys. Tällöin viivan loppupiste on muotoa (x + a, y + b). Kokonainen ohjelma on seuraava.
|
// Ohjelman tehnyt: e-Oppi Oy
// 30.1.2017
void setup() {
size(450,450); // Määritellään ikkunan koko
background(255); // Taustaväri valkoinen
}
void draw() {
int x = 100; // Viivan alkupisteen x-koordinaatti
int y = 50; // Viivan alkupisteen y-koordinaatti
int a = 150; // Vaakasuunatinen lisäys
int b = 250; // Pystysuuntainen lisäys
line(x,y,x+a,y+b);
}
Voit kokeilla muuttaa x:n ja y:n arvoa. Viiva piirretään nyt eri paikkaan, mutta sen asento säilyy. Jos loppupiste osoittaisi ylös oikealle tai alas vasemmalle, kuinka silloin kirjoittaisit koodin?