In diesem Kapitel wird die Auswertung funktionaler Algorithmen behandelt.
Definierte Funktionen können mit konkreten Werten aufgerufen werden.
Wir wissen, dass eine definierte Funktion folgende Struktur hat
f
:
T
1
∗
.
.
.
∗
T
n
→
T
{\displaystyle f:T_{1}*...*T_{n}\to T}
Sind nun
a
1
,
.
.
.
,
a
n
{\displaystyle a_{1},...,a_{n}}
konkrete Werte vom Typ
T
1
,
.
.
.
,
T
n
{\displaystyle T_{1},...,T_{n}}
, so ersetzt man in
f
(
a
1
,
.
.
.
,
a
n
)
{\displaystyle f(a_{1},...,a_{n})}
jedes Vorkommen der Unbestimmten
v
1
{\displaystyle v_{1}}
mit
a
1
(
i
=
1
,
.
.
.
,
n
)
{\displaystyle a_{1}(i=1,...,n)}
. Somit kann der entstehende Term ausgewertet werden.
Dabei heißen die konkreten Werte
a
1
,
.
.
.
,
a
n
{\displaystyle a_{1},...,a_{n}}
aktuelle Parameter.
Ausdruck
f
(
a
1
,
.
.
.
,
a
n
)
{\displaystyle f(a_{1},...,a_{n})}
heißt Funktionsaufruf.
f
(
p
,
q
,
x
,
y
)
:=
i
f
(
p
∨
q
)
t
h
e
n
2
x
+
1
e
l
s
e
3
y
−
1
{\displaystyle f(p,q,x,y):=~if~(p\lor q)~then~2x+1~else~3y-1}
S
i
g
n
a
t
u
r
:
f
:
b
o
o
l
x
b
o
o
l
x
i
n
t
x
i
n
t
→
i
n
t
{\displaystyle Signatur:~f:~bool~x~bool~x~int~x~int~\to ~int}
A
u
f
r
u
f
:
f
(
t
r
u
e
,
t
r
u
e
,
3
,
4
)
w
i
r
d
z
u
7
{\displaystyle Aufruf:~f(true,true,3,4)~wird~zu~7}
g
(
x
)
:=
i
f
e
v
e
n
(
x
)
t
h
e
n
x
/
2
e
l
s
e
3
x
−
1
{\displaystyle g(x):=~if~even(x)~then~x/2~else~3x-1}
S
i
g
n
a
t
u
r
:
g
:
i
n
t
→
i
n
t
{\displaystyle Signatur:~g:~int~\to ~int}
A
u
f
r
u
f
:
g
(
2
)
w
i
r
d
z
u
1
,
g
(
9
)
w
i
r
d
z
u
26
a
u
s
g
e
w
e
r
t
e
t
{\displaystyle Aufruf:~g(2)~wird~zu~1,~g(9)~wird~zu~26~ausgewertet}
h
(
p
,
q
)
:=
i
f
p
t
h
e
n
q
e
l
s
e
f
a
l
s
e
{\displaystyle h(p,q):=~if~p~then~q~else~false}
S
i
g
n
a
t
u
r
:
h
:
b
o
o
l
x
b
o
o
l
→
b
o
o
l
{\displaystyle Signatur:~h:bool~x~bool~\to ~bool}
A
u
f
r
u
f
:
h
(
f
a
l
s
e
,
f
a
l
s
e
)
w
i
r
d
a
u
s
g
e
w
e
r
t
e
t
z
u
f
a
l
s
e
{\displaystyle Aufruf:~h(false,false)~wird~ausgewertet~zu~false}
Da die Vorlesungsinhalte auf dem Buch Algorithmen und Datenstrukturen: Eine Einführung mit Java von Gunter Saake und Kai-Uwe Sattler aufbauen, empfiehlt sich dieses Buch um das hier vorgestellte Wissen zu vertiefen. Die auf dieser Seite behandelten Inhalte sind in Kapitel 3.2.3 zu finden.