Springe zum Hauptinhalt
Grundlagen der Informatik I & II und Informatik I & II
Funktionen
Funktionen

Funktionen


kurz und knapp

Eine Funktion ist eine Zusammenfassung von Anweisungen. Durch die Verwendung von Funktionen wird Quellcode strukturiert und reduziert, da eine einmal geschriebene Funktion beliebig oft aufrufbar ist. Sie wird wie folgt vereinbart:

Datentyp des Rückgabewertes    Funktionsname (Parameterliste)
{
        Anweisung(en);
        return ... ;
}

  • soll die Funktion nichts zurückgeben, heißt der Datentyp void und das Argument nach return entfällt
  • Parameter sind mit ihrem Datentyp und einzeln durch ein Komma getrennt aufzulisten

Wie funktionierts?

Im Beispiel addiert die Funktion add() die Parameter a und b und gibt das Ergebnis an die aufrufende main()-Funktion zurück. Es ist wichtig darauf zu achten, dass die Datentypen miteinander übereinstimmen: Die zu addierenden Zahlen a und b sind Integer. Folglich ist auch das Ergebnis der Addition ein Integer. Dem entsprechend besitzt die Funktion add den Rückgabetyp int.

In der main()-Funktion müssen die Variablen (x,y), die als Parameter an add() übergeben werden ebenfalls den gleichen Datentyp besitzen. Soll der Rückgabewert von add() gespeichert werden, muss der Datentyp dieser Variable (erg) mit dem Datentyp der Rückgabe von add() übereinstimmen.

Funktion add


Eine Analogie

Klingt kompliziert? Ist es eigentlich nicht...

Schauen wir uns als Analogie das Kaffee Kochen an. Auch hier müssen die verwendeten Filtertüten oder Kaffeepads (Parameter mit richtigem Datentyp) zur Maschine passen. Um das Ergebnis auch nutzen zu können, benötigt ihr ein Behältnis (Variable für Ergebnis). Dabei gehört der Kaffee (Rückgabewert) natürlich in eine Kaffeetasse und nicht in eine Kakaotasse (Datentyp).


und noch ein Hinweis

Felder werden vom Compiler mittels Pointern (Grundlagen Informatik II) verarbeitet. Wenn ein Feld als Parameter an eine Funktion übergeben wird, reicht daher der Name des Feldes aus:

int feld [10];
int x = foo (feld);

grundsätzlich ...

Beim Aufruf einer Funktion (z.B. int foo(int a, int b) ) werden ihre Parameter mit den übergebenen Werten aus der aufrufenden Funktion ( z.B main( ) ) belegt. Dieses Prinzip heißt "call by value". Auch wenn die Variablen gleiche Namen haben, sind sie es nicht: In foo( ) werden neue Variablen angelegt, die ihre Gültigkeit nur bis zum Ende der Funktion behalten. Danach werden Sie gelöscht. Werteänderungen dieser Variablen haben also keinen Einfluss auf die Werte der Variablen in main( ).

aber aber...

Wenn allerdings mehr Informationen als lediglich der Rückgabewert einer Berechnung benötigt werden, bietet sich sich die Möglichkeit mit Referenzen zu arbeiten.

Wie funktionierts?

Die Parameter in foo( ) werden mittels einem & zu Referenzparametern:

int foo(int &a, int &b)

Das bedeutet nun, dass beim Ruf der Funktion foo( ) keine neuen Variablen angelegt, sondern direkt die Werte der Variablen in der Funktion main( ) verändert werden.