Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

8.6.1 Useita parametrejä

Suuressa osassa edellisissä esimerkeissämme meillä on ollut vain 0 tai yksi parametria välitettävänä aliohjelmaan. Käytännössä usein tarvitsemme useampia parametrejä. Esimerkiksi edellisessä paamenu- aliohjelmassa pitäisi oikeastaan tulostaa myös kerhon nimi.

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 parametrinä. Kutsussa tämä voisi näyttää esim. tältä:

	  matka_km = mittakaava_muunnos(32,10000.0); 

Vastaavasti funktio- esittelyssä täytyisi olla kaksi parametria:

	private static double mittakaava_muunnos(int matka_mm, double mittakaava)
	{
	  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 (tosin sijoitusjärjestystä ei taata, eli ei tiedetä kumpi sijoitus suoritetaan ensin):

	mittakaava = 10000.0;
	matka_mm   = 32; 

Jos kutsu on muotoa

	  matka_km = mittakaava_muunnos(matka_mm, MITTAKAAVA); 

kuvitellaan sijoitukset:

	matka_mm   = matka_mm;   // Pääohjelman muuttuja matka_mm sijoitetaan aliohjelman
	                         // vastinpaikassa olevaan muuttujaan
	mittakaava = MITTAKAAVA; // Ohjelman vakio toiseeen aliohjelman muuttujaan

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 oliota.

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

	public static double nelion_ala(double korkeus, double leveys) 

Tehtävä 8.14 Päämenuun kerhon nimi

Lisää Paamenu.java:n aliohjelmaan paamenu parametriksi myös kerhon nimi.

Tehtävä 8.15 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 = b 2- 4ac >= 0. Miksi oletetaan?).

Tehtävä 8.16 Toisen asteen polynomi, root_1

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

Tehtävä 8.17 root_1 testaus

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

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys