Laskeminen luvuilla

Arvaat varmaan, ettei ohjelmointi ole pelkkiä sijoituksia ja ruudulle tulostamista. Ohjelmassa pitää pystyä myös laskemaan arvoilla, joita sijoituksissa käytetään. Tämä onkin mahdollista kaikissa ohjelmointikielissä.

Javassa laskeminen on helppoa: käytössäsi on jo ensimmmäisillä luokilla oppimasi matematiikan laskutoimituksia ilmaisevat merkit (+, -, * ja /), joita kutsumme operaattoreiksi.

Yleensä laskutoimituksen tulos sijoitetaan johonkin muuttujaan ja siksi laskutoimitukset esiintyvät lähinnä sijoituslauseissa. Seuraavassa taulukossa esitetään tiivistetysti laskutoimitukset. Laskutoimitusten tulokset sijoitetaan muuttujaan tulos. Tällä kertaa kaikki laskettavat luvut ovat kokonaislukuja, joten myös vastaukset ovat kokonaislukuja ja muuttuja tulos voidaan määritellä int-tyyppiseksi. Jos laskussa on yksikin desimaaliluku, laskun tulos on myös desimaaliluku ja muuttuja tulos on siis määriteltävä double-tyyppiseksi.

Merkki Tarkoitus Esimerkki Selitys
+ yhteenlasku tulos = 3 + 4; muuttujaan tulos laitetaan laskun 3 + 4 tulos, eli 7.
- vähennyslasku tulos = 120-20; muuttujaan tulos laitetaan laskun 120-20 tulos, siis 100.
* kertolasku tulos = 10 * 10; muuttujaan tulos laitetaan laskun 10 * 10 tulos eli 100.
/ jakolasku int tulos = 7 / 2; muuttujaan tulos laitetaan laskun 7 / 2 tuloksen kokonaisosa. Katso selitys tekstistä!
double tulos = 7.0 / 2; muuttujaan tulos laitetaan laskun 7 / 2 tulos, siis 3.5.
% jäännösjako int tulos = 7 / 2; muuttujaan tulos laitetaan jaosta 7 / 2 jäävä jakojäännös, siis 1.

Kuten taulukosta huomaat, laskeminen on helppoa jo osaamasi matematiikan pohjalta. Ainoat uudet asiat, jotka kaipaavat lisäselitystä, ovat jakolasku ja jäännösjako.


Jakolasku Javassa

Katsoessasi edellistä taulukkoa huomaat, että jakolaskulle on annettu kaksi eri esimerkkiä. Tämä johtuu siitä, että jakolaskun tulos riippuu jaettavien lukujen tyypeistä. Ylemmässä esimerkissä:

      int tulos;

      tulos = 7 / 2;
    

jaettava luku (7) ja jakaja (2) ovat molemmat kokonaislukuja. Tällöin tulos on myös kokonaisluku, eli jakolaskun tuloksesta (3.5) otetaan vain kokonaisosa (3), joka sijoitetaan.

Alemmassa esimerkissä:

      double tulos;

      tulos = 7.0 / 2;
    

luku 7.0 on desimaaliluku. Tällöin Java:ssa jakolasku lasketaan ihan normaalisti ja tulos 3.5 laitetaan double-tyyppiseen muuttujaan tulos. Muistat ennestään, että desimaalilukuja ei voi sijoittaa int-tyyppisiin muuttujiin. Sen vuoksi alemmassa esimerkissä muuttuja tulos määriteltiin double-tyyppiseksi. Jakolasku lasketaan normaalisti, jos kumpi tahansa, jakaja tai jaettava luku, on desimaaliluku. Tämän vuoksi edellisen esimerkin voi kirjoittaa myös näin:

      double tulos;

      tulos = 7 / 2.0;
    

Muista siis aina jakolaskun yhteydessä katsoa, mitä tyyppiä jaettava ja jakaja on. Jos molemmat ovat kokonaislukuja, tehdäänkin kokonaisjako ja voit sijoittaa tuloksen int-muuttujaan. Jos jompi kumpi luvuista on desimaaliluku, saat normaalin desimaaliluvun, jonka voit sijoittaa vain double-tyyppiseen muuttujaan.


Jäännösjako

Osaat laskea jakolaskuja jakokulman avulla. Tällöinhän saattoi tapahtua, että jako ei mennytkään tasan ja jäljelle jäi jakojäännös. Javassa on helppoa saada selville pelkkä jakolaskun jakojäännös käyttämällä %- merkkiä. Jos haluat saada tietää, paljonko on jakolaskun 7 / 2 jakojäännös, voit kirjoittaa:

      int jakojäännös;

      jakojäännös = 7 / 2;
    

Koska 2*3=6, on jakojäännös selvästikin 1. Siis muuttujaan jakojäännös sijoitetaan arvo 1. Tietenkin jakojäännös voi olla vain kokonaisluku, joten määrittelimme muuttujan jakojäännös int-tyyppiseksi. Miten siis selvität, onko luku 7 parillinen? Suoritat tietenkin edellisen laskun ja katsot, onko jakojäännös 0 vai ei: esim. 6 % 2 = 0, joten luku 6 on parillinen, mutta 7 % 2 = 1, joten luku 7 ei ole parillinen.


Tulostus ruudulle

Kuten muistat, saat katsottua muuttujan arvon komennolla System.out.println(); . Jos siis haluat laskea jakojäännöksen jakolaskusta 7 / 2 ja katsoa tuloksen, voit kirjoittaa esim.

      int jakojäännös;

      jakojäännös = 7 % 2;

      System.out.println(jakojäännös);
    

Toisaalta on myös mahdollista olla sijoittamatta tulosta mihinkään muuttujaan ennen ruudulle tulostusta:

      System.out.println(7 % 2);
    

Alat vähitellen ymmärtää, että tulostuskäskyn sulkujen sisään voi laittaa


Lausekkeet

Arvaat varmaan, että voit toki tehdä monimutkaisempiakin laskutoimituksia kuin kahden luvun yhteen-, kerto- ja jakolaskuja, aivan kuten matematiikan tunneillakin. Voit esimerkiksi ratkaista tehtävän "mikä luku saadaan, kun luku 3 kerrotaan kahdella, siihen lisätään 1 ja saatu tulos jaetaan 10:llä?". varmasti ratkaiset tämän tehtävän matematiikan tunnilla laskulla (3*2+1)/10. Kirjoitetaan tämä Java-ohjelman osana:

      double tulos;

      tulos = (3*2+1)/10.0;

      System.out.println(tulos);
    

Ei se tämän vaikeampaa ole! Huomaa, että jakajana oli luku 10.0, jotta suoritettiin normaali jakolasku eikä kokonaisjakoa. Huomaat, että voit lausekkeessa käyttää sulkuja laskujärjestyksen määräämiseen, kuten olet matematiikassa oppinut.