Tie koodariksi

C++-ohjelmointi

Luku 2: Ohjelman rakenne

Monet asiat C++:ssa toimivat samalla tavalla kuin muissakin yleisesti käytetyissä ohjelmointikielissä. Seuraava ohjelma antaa näytteen C++-ohjelman rakenteesta:
#include <iostream>

using namespace std;

int main() {
    cout << "Montako riviä? ";
    int n;
    cin >> n;
    // portaikon tulostus
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            cout << "*";
        }
        cout << "\n";
    }
}
Ohjelma lukee käyttäjältä rivien määrän muuttujaan n ja tulostaa sitten portaikon, jossa on n kerrosta. Ohjelman suoritus voi näyttää vaikkapa seuraavalta:
Montako riviä? 5
*
**
***
****
*****

Main-funktio

C++-ohjelmassa on aina pääfunktio main, josta ohjelman suoritus alkaa. Tämän kurssin ensimmäisissä luvuissa yleinen ohjelman runkomme on seuraava:
#include <iostream>

using namespace std;

int main() {
    ...
}
Kohdassa ... on suoritettava koodi, ja sen ympärillä olevat rivit ovat aina samat. Myöhemmin kurssilla opimme, mikä merkitys ympärillä olevilla riveillä on.

Syöte ja tuloste

Voimme lukea käyttäjältä tietoa muuttujiin cin-olion kautta. Esimerkiksi seuraava koodi lukee käyttäjän antaman luvun muuttujaan x:
int x;
cin >> x;
Vastaavasti voimme tulostaa tekstiä näytölle cout-olion kautta. Aina kun haluamme tekstiin rivinvaihdon, saamme sen aikaan \n-merkinnän (newline) avulla. Seuraava koodi esittelee asiaa:
cout << "ensimmäinen ";
cout << "rivi\n";
cout << "toinen rivi\n";
Koodin tulostus on seuraava:
ensimmäinen rivi
toinen rivi

Kommentointi

C++:ssa on kaksi tapaa kommentoida koodia: Yksirivinen kommentti alkaa // ja jatkuu rivin loppuun asti. Monirivinen kommentti puolestaan alkaa /* ja päättyy */.

Seuraava koodi näyttää esimerkin kummastakin kommentointitavasta:

// tässä kommentissa on yksi rivi
 
/* tässä kommentissa on
                        kaksi riviä */

Käsitteitä

Lause (statement) on yksittäinen ohjelman komento. C++:ssa puolipiste ; ilmaisee lauseen päättymisen.

Lauseke (expression) on koodin osa, jolla on jokin arvo. Esimerkiksi x ja a+2*b ovat lausekkeita.

Lohko (block) muodostuu yhdestä tai useammasta lauseesta, jotka kirjoitetaan merkkien { ja } väliin. Lohkon avulla ilmaistaan esimerkiksi, mitkä lauseet ovat funktion, if-rakenteen ja silmukan sisällä.

Koodin muotoilu

Tavallinen käytäntö on kirjoittaa jokainen lause omalle rivilleen ja sisentää lohkon sisällä oleva koodi. Tämä ei kuitenkaan ole pakollista, koska C++-kääntäjä ei välitä koodissa olevasta tyhjästä tilasta (whitespace).

Esimerkiksi seuraavat koodit toimivat täysin samalla tavalla:

for (int j = 1; j <= i; j++) {
    cout << "*";
}
    for
(int j = 1;
    j <= i;
        j++) { cout << "*"; }
Jälkimmäinen koodi on kuitenkin vaikea lukea, koska se poikkeaa totutusta käytännöstä.