3.2 Peruslaskutoimitukset

Yhteenveto





Sanallinen algoritmi
  1. Aseta ikkunan kooksi 400 px vaakaan ja 300 px pystyyn.
  2. Aseta taustaväriksi valkoinen.
  3. Aseta tekstin väriksi musta.
  4. Aseta fontin kooksi 24.
  5. Määritellään kokonaislukumuuttuja luku1 ja annetaan sille arvo 3.
  6. Määritellään kokonaislukumuuttuja luku2 ja annetaan sille arvo 4.
  7. Määritellään desimaalilukumuuttuja luku3 ja annetaan sille arvo 3.0.
  8. Määritellään desimaalilukumuuttuja luku4 ja annetaan sille arvo 4.0.
  9. Määritellään kokonaislukumuuttuja summa ja annetaan sille arvoksi muuttujien luku1 ja luku2 yhteenlasku.
  10. Määritellään kokonaislukumuuttuja erotus ja annetaan sille arvoksi muuttujien luku1 ja luku2 vähennyslasku.
  11. Määritellään kokonaislukumuuttuja tulo ja annetaan sille arvoksi muuttujien luku1 ja luku2 kertolasku.
  12. Määritellään desimaalilukumuuttuja osamaara ja annetaan sille arvoksi muuttujien luku3 ja luku4 jakolasku.
  13. Määritellään desimaalilukumuuttuja potenssi ja annetaan sille arvoksi muuttujien luku1 ja luku2 potenssi.
  14. Tulostetaan muuttujien: luku1, luku2 ja summa arvot.
  15. Tulostetaan muuttujien: luku1, luku2 ja erotus arvot.
  16. Tulostetaan muuttujien: luku1, luku2 ja tulo arvot.
  17. Tulostetaan muuttujien: luku1, luku2 ja osamaara arvot.
  18. Tulostetaan muuttujien: luku1 ja potenssi arvot. Luku2 muuttujan tilalle tulostetaan arvoa vastaava potenssi unicode-koodilla.

// 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.

Sanallinen algoritmi
  1. Aseta ikkunan kooksi 450 px vaakaan ja 250 px pystyyn.
  2. Aseta ikkunan taustaväriksi valkoinen.
  3. Aseta tekstin väriksi sininen.
  4. Aseta tekstin kooksi 30 px.
  5. Määritellään kokonaislukumuuttuja nimeltään: yhteen, ja sijoitetaan siihen laskutoimituksen kolme plus viisi arvo.
  6. Määritellään kokonaislukumuuttuja nimeltään: vahennus, ja sijoitetaan siihen laskutoimituksen yhdeksän miinus neljä arvo.
  7. Määritellään kokonaislukumuuttuja nimeltään: kerto, ja sijoitetaan siihen laskutoimituksen neljä kertaa viisi arvo.
  8. Määritellään desimaalilukumuuttuja nimeltään: jako, ja sijoitetaan siihen laskutoimituksen kaksikymmentäneljä jaettuna viidellä arvo.
  9. Määritellään desimaalilukumuuttuja nimeltään: potenssi, ja sijoitetaan siihen laskutoimituksen kaksi potensiin kolme arvo.
  10. Tulostetaan teksti: "3+5 = " ja muuttujan yhteen arvo paikkaan (100,40).
  11. Tulostetaan teksti: "9-4 = " ja muuttujan vahennys arvo paikkaan (100,80).
  12. Tulostetaan teksti: "4*5 = " ja muuttujan kerto arvo paikkaan (100,120).
  13. Tulostetaan teksti: "24:5 = " ja muuttujan jako arvo paikkaan (100,160).
  14. Tulostetaan teksti: "2^3 = " ja muuttujan potenssi arvo paikkaan (100,200).

// 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);

Niin tällöin tulostuu:

Vastaavasti kun muutat potenssin tekstintulostuskomennon muotoon:

text("2\u00B3 = "+potenssi,100,200);

Niin nyt tulostuu:

Joitain hyödyllisiä ja tavallisimmin käytettyjä tulostuskomentoja on lueteltu alla olevassa taulukossa.

MerkkiTulostuskoodiMerkkiTulostuskoodiMerkkiTulostuskoodi
® \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.

Sanallinen algoritmi
  1. Aseta ikkunan kooksi 400 px vaakaan ja 250 px pystyyn.
  2. Aseta ikkunan taustaväriksi valkoinen.
  3. Aseta tekstin väriksi sininen.
  4. Aseta tekstin kooksi 30 px.
  5. Määrittele kokonaislukumuuttuja nimeltään: luku1, ja anna sille arvo: 3.
  6. Määrittele kokonaislukumuuttuja nimeltään: luku2, ja anna sille arvo: 5.
  7. Määrittele kokonaislukumuuttuja nimeltään: luku3, ja anna sille arvo: 9.
  8. Määrittele kokonaislukumuuttuja nimeltään: luku4, ja anna sille arvo: 4.
  9. Määrittele desimaalilukumuuttuja nimeltään: luku5, ja anna sille arvo: 24.0.
  10. Määrittele desimaaliukumuuttuja nimeltään: luku6, ja anna sille arvo: 5.0.
  11. Määrittele kokonaislukumuuttuja nimeltään: luku7, ja anna sille arvo: 2.
  12. Määrittele kokonaislukumuuttuja nimeltään: yhteen ja anna sille arvo, joka saadaan muuttujien luku1 ja luku2 summasta.
  13. Määrittele kokonaislukumuuttuja nimeltään: vahennys ja anna sille arvo, joka saadaan muuttujien luku3 ja luku4 erotuksesta.
  14. Määrittele kokonaislukumuuttuja nimeltään: kerto ja anna sille arvo, joka saadaan muuttujien luku4 ja luku2 tulosta.
  15. Määrittele desimaalilukumuuttuja nimeltään: jako ja anna sille arvo, joka saadaan muuttujien luku5 ja luku6 osamäärästä.
  16. Määrittele desimaalilukumuuttuja nimeltään: potenssi ja anna sille arvo, joka saadaan muuttujien välisestä laskutoimituksesta, jossa luku7 on potenssin kantaluku ja luku1 on exponentti.
  17. Tulosta muuttujien: luku1, luku2 ja yhteen, arvot paikkaan (100,40).
  18. Tulosta muuttujien: luku3, luku4 ja vahennys, arvot paikkaan (100,80).
  19. Tulosta muuttujien: luku4, luku2 ja kerto, arvot paikkaan (100,120).
  20. Tulosta muuttujien: luku5, luku6 ja jako, arvot paikkaan (100,160).
  21. Tulosta muuttujan: luku7 arvo, sekä muuttujaa1 vastaavan potenssin merkki paikkaan (100,200).

