C++-kielessä on määritelty seuraavat aritmeettiset operaatiot:
Operaatioiden suoritusjärjestys on totuttu (ensin kerto- ja jakolasku, sitten yhteen- ja vähennyslasku) ja normaalin laskujärjestyksen voi ohittaa kaarisuluin ryhmittelemällä:
3+4*5 3*(4+5)
Huomattavaa on, ettei C++ tarjoa valmista operaattoria potenssiin korotusta varten.
Perussääntönä aritmeettisissa operaatioissa on, että jos molemmat operandit ovat saman tyyppisiä, on myös tulos kyseistä tyyppiä. Siten summan
4+5
tulos on kokonaisluku 9, mutta summan
4.0+5.0
tulos on liukuluku 9.0.
Erityisesti on huomattava, että kahden kokonaisluvun jako-operaatiossa tuloksena on kokonaisluku, eli tällöin suoritetaan kokonaisjako.
Näin ollen osamäärän
5/2
arvoksi saadaankin yllättäen tasan 2, kun taas osamäärän
5.0/2.0
arvoksi tulee 2.5.
Jos operaation toinen operandi on liukuluku ja toinen kokonaisluku, menetellään siten, että kokonaisluku muunnetaan automaattisesti liukuluvuksi ennen operaation suoritusta, joten varsinaisessa operaatiossa on kaksi liukulukua. Näin ollen tulos on liukuluku. Kääntäjä suorittaa muuntamisen itse, käyttäjän ei tarvitse siitä huolehtia. Käyttäjän tulee kuitenkin tietää, että kone suorittaa tällaista muuntamista. Muutoin tulee ennemmin tai myöhemmin eteen tilanne, jossa ihmetellään saatuja tuloksia. Siten lausekkeet
5/2.0 ja 5.0/2
molemmat antavat tulokseksi 2.5.
Lisäksi on määritelty etumerkkioperaatio -. Jos muuttujat i ja j ovat kokonaislukumuuttujia ja j:n arvo on 12, sijoituksen
i = -j;
jälkeen muuttujan i arvo on -12.
Kokonaisluvuille on määritelty myös modulo-operaatio %. Tämä operaatio palauttaa kokonaisjaon jakojäännöksen, eli operaation
14%5
arvoksi saadaan 4.
Ykkösen lisääminen tai vähentäminen muuttujan arvoon voidaan C++-kielessä suorittaa lyhyesti ++ tai-- operaatioilla, siis lause
i++; // sama kuin i = i + 1;
lisää muuttujan i arvoa yhdellä ja
i--; // sama kuin i = i - 1;
vähentää i:n arvoa yhdellä.
Käydään läpi tähän mennessä opittuja asioita esimerkin avulla. Ohjelmassa on kommentein kerrottu eri ohjelmakohtien ja lauseiden merkityksestä. Tällaista ylikommentointia ei omissa ohjelmissa tietenkään käytetä. Ohjelman lukijasta oletetaan (tavallisesti), että hän hallitsee C++-kielen, joten kaikki tyyppiä "tässä määritellään muuttuja" olevat kommentit voidaan omissa ohjelmissa unohtaa. Kommentein kerrotaan, mitä ohjelma tekee ja millä menetelmällä, eikä miten se on ohjelmoinnin kannalta toteutettu.
/* ********************************************************* ESIM1.CPP Alkukommentti kertoo mm. ohjelman tekijän, päivämäärän ja lyhyesti mitä ohjelma tekee. Kommentit eivät vaikuta mitenkään ohjelman toimintaan. Kurssilla ohjelma ilman kommentteja ei kuitenkaan "toimi". Luotu: 05.08.1993, Markku Malinen Muutettu: 15.09.1995, Tarmo Hyttinen 24.04.1997, Timo Männikkö Toiminta: Laskee yhteen matkoja. ********************************************************* */ #include <iostream.h> // kirjasto, jossa määritelty mm. cout int main(void) // pääohjelma { int alkumatka = 10, loppumatka; // muuttujien määrittelyt int kokomatka; // alkumatka alustetaan, muita ei double tuplamatka; loppumatka = 15; // sijoitetaan vakioarvo kokomatka = alkumatka + loppumatka; // sijoitetaan aritmeettisten tuplamatka = 2.0*kokomatka; // lausekkeiden arvoja cout << "Edestakainen matka on "; // tulostetaan näytölle cout << tuplamatka << " km\n"; return 0; // palautetaan käyttöjärjestelmälle arvo 0 }
Mitä edellinen ohjelma tulostaa?