programmierung.jpg

 

Datentypen

Datentypen sind eine Zusammenfassung konkreter Wertebereiche. Beispielsweise Integer, welcher die Ganz-zahlen darstellt, oder Char, welcher einzelne Zeichen darstellr. Ein Produkttyp ist dabei eine einzelne Konstruktorfunktion mit einem oder mehrere Selektoren. Ein Summentyp fasst mehrere Konstruktorfunktionen und Selektoren zusammen. Ein Aufzählungstyp ist ein genau festgelegter Datenbereich, bei dem die Elemente aufgezählt werden.

Beispiele für Datentypen:

 

Ein Datentyp, der einen Bruch, bestehend aus Zähler und Nenner darstellt. Hierbei handelt es sich um einen Produkttyp.

data Bruch = Bruch {zaehler :: Int, nenner :: Int}
 

Bewertung einer Arbeit, die Bestanden, Nichtbestanden oder Nachbearbeiten sein kann. Bewertung ist ein Aufzählungstyp.
data Bewertung = Bestanden | Nichtbestanden | Nachbearbeiten
 

Ein Datentyp der die einzelnen Wochentage darstellen soll. Auch hier handelt es sich wieder um einen Aufzählungstyp
data Wochentag = Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Samstag | Sonntag
 

Dieser Datentyp stellt die einzelnen Monate eines Jahres dar. Monat ist ein Auszählungstyp.
data Monat = Januar | Februar | Maerz | April | Mai | Juni | Juli | August | September | Oktober | November | Dezember
 

Ein Datentyp Datum, der aus Tag, Monat und Jahr besteht. Für Tag und Monat verwenden wir die oben definierten Datentypen. Datum ist ein Produkttyp.
data Datum = Datum {tag :: Int, monat :: Monat, jahr :: Int}
 

Uhrzeit, bestehend aus Stunden und Minuten. Auch Uhrzeit ist wieder ein Produkttyp.
data Uhrzeit = Uhrzeit {stunden :: Int, minuten :: Int}
 

Dieser Datentyp dient der Darstellung einer Kasse, bestehend aus Kassen-ID und Nachname des Kassierers. Auch dieser Datentyp ist ein Produkttyp.
data Kasse = Kasse {kassenID :: Int, nameKassierer :: String}
 

Preis, bestehend aus Euro und Cent. Preis ist wieder ein Beispiel für einen Produktyp
data Preis = Preis {euro :: Int, cent :: Int} 
 

Mensaessen, entweder Tagessuppe, Sparessen, Mensa-Vital-Essen, Bio-Essen, Vegetarisch oder Aktionsessen. Hierbei handelt es sich um einen Aufzählungstyp.
data Mensaessen = Tagessuppe | Sparessen | MensaVitalEssen | Bioessen | Vegetarisch | Aktionsessen
 

Der Datentyp Wahlessen fasst Mensaessen und Preis zusammen. Wahlessen ist ein Produkttyp.
data Wahlessen = Wahlessen {mensaessen :: Mensaessen, preis :: Preis}
 

Aus den oben definierten Datentypen definieren wir den Datentyp Kassenbon, mit Kasse, Datum, Uhrzeit und Wahlessen. Kassenbon ist ein Produkttyp.
data Kassenbon = Kassenbon {kasse :: Kasse, datum :: Datum, uhrzeit :: Uhrzeit, wahlessen :: Wahlessen}

 

Wenn wir jetzt einen Kassenbon anlegen wollen, müssen wir einfach unsere Funktion in Haskell laden, danach können wir einen Kassenbon anlegen. 

kasse = Kasse 01 "Bernd"
datum = Datum 01 Mai 2019
uhrzeit = Uhrzeit 10 15
preis = Preis 2 50
wahlessen = Wahlessen Bioessen preis
kb = Kassenbon kasse datum uhrzeit wahlessen

 

Die Variable kb ist unser Kassenbon und enthält alle notwendigen Informationen. Wir können jetzt weitere Funktionen schreiben, um Informationen aus dem Kassenbon auszulesen. 

Wir wollen dazu vier Funktionen schreiben, die uns folgende Informationen geben:

  • Welcher Kassierer saß an der Kasse?
  • In welchem Jahr wurde der Kassenbon ausgestellt?
  • Wie viel wurde bezahlt?
  • An welchem Tag wurde der Kassenbon ausgestellt?

 

kassiererVonKassenbon :: Kassenbon -> String
kassiererVonKassenbon kb = nameKassierer( kasse kb )

 

jahrVomKassenbon :: Kassenbon -> Int
jahrVomKassenbon kb = jahr( datum kb )

 

preisVonKassenbon :: Kassenbon -> (Int, Int)
preisVonKassenbon kb = (euro(preis(wahlessen kb)), cent(preis(wahlessen kb)))

 

tagVonKassenbon :: Kassenbon -> Int
tagVonKassenbon kb = tag(datum kb)

 

Diese Funktionen geben uns die benötigten Informationen und zeigen, wie leicht man in Haskell auf Daten zugreifen kann. 


Konversation wird geladen