// 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.
  1. Muuttujien määrittely ja alkuarvojen antaminen.
  2. Laskujen tekeminen muuttujien kesken.
  3. Vastauksen tulostaminen eli muuttujien arvon tulostaminen.
Koska muuttujia on käytetty aivan alusta asti, niin nyt voit helposti muuttaa muuttujien alkuarvoja ja ohjelma tekee kaikki laskutoimitukset uudestaan. Koodia, joka suorittaa ja tulostaa laskutoimitukset, ei tarvitse muuttaa, vaikka muutamme alkuarvoa. Pyri ohjelman suunnittelussa tähän. Ohjelman suoritus näyttää nyt tältä.




Huomaa, että kertomerkki ja kolmas potenssi on myös tulostettu oikein tulostuskoodeilla: \u00B7 ja \u00B3.

Esimerkki: Summan ja erotuksen tulo

Tehdään ohjelma, jossa on kaksi muuttujaa luku1 ja luku2. Sijoitetaan luku1 muuttujalle arvo 36 ja luku2 muuttujalle arvo 24. Tehdään ohjelma joka tulostaa lukujen summan, lukujen erotuksen, sekä summan ja erotuksen tulon.

Sanallinen algoritmi
  1. Aseta ikkunan kooksi 600 px vaakaan ja 300 px pystyyn.
  2. Aseta ikkunan taustaväriksi valkoinen.
  3. Aseta tekstin väriksi musta.
  4. Aseta tekstin kooksi 24 px.
  5. Määrittele kokonaislukumuuttuja nimeltään: luku1, ja anna sille arvo: 36.
  6. Määrittele kokonaislukumuuttuja nimeltään: luku2, ja anna sille arvo: 24.
  7. Määrittele kokonaislukumuuttuja nimeltään: summa, ja anna sille arvo, joka saadaan muuttujien luku1 ja luku2 välisestä laskutoimituksesta: luku1 + luku2.
  8. Määrittele kokonaislukumuuttuja nimeltään: erotus, ja anna sille arvo, joka saadaan muuttujien luku1 ja luku2 välisestä laskutoimituksesta: luku1 - luku2.
  9. Määrittele kokonaislukumuuttuja nimeltään: tulo, ja anna sille arvo, joka saadaan muuttujien summa ja erotus välisestä laskutoimituksesta: luku1*luku2.
  10. Tulosta muuttujien: luku1, luku2 ja summa arvot paikkaan (100,100).
  11. Tulosta muuttujien: luku1, luku2 ja erotus arvot paikkaan (100,150).
  12. Tulosta muuttujan: tulo arvo paikkaan (100,200).

// 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:
  1. Alkuarvojen antaminen luku1 ja luku2 muuttujille,
  2. summan, erotuksen ja tulon laskeminen ja
  3. 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

Tehdään ohjelma, joka laskee laskun: (48 – 52) : (52 – 48)2. Käytetään muuttujia, jossa luku1 = 48 ja luku2 = 52. Kokonainen ohjelma näyttää tältä.

Sanallinen algoritmi
  1. Aseta ikkunan kooksi 600 px vaakaan ja 300 px pystyyn.
  2. Aseta ikkunan taustaväriksi valkoinen.
  3. Aseta tekstin väriksi musta.
  4. Aseta tekstin kooksi 24 px.
  5. Määrittele desimaalilukumuuttuja nimeltään: luku1, ja anna sille arvo: 48.0.
  6. Määrittele desimaalilukumuuttuja nimeltään: luku2, ja anna sille arvo: 52.0.
  7. Määrittele kokonaislukumuuttuja nimeltään: vastaus, ja anna sille arvo, joka saadaan muuttujien luku1 ja luku2 välisestä laskutoimituksesta: (luku1 - luku2)/(luku2-luku1)^2.
  8. Tulosta muuttujien: luku1, luku2 ja vastaus arvot paikkaan (100,100). Muotoile tulostus laskukaavan mukaisesti.

// 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.

Ohjelman suoritus on seuraavanlainen.

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.


Sanallinen algoritmi
  1. Aseta ikkunan kooksi 600 px vaakaan ja 300 px pystyyn.
  2. Aseta ikkunan taustaväriksi valkoinen.
  3. Määrittele kokonaislukumuuttuja nimeltään: x, ja anna sille arvo: 100.
  4. Määrittele kokonaislukumuuttuja nimeltään: y, ja anna sille arvo: 50.
  5. Määrittele kokonaislukumuuttuja nimeltään: a, ja anna sille arvo: 150.
  6. Määrittele kokonaislukumuuttuja nimeltään: b, ja anna sille arvo: 250.
  7. Piirrä viiva muuttujien avulla eli piirrä viiva pisteiden (x,y) ja (x+a,y+b) välille.

// 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?