1. Einführung
1.2 Funktionen
Hier nochmal unsere Funktion berechne_kuenftiges_guthaben
:
berechne_kuenftiges_guthaben (startguthaben, zins, jahre) = startguthaben * (1 + zins/100)^jahre
In der Mathematik verwendet man für Funktionen und Variable oft einzelne Buchstaben. Die obige Guthabenfunktion sähe vielleicht so aus:
\begin{align} g(x,z,j) = x \cdot \left(1 + \frac{z}{100}\right)^j \end{align}startguthaben
statt x
.
Gewöhnen Sie sich das von Anfang an an. Sie werden im Berufsleben in Teams arbeiten,
und da müssen andere Leute Ihren Code verstehen. Moderne Code-Editoren unterstützen automatische
Vervollständigung (autocomplete), Sie sparen also mit kurzen Namen wie x, n, k
kaum Zeit.
Eine Funktionsdefinition besteht immer aus drei Teilen:
- Der Funktionsname:
berechne_kuenftiges_guthaben (startguthaben, zins, jahre) = startguthaben * (1 + zins/100)^jahre
. Der legt einfach fest, unter welchem Namen die Funktion von nun an bekannt sein soll. -
Die Funktionsparameter:
berechne_kuenftiges_guthaben (startguthaben, zins, jahre) = startguthaben * (1 + zins/100)^jahre
. Das sind die Platzhalter oder Variablen. - Der Funktionskörper:
berechne_kuenftiges_guthaben (startguthaben, zins, jahre) = startguthaben * (1 + zins/100)^jahre
. Dieser ist ein Ausdruck, in welchem die Parameter vorkommen.
Ein Funktionsaufruf ist ein Ausdruck wie
\(g(3102.0, 5, 21)\) oder eben
berechne_kuenftiges_guthaben (3102.0, 5, 21)
.
Die Werte 3102.0, 5 und 21 sind die Argumente des Aufrufs. Es gibt
genau so viele Argumente, wie die Funktion Parameter hat. Einen Funktionsaufruf
auswerten heißt nun:
- Wir nehmen den Funktionskörper.
- Wir ersetzen im Körper jeden Parameter durch das entsprechende Argument,
also
startguthaben
durch 3102.0,zins
durch 5 undjahre
durch 21.
Natürlich kann ein Ausdruck mehrere Funktionsaufrufe enthalten. Auch können im Körper einer Funktion wiederum Funktionsaufrufe drinstehen. Die folgende Übungsaufgabe hilft Ihnen, sich daran zu gewöhnen.
f(n) = n * (n+1) / 2
- Was sind Funktionsname, Funktionsparameter und Funktionskörper?
Werten Sie die folgenden Funktionsaufrufe aus. Wichtig ist nicht das korrekte Endergebnis, sondern dass Sie die einzelnen Schritte, insbesondere das Ersetzen der Parameter durch die Argumente, sorgfältig aufschreiben.
f(10)
f(3*5) * f(6)
f( 2 * f(3) )
Es folgt eine weitere Funktionsdefinition:
p(x,y) = f(x+y) + x
- Wieviele Parameter hat die Funktion? Was ist der Funktionskörper?
Werten Sie aus:
-
p(3,p(4,5))
Bitte beachten Sie, dass die obigen "Code-Beispiele" keine Beispiele in einer echten Programmiersprache sind. Ich will Ihnen einfach erst einmal das Konzept der Ausdrücke, des Auswertens, der Funktionsdefinitionen und -aufrufe auf dem Papier näherbringen. Wie man in einer Programmiersprache tatsächlcih Funktionen definiert (und anderes Zeug macht), sehen wir dann bald.