i

Mehrfachauswahl mit einem Musterabgleich

Datumsangaben umwandeln

Ziel ist es jetzt, Datumsangaben vom internationale Standardformat in ein deutsches Textformat umzuwandeln:

Umwandlung: Standardformat -> Textformat
Beispiele:
2013-12-26 -> 26. Dezember 2013
2013-02-21 -> 21. Februar 2013
2013-12-06 -> 6. Dezember 2013
2013-05-06 -> 6. Mai 2013

Verschachtelte Fallunterscheidungen verwenden

Wir betrachten hier das Teilproblem, aus einer Montasangabe im Zahlenformat eine Monatsangabe im Textformat zu bestimmen.

Übergabe: 
- Monatsangabe im Zahlenformat: "02"
Rückgabe: 
- Monatsangabe im Textformat: "Februar"

Diese Umwandlung lässt sich mit einer Funktion monatTextformat implementieren.

monatTextformat: String -> String 
monatTextformat monatZahlenformat =
    if monatZahlenformat == "01" then
        "Januar"
    else
        if monatZahlenformat == "02" then
            "Februar"
        else 
            "..."

Aufgabe 1

Ergänze zumindest einen weiteren Monat und teste die (noch nicht ganz fertige) Funktion mit geeigneten Funktionsaufrufen.

Einen Musterabgleich verwenden

Die folgende Implementierung der Funktion monatTextformat verwendet einen case-Ausdruck.

monatTextformat: String -> String
monatTextformat monatZahlenformat =
    case monatZahlenformat of
        "01" -> "Januar"
        "02" -> "Februar"
        "03" -> "März"
        _ -> "?"

Aufgabe 2

(a) Teste zunächst diese Funktionsdefinition. Teste u.a. auch die Monatsangabe "05" und die Angabe "im Mai". Wozu könnte der Fall _ -> "?" dienen?

(b) Die Implementierung ist noch nicht fertig. Ergänze die fehlenden Monate. Behalte den Fall _ -> "?" bei, um alle nicht beabsichtigten Werte bei der Verarbeitung zu berücksichtigen.

Das Datum umwandeln

Mit Hilfe der Funktion monatTextformat sowie weiterer Funktionen aus dem Modul Teilzeichenketten.elm lässt sich die gewünschte Umwandlung jetzt implementieren.

module Datumsangaben exposing (..)

import Zeichenketten exposing (..)

monatTextformat: String -> String
monatTextformat monatZahlenformat =
    case monatZahlenformat of
        "01" -> "Januar"
        "02" -> "Februar"
        "03" -> "März"
        _ -> "?"

textFormat: ...
textFormat datum = 
    let
        jahr = zeichenVorPos 5 datum
        monat = ...
        tag = ...
    in
    ...

Aufgabe 2

Ergänze die Funktionsdefinition der Funktion textformat und teste sie mit verschiedenen Funktionsaufrufen.

Suche

v
110.2.6.2.1.3
inf-schule.de/fp_elm_alteversion/elm_programme/fallunterscheidungen/datumsangaben/lernstrecke/version3
inf-schule.de/110.2.6.2.1.3
inf-schule.de/@/page/flEfuvwn3lGo1dbe

Rückmeldung geben