Tie koodariksi

C++-ohjelmointi

Luku 3: Tyypit ja muuttujat

Tietotyypit

C++:n tavallisimmat tietotyypit ovat:
tyyppiselitysesimerkki
intkokonaisluku12
doubleliukuluku4.5
charmerkki'a'
stringmerkkijono"apina"
booltotuusarvotrue
Tutustumme tarkemmin näiden tyyppien ominaisuuksiin kurssin myöhemmissä luvuissa.

Muuttujan määrittely

C++:ssa muuttuja täytyy määritellä, ennen kuin sitä voi käyttää. Muuttujan määrittelyssä annetaan sen tyyppi ja nimi. Esimerkiksi seuraava koodi luo int-tyyppisen muuttujan, jonka nimi on a.
int a;
Tässä tapauksessa muuttuja on alustamaton, jolloin sen alkuarvona voi olla mikä tahansa ennestään muistissa oleva arvo. Ei siis voi luottaa siihen, että muuttujan arvo olisi aluksi esimerkiksi 0. Voimme kuitenkin antaa määrittelyn yhteydessä muuttujalle halutun alkuarvon näin:
int a = 5;
Samalla kertaa voi määritellä useita muuttujia, kunhan niiden tyypit ovat samat. Esimerkiksi seuraava koodi määrittelee kaksi int-muuttujaa:
int a, b;
Muuttujan tyyppi on kiinteä, eikä sitä ole mahdollista vaihtaa määrittelyn jälkeen.

Muuttujan käsittely

Muuttujan määrittelyn jälkeen sille voi antaa uuden arvon. Esimerkiksi seuraava koodi määrittelee kaksi muuttujaa ja muuttaa sitten niiden arvoja.
int a = 2, b = 5;
cout << a << " " << b << "\n"; // 2 5
a = 3;
b = a+b;
cout << a << " " << b << "\n"; // 3 8
Jos muuttujan uusi arvo lasketaan sen vanhan arvon perusteella, voi käyttää operaattoreita +=, -=, *=, /=, jne. Esimerkiksi seuraavat koodit tarkoittavat samaa:
a = a+5; b = b*2;
a += 5; b *= 2;
Lisäksi jos muuttujan arvo kasvaa tai vähenee yhdellä, voi käyttää operaattoreita ++ ja --. Esimerkiksi seuraavat koodit tarkoittavat samaa:
a++; b--;
a = a+1; b = b-1;

Lisää lausekkeista

Muuttujan asetus =-merkillä on itse asiassa lauseke, jonka arvo on muuttujan uusi arvo. Esimerkiksi seuraavassa koodissa lausekkeen a = 3 arvo on 3, joten koodi asettaa a:n arvoksi 3 ja b:n arvoksi 5.
b = 2 + (a = 3);
Tämän avulla voimme asettaa yhtä aikaa monen muuttujan arvon samaksi. Esimerkiksi seuraava koodi asettaa muuttujien a ja b arvoksi 1:
a = b = 1;
Tässä tapauksessa tulkintana on, että muuttujien asetukset suoritetaan oikealta vasemmalle.

Operaattoreissa ++ ja -- lausekkeen arvo riippuu siitä, kummalla puolella operaattori on. Jos operaattori on muuttujan perässä, lausekkeen arvo on muuttujan vanha arvo, ja jos operaattori on muuttujan edellä, lausekkeen arvo on muuttujan uusi arvo. Seuraavat koodit havainnollistavat asiaa:

int a = 3;
cout << a++ << "\n"; // 3
int a = 3;
cout << ++a << "\n"; // 4
Pilkun avulla voi yhdistää useamman lausekkeen yhdeksi lausekkeeksi, jonka arvona on viimeisen lausekkeen arvo. Esimerkiksi lausekkeen a = 2, b = 5 arvo on 5.

Muuttujien vaihtaminen

Kätevä C++:n funktio on swap, joka vaihtaa keskenään kahden muuttujan sisällön:
swap(a,b);
Tämä aiheuttaa saman tuloksen kuin seuraava koodi, jossa on apumuuttuja t:
t = a;
a = b;
b = t;

Vakio

Vakio (constant) on muuttuja, jonka arvo ei voi muuttua sen määrittelyn jälkeen. Vakiomuuttuja määritellään const-sanan avulla.

Esimerkiksi seuraava koodi luo vakiomuuttujan, jonka arvo on 5.

const int n = 5;
Tällaisen määrittelyn hyötynä on, että kääntäjä estää muuttujan muuttamisen. Esimerkiksi seuraava koodi ei toimi, koska se yrittää muuttaa vakiomuuttujan arvoa.
const int n = 5
n = 8; // ei toimi