i

Verwaltung als Tupel

Paare und Tripel bilden

Wir betrachten einen Datensatz mit Metadaten zu einem Foto.

Metadaten:
...
Name: IMG_0589.JPG
...
Aufnahmedatum: 09.08.2022 15:35 
...
Breitengrad: 50; 56; 28
Längengrad: 6; 57; 21
...

Im letzten Abschnitt wurde gezeigt, wie man Datensätze mit Hilfe von Records verwaltet. Die Grundidee besteht darin, die einzelnen Daten mit Hilfe von Attributen zu einer Einheit zusammenzufassen.

Alternativ hierzu kann man aus mehreren Daten auch sogenannte Tupel bilden. Den Begriff "Tupel" verwendet man als Verallgemeinerung von "Paar", "Tripel", "Quadrupel" usw..

Aufgabe 1

Der folgende Quelltext zeigt, wie man Tupel in Elm bildet. Teste selbst mit analogen Daten.

module Metadaten exposing (..)

datum = (9, 8, 2022)
uhrzeit = (15, 35)

metadatenFoto1 = (datum, uhrzeit)
> import Metadaten exposing (..)
> uhrzeit
(15,35) : ( number, number1 )
> datum
(9,8,2022) : ( number, number1, number2 )
> metadatenFoto1
((9,8,2022),(15,35))
    : ( ( number, number1, number2 ), ( number3, number4 ) )

Aufgabe 2

Hier gibt es jetzt ein Problem. Erläutere die Beschränkung, die man bei der Tupelbildung in Elm beachten muss.

module Metadaten exposing (..)

datum = (9, 8, 2022)
uhrzeit = (15, 35)
breitengrad = (50, 56, 28)
laengengrad = (6, 57, 21)
metadatenFoto1 = (datum, uhrzeit, breitengrad, laengengrad)
> import Metadaten exposing (..)
-- BAD TUPLE ------------------------------------------------- src\Metadaten.elm

I only accept tuples with two or three items. This has too many:

19| metadatenFoto1 = (datum, uhrzeit, breitengrad, laengengrad)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I recommend switching to records. Each item will be named, and you can use the
`point.x` syntax to access them.

...

Aufgabe 3

Um das Problem in Aufgabe 3 in den Griff zu bekommen, kann man die 4 Tupel mit einem Record zusammenfassen. Probiere das selbst aus. Ergänze hierzu die folgende Implementierung.

module Metadaten exposing (..)

datum = (9, 8, 2022)
uhrzeit = (15, 35)
breitengrad = (50, 56, 28)
laengengrad = (6, 57, 21)
metadatenFoto1 = { datum, uhrzeit, ... }
> import Metadaten exposing (..)
> metadatenFoto1.datum
...

Aufgabe 4

Für Tupel kann man genau wie bei Records Aliasnamen einführen, um Typangaben möglichst einfach zu gestalten. Teste auch diese Version zur Implementierung von Metadaten.

module Metadaten exposing (..)

type alias Datum = (Int, Int, Int)
type alias Zeit = (Int, Int)
type alias Position = (Int, Int, Int)
type alias Metadaten =
    { 
        datum: Datum, 
        uhrzeit: Zeit, 
        breitengrad: Position,
        laengengrad: Position
    }

metadatenFoto1: Metadaten
metadatenFoto1 = { datum = (9, 8, 2022), uhrzeit = (15, 35), breitengrad = (50, 56, 28), laengengrad = (6, 57, 21) }
> import Metadaten exposing (..)
> metadatenFoto1
{ breitengrad = (50,56,28), datum = (9,8,2022), laengengrad = (6,57,21), uhrzeit = (15,35) }
    : Metadaten

Suche

v
110.2.8.2.1.1
inf-schule.de/fp_elm_alteversion/elm_programme/datensaetze/tupel/lernstrecke/verwaltungtupel
inf-schule.de/110.2.8.2.1.1
inf-schule.de/@/page/oAE1a4N9nsl4FcIK

Rückmeldung geben