i

Problemsituation

Begrüßung auf einer Webseite

Es soll eine Funktion geschrieben werden, die eine Begrüßung zurückgibt. Die Begrüßung hängt davon ab, ob der Benutzer auf der Webseite angemeldet ist oder nicht und folgendermaßen zu benutzen sein:

> begruessen "Angemeldet"
"Willkommen" : String
> begruessen "Abgemeldet"
"Zum Anmelden oben klicken" : String

Hier findest du ein paar Vorschläge für mögliche Implementierungen:

-- 1. Vorschlag
begruessen : String -> String
begruessen status =
    if status == "Abgemeldet" then
        "Zum Anmelden oben klicken"

    else
        "Willkommen"

-- 2. Vorschlag
begruessen : String -> String
begruessen status =
    if status == "Abgemeldet" then
        "Zum Anmelden oben klicken"

    else if status == "Angemeldet" then
        "Willkommen"

    else
        "Fehler"

-- 3. Vorschlag
begruessen : String -> String
begruessen status =
    case status of
        "Abgemeldet" ->
            "Zum Anmelden oben klicken"

        "Angemeldet" ->
            "Willkommen"

        _ ->
            "Fehler"

Aufgabe 1

Untersuche und bewerte die Implementierungen. Teste bei Bedarf in der REPL z.B. mit begruessen "Abgemeldet", begruessen "abgemeldet" oder begruessen "Agnemeldet", .

Verbesserte Variante mit Benutzernamen

Eine mögliche Variante, um die Funktionen oben zu verbessern, besteht darin, für den Status nur Wahrheitswerte zuzulassen:

begruessen : Bool -> String
begruessen abgemeldet =
    if abgemeldet then
        "Zum Anmelden oben klicken"

    else
        "Willkommen "

Zusätzlich zum Status, ob man ab- oder angemeldet ist, soll noch ein Benutzername übergeben werden, der angezeigt wird, falls man angemeldet ist. Falls man abgemeldet ist, existiert natürlich kein sinnvoller Benutzername. Die Funktion kann folgendermaßen erweitert werden:

begruessen : Bool -> String -> String
begruessen abgemeldet name =
    if abgemeldet then
        "Zum Anmelden oben klicken"

    else
        "Willkommen " ++ name

Aufgabe 2

Untersuche und bewerte die Implementierung.

Suche

v
8.2.2.8.1.1
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/typdefinition/begruessung/lernstrecke
dev.inf-schule.de/8.2.2.8.1.1
dev.inf-schule.de/@/page/BML7fyPbxWgjtrLY

Rückmeldung geben