...
Edellinen ohjelma laskee kartion tilavuuden ja tulostaa tiedot ruudulle, muttei pysty välittämään tietoa muille funktioille. Muuttujat Sade
, Korkeus
ja Tilavuus
ovat tämän funktion paikallisia muuttujia (kts. seuraava kohta).
Funktion
...
kutsuminen
Funktiota kutsutaan muodossa funktion_nimi() ja sulkujen sisään tulevat mahdolliset parametrit.
Esim funktion kutsuminen pääohjelmasta:Kaikilla funktiolla voi olla omia paikallisia (local) muuttujia. Lisäksi funktiolla voi olla parametreja, joiden avulla funktiolle välitetään tietoa sen ulkopuolelta. Parametrit eroavat paikallisista muuttujista siinä, että niille on annettu alkuarvo funktion kutsussa.
Code Block |
---|
voidint funktio(int x)main() // pääohjelma { int y; ... } |
x
on funktion parametri jay
funktion paikallinen muuttuja. On huomattava, että parametrit ja paikalliset muuttujat eivät näy funktion ulkopuolelle eivätkä siten ole käytettävissä muualla kuin funktiossa itsessään.- On myös tärkeää huomata, että eri funktioissa voi olla samannimisiä muuttujia ja ne ovat toisistaan täysin riippumattomia.
Funktion kutsuminen
Funktiota kutsutaan muodossa funktion_nimi() ja sulkujen sisään tulevat mahdolliset parametrit.
Esim funktion kutsuminen pääohjelmasta:
KartionTilavuus(); // funktion kutsu
getch(); // jäädään odottamaan, että käyttäjä painaa jotain nappulaa
}
|
Note |
---|
Funktiota voidaan kutsua sen mistä tahansa ohjelmasta, myös funktiosta itsestään (vrt. rekursio). |
Anchor | ||||
---|---|---|---|---|
|
Esimerkki 2
Code Block |
---|
void TulostaMerkki(char Merkki |
Code Block |
int main() // pääohjelmafunktion parametrina char tyyppinen muuttuja { KartionTilavuus(printf("Antamasi merkki oli %c", Merkki); // funktion kutsu getch();tulostetaan annettu merkki %c:n osoittamaan kohtaan } int main() { char JokinMerkki = 'a'; // jäädään odottamaan, että käyttäjä painaa jotain nappulaa } |
Note |
---|
Funktiota voidaan kutsua sen mistä tahansa ohjelmasta, myös funktiosta itsestään (vrt. rekursio). |
...
esitellään muuttuja, nyt paikallisena, nyt muutuja näkyy vain tässä funktiossa
TulostaMerkki(JokinMerkki); // Funktio saa parametrinaan JokinMerkki muuttujan arvon
getch();
return 1;
}
|
Anchor | ||||
---|---|---|---|---|
|
Esimerkki 3
...
Code Block |
---|
void TulostaMerkkiLaskeYhteen(charint Merkki)Eka, int Toka) { int Summa = 0; Summa = //Eka funktion parametrina char tyyppinen muuttuja {+ Toka; printf("Antamasi\nsumma merkkion oli %c%d", MerkkiSumma); // tulostetaan annettu merkki %c:n osoittamaan kohtaan } int main() { char JokinMerkki = 'a'; // esitellään muuttuja, nyt paikallisena, nyt muutuja näkyy vain tässä funktiossa// pääohjelma { TulostaMerkki(JokinMerkki);int First //= Funktio5, saaSecond parametrinaan JokinMerkki muuttujan arvon= 6; getchLaskeYhteen(First, Second); // funktion kutsu, kutsussa return 1; } |
...
Esimerkki 3
Code Block |
---|
void LaskeYhteen(int Eka, int Toka)
{
int Summa = 0;
Summa = Eka + Toka;
printf("\nsumma on %d", Summa);
}
int main() // pääohjelma
{
int First = 5, Second = 6;
LaskeYhteen(First, Second); // funktion kutsu, kutsussa ja itse funktiossa muuttujien nimet voivat olla erilaisia!
return 1;
}
|
...
ja itse funktiossa muuttujien nimet voivat olla erilaisia!
return 1;
}
|
Edellä oleva funktio ottaa parametreikseen kaksi kokonaislukua ja sijoittaa ne funktion paikallisiin muuttujiin Eka
ja Toka
. Funktion laskema tulos näytetään ruudulla. Tämä funktio ei palauta mitään tietoa kutsujalle.
Funktion parametrit ja paikalliset muuttujat
Kaikilla funktiolla voi olla omia paikallisia (local) muuttujia. Lisäksi funktiolla voi olla parametreja, joiden avulla funktiolle välitetään tietoa sen ulkopuolelta. Parametrit eroavat paikallisista muuttujista siinä, että niille on annettu alkuarvo funktion kutsussa.
Code Block |
---|
void funktio(int x)
{
int y;
...
}
|
x
on funktion parametri jay
funktion paikallinen muuttuja. On huomattava, että parametrit ja paikalliset muuttujat eivät näy funktion ulkopuolelle eivätkä siten ole käytettävissä muualla kuin funktiossa itsessään.- On myös tärkeää huomata, että eri funktioissa voi olla samannimisiä muuttujia ja ne ovat toisistaan täysin riippumattomia.
Funktion paluuarvo
Funktio voi päätyttyään palauttaa kutsujalleen tietoa. Tieto palautetaan return
-käskyllä. Funktiossa voi olla useita return
-lauseita sopivissa kohdissa. Funktion nimen edessä oleva tyyppi määrää paluuarvon tyypin ja siksi return
-lauseen perässä olevan arvon pitää olla samaa tyyppiä (joko vakio tai muuttuja).
...