ohjeet(); kysy_matka(&matka_mm); matka_km = mittakaava_muunnos(matka_mm); tulosta_matka(matka_km); return 0;Tällainen pääohjelma tuskin tarvitsisi paljoakaan kommentteja.
Edellä on käytetty neljän eri tyypin aliohjelmia (funktioita)
// matka_a2.cpp
// Ohjelmalla lasketaan mittakaavamuunnoksia 1:200000 kartalta
// Vesa Lappalainen 4.1.1997
#include <iostream.h>
const double MITTAKAAVA = 200000.0;
const double MM_KM = 1000.0*1000.0;
void ohjeet(void)
{
cout << "Lasken 1:" << MITTAKAAVA
<< " kartalta millimetreinä mitatun matkan\n";
cout << "kilometreinä luonnossa.\n";
}
void kysy_matka(int *pMatka_mm)
{
int mm;
cout << "Anna matka millimetreinä>";
cin >> mm;
*pMatka_mm = mm;
}
double mittakaava_muunnos(int matka_mm)
{
return matka_mm*MITTAKAAVA/MM_KM;
}
void tulosta_matka(double matka_km)
{
cout << "Matka on luonnossa "<< matka_km << " km." << endl;
}
int main(void)
{
int matka_mm;
double matka_km;
ohjeet();
kysy_matka(&matka_mm);
matka_km = mittakaava_muunnos(matka_mm);
tulosta_matka(matka_km);
return 0;
}
Edellä olevasta huomataan, että aliohjelmat jotka eivät palauta
mitään arvoa nimessään, esitellään void-
tyyppisiksi.mittakaava_muunnos on reaaliluvun palauttava funktio, joten se esitellään double - tyyppiseksi.
Seuraavaksi pöytätestaamme ohjelmamme toiminnan:
main
|
kysy_matka
|
mi..muunnos
|
tulosta
|
|||||
| lause
|
matka_mm
|
matka_km
|
pMatka_mm
|
mm
|
matka_mm
|
tulos
|
matka_km
|
tulostus
|
| 40
ohjeet()
|
??
|
??
|
||||||
| 9-13
cout<<
|
Lasken
1:200000
| |||||||
| 41
kysy_mat
|
&matka_mm
|
|||||||
| 16-18
int m
|
??
|
|||||||
| 19
cout <<
|
Anna
matka ...
| |||||||
| 20
cin>>mm
|
352
|
|||||||
| 21
*pMatka
|
352
|
<==o
|
||||||
| 42
matka_km
|
352
|
|||||||
| 26
return
|
70.4
|
|||||||
| 42
matka_km
|
70.4
|
|||||||
| 43
tulosta
|
70.4
|
|||||||
| 29-31
cout<
|
Matka
on luo..
| |||||||
| 44
return 0;
|
main
|
|||
| lause
|
matka_mm
|
matka_km
|
tulostus
|
| 40
ohjeet()
|
??
|
??
|
Lasken
1:200000
|
| 41
kysy_mat
|
352
|
Anna
matka ..
| |
| 42
matka_km
|
70.4
|
||
| 43
tulosta
|
Matka
on luo..
| ||
| 44
return 0;
|