Eine Fallunterscheidung
Erste Preisgestaltung
Die folgende Preisgestaltung nutzt eine Fallunterscheidung, um den Preis nach dem Alter festzulegen.
Eintrittspreise: Unter 14 Jahre ist der Eintritt frei. Ab 14 Jahre kostet der Eintritt 5 €.
Zur Implementierung mit einer Funktion nutzt man einen if-then-else
-Ausdruck.
module Eintrittspreis exposing (..)
eintrittspreis: Int -> Int
eintrittspreis alter =
if alter < 14 then 0 else 5
> import Eintrittspreis exposing (..)
> eintrittspreis 15
...
Aufgabe 1
(a) Teste die Funktion in der REPL mit weiteren Funktionsaufrufen.
(b) Erkläre den Aufbau des Ausdrucks if alter < 14 then 0 else 5
.
Zeitbasierter Preis
Die Preisgestaltung wurde abgeändert und wird jetzt mit dieser Funktion beschrieben:
eintrittspreis: Int -> Int -> Int
eintrittspreis alter stunden =
(if alter < 14 then 0 else 3) + stunden
Aufgabe 2
Teste die Funktion in der REPL mit geeigneten Funktionsaufrufen. Achte darauf, dass jetzt 2 Parameter übergeben werden müssen.
Grundpreis mit Zuzahlung
Die Preisgestaltung in Aufgabe 2 wurde kritisiert. Sie wurde daher nochmal abgeändert:
eintrittspreis: Int -> Int -> Int
eintrittspreis alter stunden =
(if alter < 14 then 0 else 5) + (if stunden > 3 then (stunden - 3) else 0)
Aufgabe 3
(a) Teste die Funktion in der REPL mit geeigneten Funktionsaufrufen.
(b) Vergleiche die Funktionsdefinition oben mit dieser veränderten Version:
eintrittspreis alter stunden =
let
grundpreis = (if alter < 14 then 0 else 5)
zuzahlung = (if stunden > 3 then (stunden - 3) else 0)
in
grundpreis + zuzahlung