Funktionale Programmierung - auf Matthias

Werbung
Funktionale Programmierung
WS07/08
E. Fehr
Aufgabenblatt 4
Abgabe bis Dienstag, dem 13.11.2007
Aufgabe 1)
Überprüfen Sie folgenden Text daraufhin, ob er ein syntaktisch korrektes HaskellSkript darstellt. Wenn ja, erläutern Sie seine Bedeutung:
f x = 3 + 2+
x
x
= 4
Aufgabe 2)
Schreiben Sie eine Haskell-Funktion max3, die von drei Int-Werten die größte
liefert.
a) Entwerfen Sie einen Black-Box-Test für dieses Problem.
b) Entwickeln Sie zu Ihrer Lösung einen White-Box-Test.
Aufgabe 3)
Betrachten Sie folgende Syntaxregeln:
small
large
digit
decimal
varid
float
exponent
expr
infixOp
→
→
→
→
→
→
|
→
→
|
|
→
a|b|...|z|_
A|B|...|Z
0|1|...|9
digit {digit}
small {small|large|digit|’|_}
decimal.decimal [exponent]
decimal exponent
(e|E) [+|-] decimal
varid|decimal|float
expr infixOp expr
(expr)
+|-|*|/
a) Zeigen Sie, dass (4+z’) * 3.0e7 ein Ausdruck ist, indem Sie die Herleitung
dieses Ausdrucks aus dem Symbol expr als Graph notieren.
b) Geben Sie diese Syntaxregeln in EBNF an.
c) Schreiben Sie die Regel für decimal als Syntaxdiagramm.
Aufgabe 4)
Schreiben Sie eine Haskell-Funktion zur Berechnung des größten, gemeinsamen
Teilers zweier natürlicher Zahlen.
Herunterladen