Ilkka Koivistoinen 13.02.2002

Edellinen

Seuraava

5 Operaattorit

Operaattoreilla on ohjelmointikielessä suuri merkitys. Operaattorien avulla tehdään laskutoimituksia, vertailuja ja sijoittaminen muuttujiin.. Operaattorit jaetaan sijoitus-, aritmeettisiin, vertailu- ja loogisiin operaattoreihin.

5. 1 Sijoitus

Muuttujalle voidaan sijoittaa muuttujan vaikutusalueella milloin tahansa arvo = operaattorilla. Sitä ei saa sekoittaa operaattoriin ==, jolla verrataan muuttujien yhtä suuruutta

Esimerkki 11.

float x;
int i;
char c;
boolean b;
string jono;

x=3.12345;
i=-23;
c=´f´;
b=true;
jono="milamassa saragossa ganneloorum long, barbarossa tillintallin tilulililei";

Sijoituslauseessa oikean- ja vasemmanpuolen tulee olla ns. sijoitusyhteensopivia. Tämä tarkoittaa, että oikealla puolella oleva arvo, joka vasemmalla puolella olevaan muuttujaan sijoitetaan, tulee olla joitain tiettyjä poikkeuksia lukuun ottamatta saamaa tyyppiä.

5.1.1 Sijoituslause vaihe vaiheelta

Sijoituslause ei ole matematiikan yhtälö. Tehtäessä sijoituslause j=i+1, missä i ja j ovat int-tyyppiä tapahtuu seuraavaa.

Prosessorit eli keskusyksiköt ovat nopeita ja kalliita komponentteja, jotka osaavat laskutoimitukset rekistereissään. Muisti on keskusyksikön ulkopuolella oleva halpa ja hitaampi tiedon talletusväline. Koska rekistereihin ei mahdu yhtä aikaa kovin paljoa tietoa, pitää sitä rahdata muistin ja rekisterien välillä yhtämittaa edestakaisin

Olkoot muistipaikassa i intluku 5. Kohdassa 1. haetaan siitä muistipaikasta, johon i viittaa, kokonaisluku suorittimen rekisteriin, jossa yhteenlasku suoritetaan. Kohdassa 2. rekisteriarvoon lisätään 1. Kohdassa 3. tulos viedään siihen muistipaikkaan, johon j viittaa. Siis

wpe22.jpg (20659 bytes)

Tämä menetelmä sallii siis myös sijoituslauseen i=i+1. Edellisen esimerkin i=i+1 +-merkki on operaattori. Niihin tutustutaan seuraavassa kappaleessa..

Esimerkki 12.

import Lue;
public class e12
{    // vaihdetaan muistipaikkojen sisällöt keskenään
   public static void main(String args[])
   {
       String s1="Kukko",s2="Kiekuu",tmp;
       System.out.println(s1+" "+s2);
       tmp = s1;
       s1 = s2;
       s2 = tmp;
       System.out.println(s1+" "+s2);
   }
}

Tehtäviä. Seuraavissa tehtävissä olkoot määrittelyt:

float x,y;
int i,j;
char c1,c2;
String jono1,jono2;
boolean b1,b2;

  1. Mitkä seuraavat sijoituslauseet ovat mahdollisia?

    x = y + 123;
    x = i + j;
    i = x + 1;
    c1 = c2 + "apua";
    x = c1 + y;
    Jono1 = jono1+"apua";
    b1 = true;
    b1 = (i<2);
    c1 = c2 + 10;
    c1 = c2 + "a";

  2. Kuvaile tapahtumaa jono2="Moikka"; jono1=jono2; System.out.println(jono2); vaihe vaiheelta.

Vastaukset

Ilkka Koivistoinen 13.02.2002

Edellinen

Seuraava