previous next Up Title Contents Index

8.6.1 Useita parametreja


Kaikissa edellisissä esimerkeissämme meillä on ollut vain 0 tai yksi parametria välitettävänä aliohjelmaan. Käytännössä usein tarvitsemme useampia parametreja. Esimerkiksi edellisessä paamenu- aliohjelmassa pitäisi oikeastaan tulostaa myös kerhon nimi. Emme vielä kuitenkaan osaa käsitellä merkkijonoja, joten palaamme tähän ongelmaan myöhemmin.

Ottakaamme esimerkiksi mittakaava_muunnos - funktio. Mikäli ohjelma haluttaisiin muuttaa siten, että myös mittakaavaa olisi mahdollista muuttaa, pitäisi myös mittakaava voida välittää muunnos- aliohjelmalle parametrina. Kutsussa tämä voisi näyttää esim. tältä:

	  matka_km = mittakaava_muunnos(10000.0,32); 
Vastaavasti funktio- esittelyssä täytyisi olla kaksi parametria:
	double mittakaava_muunnos(double mittakaava,int matka_mm)
	{
	  return matka_mm*mittakaava/MM_KM;
	}
Kun kutsu suoritetaan, välitetään aliohjelmalle parametrit siinä järjestyksessä, missä ne on esitelty. Voitaisiin siis kuvitella aliohjelmakutsun aiheuttavan sijoitukset aliohjelman parametrimuuttujiin:
	mittakaava = 10000.0;
	matka_mm   = 32; 
Jos kutsu on muotoa
	  matka_km = mittakaava_muunnos(MITTAKAAVA,matka_mm); 
kuvitellaan sijoitukset
	mittakaava = MITTAKAAVA; /* Ohjelman vakio                */
	matka_mm   = matka_mm;   /* Pääohjelman muuttuja matka_mm */
Siis vaikka kutsussa ja esittelyssä esiintyykin sama nimi, ei nimien samuudella ole muuta tekemistä kuin mahdollisesti se, että turha on väkisinkään keksiä lyhennettyjä huonoja nimiä, jos kerran on hyvä nimi keksitty kuvaamaan jotakin asiaa.

Parametreista osa, ei yhtään tai kaikki voivat olla myös osoitteita tai referenssejä.

Huom! Vaikka kaikilla aliohjelman parametreilla olisikin sama tyyppi, täytyy jokaisen parametrin tyyppi mainita silti erikseen:

	double nelion_ala(double korkeus, double leveys) 

Tehtävä 8.69 Toisen asteen yhtälön juuri

Kirjoita funktio root_1(a,b,c), joka palauttaa jomman kumman toisen asteen yhtälön ax2+bx+c=0 juurista (oletetaan tällä kertaa, että a<>0 ja D = b2- 4ac >= 0. Miksi oletetaan?).

Tehtävä 8.70 Toisen asteen polynomi, root_1

Kirjoita funktio root_1 joka palauttaa toisen asteen polynomin P(x) = ax2+bx+c arvon (muista viedä parametrina myös a,b ja c).

Tehtävä 8.71 root_1 testaus

Kirjoita pääohjelma, jolla voidaan testata root_1 - aliohjelma (jotenkin myös se, että tulos toteuttaa yhtälön).


previous next Up Title Contents Index