Geschachtelte Fallunterscheidungen
Eine kompliziertere Preisgestaltung betrachten
Die Gestaltung der Eintrittspreise wird weiter verfeinert.
Eintrittspreise: Grundpreis (bis 3 Stunden): Kinder unter 10 : 0 € Jugendliche von 10 bis 18 : 3 € Erwachsene über 18 : 5 € Zuzahlung (ab 3 Stunden): Jede weitere angefangene Stunde kostet für Jugendliche und Erwachsene 1 €.
Wir betrachten zunächst nur die Berechnung des Grundpreises.
grundpreis: Int -> Int
grundpreis alter =
if alter < 10 then ... else if alter <= 18 then ... else ...
Aufgabe 1
Die Funktion zur Implementierung des Grundpreises enthält noch Lücken.
Ergänze die Funktionsdefinition und teste sie in der REPL - und zwar so, dass alle
möglichen Fälle abgedeckt sind.
Geänderte Darstellung
Die Darstellung der Funktionsdefinition lässt sich folgendermaßen abändern.
Variante 1
grundpreis alter =
if alter < 10 then
...
else
if alter <= 18 then
...
else
...
Variante 2
grundpreis alter =
if alter < 10 then
...
else if alter <= 18 then
...
else
...
Variante 3
grundpreis alter =
if alter < 10 then
...
else
if alter <= 18 then
...
else
...
Aufgabe 2
Teste auch diese Varianten der Darstellung. Vergleiche und bewerte die Varianten.
Fertige Implementierung
Die Implementierung des neuen Preismodells ist noch nicht fertig. Es fehlen noch die Funktionen zur Berechnung der Zuzahlung und des gesamten Eintrittspreises.
grundpreis: Int -> Int
grundpreis alter =
...
zuzahlung: ...
zuzahlung alter stunden =
...
eintrittspreis: ...
eintrittspreis alter stunden =
...
Aufgabe 3
Die Implementierung lässt sich mit einzelnen Funktion - wie oben dargestellt -
oder mit Hilfe eines let-Ausdrucks in einer einzigen Funktion umsetzen.
Entscheide dich begründet für eine Variante und programmiere
die Preisberechnung fertig. Teste deine Implementierung.