Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 ja y 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
esim2
esim2

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
esim3
esim3

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 ja y 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).

...