Eine Fallunterscheidung
Eine Fallunterscheidung implementieren
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: Float -> Float
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
.
Aufgabe 2
Die Preisgestaltung wurde abgeändert und wird jetzt mit dieser Funktion beschrieben:
module Eintrittspreis exposing (..)
eintrittspreis: Float -> Float -> Float
eintrittspreis alter stunden =
(if alter < 14 then 0 else 3) + stunden
> import Eintrittspreis exposing (..)
> eintrittspreis 15 2
...
(a) Teste die Funktion in der REPL mit geeigneten Funktionsaufrufen. Achte darauf, dass jetzt 2 Parameter übergeben werden müssen.
(b) Der Aushang zu den Eintrittspreisen muss abgeändert werden. Mache einen Vorschlag.
Aufgabe 3
Die Preisgestaltung in Aufgabe 2 wurde heftig kritisiert. Sie wurde daher nochmal abgeändert:
module Eintrittspreis exposing (..)
eintrittspreis: Float -> Float -> Float
eintrittspreis alter stunden =
(if alter < 14 then 0 else 5) + (if stunden > 3 then (stunden-3) else 0)
> import Eintrittspreis exposing (..)
> eintrittspreis 6 3
...
(a) Teste die Funktion in der REPL mit geeigneten Funktionsaufrufen.
(b) Erstelle einen Aushang zu den neuen Eintrittspreisen.
(c) 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