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:

    begruessen1 status =
    -- Problem: Bei Tippfehlern in status erhält man immer Willkommen
    -- Groß-/Kleinschreibung sorgt schon für fehlerhafte Rückgabe
    if status == "Abgemeldet" then
        "Zum Anmelden oben klicken"

    else
        "Willkommen"


begruessen2 status =
    -- Problem: Man muss einen Fehlerfall mitführen, der eigentlich nicht auftreten dürfte
    -- Es gibt keine Möglichkeit den Fehler schon vom Compiler melden zu lassen
    if status == "Abgemeldet" then
        "Zum Anmelden oben klicken"

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

    else
        "Fehler"


begruessen3 status =
    -- Gleiches Problem, nur eventuell etwas eleganterer Code
    case status of
        "Abgemeldet" ->
            "Zum Anmelden oben klicken"

        "Angemeldet" ->
            "Willkommen"

        _ ->
            "Fehler"

Aufgabe

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 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 abgemeldet name =
if abgemeldet then
    "Zum Anmelden oben klicken"

else
    "Willkommen " ++ name

Aufgabe

Untersuche und bewerte die Implementierung.

Suche

v
110.2.13.1.1
inf-schule.de/fp_elm_alteversion/elm_programme/typdefinition/begruessung/lernstrecke
inf-schule.de/110.2.13.1.1
inf-schule.de/@/page/BML7fyPbxWgjtrLY

Rückmeldung geben