1. Einführung
1.3 Fallunterscheidungen
Welches künfige Guthaben sich bei einem Startguthaben, einem Zinssatz und einer Laufzeit ergibt, konnten wir mit der Formel
berechne_kuenftiges_guthaben (startguthaben, zins, jahre) = startguthaben * (1 + zins/100)^jahrekompakt und geschlossen darstellen. Regeln in einer solchen geschlossenen Form darzustellen, gelingt aber in den meisten Fällen nicht. Oft brauchen wir Fallunterscheidungen. Ein klassisches Beispiel ist die Absolutwertfunktion aus der Mathematik: \begin{align*} {\rm abs} : \mathbb{R} & \rightarrow \mathbb{R} \\ x & \mapsto \begin{cases} x & \textnormal{ if $x \geq 0$} \\ -x & \textnormal{ else. } \end{cases} \end{align*}
Dann verstehen Sie wohl auch, was mit folgender Funktionsdefinition auf dem Aufruf gemeint ist:
abs(x) = if x >= 0 then x else -x
abs(-3)
Der Körper der Funktion ist
if x >= 0 then x else -x
. Dies ist auch ein Ausdruck. Halt
keiner mit +
und *
, sondern einer
mit if, then, else
. Die Bedeutung sollte aber klar sein.
Beachten Sie, dass nach then
und else
wiederum
Ausdrücke stehen, die bei einem Aufruf ausgewertet werden müssen.
abs(-3)
auf, Schritt für
Schritt, wie wir es im letzten Teilkapitel getan haben.
Die Ausdrücke nach if
und else
können
natürlich selbst wiederum komplexer sein, also wiederum
Funktionsaufrufe oder weitere if
-Ausdrücke enthalten:
h(x) = if x <= -1 then -1 else (if x <= 1 then x else 1)
Zur Verdeutlichung hier der Graph dieser Funktion:
In mathematischer Notation schaut diese Verschachtelung schrecklich aus:
\begin{align} h : \mathbb{R} & \rightarrow \mathbb{R} \nonumber \\ x & \mapsto \begin{cases} -1 & \textnormal{ if $x \leq -1$} \\ \begin{cases} x & \textnormal{ if $x \leq 1$}\\ 1 & \textnormal{ else.} \end{cases} & \textnormal{else.} \end{cases} \label{h-nested-cases} \end{align}Es würde auch kaum jemand diese Notation verwenden. Eher würde man feststellen, dass es sich um drei Fälle handelt, je nachdem, ob \(x \leq -1\) oder \(-1 \lt x \leq x\) oder \(1 \lt x\). Man würde also eine Fallunterscheidung mit drei Fällen machen:
\begin{align} h : \mathbb{R} & \rightarrow \mathbb{R} \nonumber \\ x & \mapsto \begin{cases} -1 & \textnormal{ if $x \leq -1$,} \\ x & \textnormal{ if $-1 \lt x \leq 1$,}\\ 1 & \textnormal{ if $1 \lt x$.} \end{cases} \label{h-three-cases} \end{align}h(2)
aus, Schritt für
Schritt wie gehabt.
Tip. Gehen Sie streng nach Rezept vor.
Ersetzen Sie im Körper von h
den Parameter
x
durch den Wert 2
, auch wenn
das Ergebnis Ihrer Meinung nach seltsam aussieht.