Datentypen und Datenstrukturen - Informatik

Werbung
Datentypen und Datenstrukturen
Datentypen geben den Wertebereich von Daten an. Darin sind bestimmte Operationen definiert, die für alle Daten
dieses Typs anwendbar sind.
Je nach Programmiersprache und Programmierparadigma gibt es unterschiedliche Datentypen:
Elementare Datentypen
Datentyp
integer
float
boolean
None
Bemerkungen
4 Byte Speicherplatz
4 Byte Speicherplatz IEEE 754
1 Byte True oder False
der leere Datentyp
Operationen
+-*/ div mod **
s.o.
and, or, not
Zusammengesetzte Datentypen
Sequentielle Datentypen
String
Tupel
Liste
Dictionary
Feld bzw. Array (nicht in Python)
Zeichenketten
Definition eigener Datentypen
Durch die Definition eigener Datentypen kann man eine Schnittstelle mit selbst definierten Operationen auf diesen
Typen erschaffen und gewinnt damit Typsicherheit.
In Python werden neue Datentypen durch das Schlüsselwort class erstellt. Die Inititialisierungsfunktion ist
vordefiniert, kann aber überschrieben (überladen) werden. In der Klassendefinition sind dazu die auf dem Typ
möglichen Operationen definiert.
Funktionale Programmierung
In Haskell gibt es ebenfalls vordefinierte Typen:
Typ
Bemerkung
Int
4 Byte
Integer
long integer
Float, Double
Char
ein Zeichen
Bool
True oder False
String
Zeichenkette
Tupel
uneränderlich, nicht notwendig typgleich
Liste
Aufzählung gleichen Typs
Algebraische Datentypen in Haskell
Benutzerspezifische Datentypen können in Haskell als algebraische Typen bezeichnet. Sie haben folgende Notation:
data Typname = Wert1 | Wert2 | Wert3 | ... | Wertn
deriving (Show,....)
Beachte: Der Typname muss mit einem Großbuchstaben beginnen, ebenso die einzelnen Werte (Konstruktoren). Die
Konstruktoren können aufzählende Form besitzen (Enumerationstypen) oder zusätzliche Argumente beinhalten.
Zur Anzeige und zum Vergleich müssen bei der Definition eines algebraischen Typs entsprechende Eigenschaften
aus dem Klassensystem von Haskell übernommen werden. Dies geschieht durch die Angabe von deriving
(Eq,...). So kann Haskell etwa ohne die Angabe von Show ein Ergebnis nicht anzeigen, Eq ist zum Vergleichen
von Daten des definierten Typs und Ord zum Definieren einer Ordnung (<, >) auf diesem Typ nötig.
Um seine Ergebnisse komfortabler anzeigen zu lassen, kann man eine eigene Show-Funktion als Instanz der
eingebauten Show-Funktionen definieren, hier als Beispiel für einen eigenen Listentyp:
instance (Show a) => Show (Listen a) where
show = showListen
showListen L = "[]"
showListen (C a b) = show a ++ "-" ++ (showListen b)
J. Geschinsky
Archenhold-Oberschule
LK- Informatik
Datentypen und Datenstrukturen
Herunterladen