i

Übungen

Aufgabe 1

Möchte man die Adresse einer Person verwalten, dann kann man dies mit Hilfe eines Records oder eines Tupels tun.

(a) Entwickle eine Implementierung zur Verwaltung von Adressen als Records.

(b) Entwickle eine Implementierung zur Verwaltung von Adressen als Tupel.

(c) Vergleiche die beiden Implementierungen und erläutere Vor- und Nachteile. Leite daraus ab, wann man welches Konzept bevorzugen sollte.

Aufgabe 2

Betrachte einen Datensatz zu einem Flug in die Ferien.

Flugdaten

Nutze die folgende Implementierung.

type alias Datum = (Int, Int, Int)
type alias Zeit = (Int, Int)
type alias Flugdaten =
    { datum: Datum
    , von: String
    , nach: String
    , abflug: Zeit
    , ankunft: Zeit
    , flugzeug: String
    }

meinFerienflug: Flugdaten
meinFerienflug = 
    { datum = (12, 7, 2023)
    , von = "Frankfurt"
    , nach = "Malaga"
    , abflug = (9, 15)
    , ankunft = (12, 10)
    , flugzeug = "AIRBUS A321" 
    }

(a) Ergänze und teste die fehlenden Ausdrücke im REPL-Dialog zum Zugriff auf einzelne Daten des vorgegebenen Datensatzes.

> ...
(12,7,2023) : Datum
> ...
"Malaga" : String
> ...
(12, 10) : Zeit
> ...
12 : Int

(b) Entwickle eine Funktion, mit der man die Flugdauer aus den Flugdaten bestimmen kann.

Aufgabe 3

Die Zeugnisnoten deiner MINT-Fächer bilden einen Datensatz.

Mathematik: 1
Physik: 2
Chemie: 2
Biologie: 4
Informatik: 1

(a) Entwickle eine Implementierung zur Verwaltung solcher MINT-Noten.

(b) Entwickle eine Funktion, mit der man die Durchschnittsnote der MINT-Fächer bestimmen kann.

(c) Optionaler Exkurs: Hier würde sich auch die Benutzung von Dict anbieten, um die Noten zu speichern. Recherchiere unter https://package.elm-lang.org/packages/elm/core/latest/Dict wie dies umgesetzt werden könnte und entwickle eine alternative Implementierung.

Aufgabe 4

Bei Zeitangaben soll die Folgezeit bestimmt werden.

12:44 -> 12:45
05:59 -> 06:00
...

(a) Entwickle eine Funktion, die die Folgezeit berechnet. Nutze dazu Tupel.

(b) Entwickle eine analoge Implementierung mit Records.

(c) Optional: Entwickle eine Funktion, die das Folge-Datum berechnet. Nutze dazu Tupel oder Records und begründe deine Wahl. Entscheide, ob du die Schaltjahre berücksichtigen möchtest.

11.07.2023 -> 12.07.2023
31.12.2023 -> 01.01.2024
28.02.2024 -> 29.02.2024
...

Suche

v
8.2.2.7.3
inf-schule.de/deklarativ/fp_elm/elm_programme/datensaetze/uebungen
inf-schule.de/8.2.2.7.3
inf-schule.de/@/page/2MpJYlwOgyecgfGr

Rückmeldung geben