Ein Wert besteht aus einer endlichen Folge von Bits.
Der Datentyp bestimmt
Datentypen
|
+------------------+----------------+
| |
elementare Datentypen abgeleitete Datentypen
|
+------------------+-------------+----+------------------+
| | | |
eingeschränkte aggregierte abstrakte Zeiger-
Datentypen Datentypen Datentypen Datentypen
Elementare Datentypen
Oft existieren unterschiedliche Varianten dieser Datentypen:
gleiche oder ähnliche Interpretationsvorschrift, gleiche oder
ähnliche Manipulationsmöglichkeiten,
jedoch unterschiedlicher Wertebereich oder unterschiedlicher interner
Aufbau.
Alle anderen Datentypen lassen sich aus den elementaren Datentypen
ableiten (konstruieren).
Die Werte der elementaren Datentypen sind syntaktisch eindeutig
voneinander zu unterscheiden.
Abgeleitete Datentypen
Mit Hilfe von Konstruktoren kann aus einem oder mehreren Basisdatentypen
ein neuer Datentyp abgeleitet werden.
Als Basisdatentyp kommen elementare oder andere zuvor abgeleitete
Datentypen in Frage.
Vordefinierte abgeleitete Datentypen
Die Sprachdefinition legt fest, wie diese Datentypen konstruiert
werden. Ebenso legt sie die Manipulationsmöglichkeiten fest.
it ihnen kann wie mit elementaren Datentypen gearbeitet werden.
Vordefinierte abgeleitete Datentypen sind in verschiedenen
Programmiersprach(version)en oft sehr unterschiedlich realisiert.
Beispiele sind
Eingeschränkte Datentypen
Der Wertebereich eines vorhandenen Basisdatentyps wird eingeschränkt.
Dies kann in folgender Weise geschehen:
Teilbereichstypen, Aufzählungstypen sowie die elemetaren Datentypen
Integer, Char und Boolean bilden oft die Gruppe der ordinalen
(diskreten) Datentypen:
Ihre Werte sind eineindeutig abbildbar auf Werte vom Typ Integer.
Aggregierte Datentypen (komplexe Datentypen, composite types)
Die Werte aggregierter Datentypen bestehen aus verschiedenen
Komponenten. Die Komponenten können alle den gleichen Datentyp
haben (z.B. Arrays), jede Komponente kann aber auch einen anderen
Datentyp besitzen (z.B. Records).
Die Komponenten sind sichtbar, alle entsprechend des Datentyps
zulässigen Operationen sind uneingeschränkt auf sie
anwendbar.
Abstrakte Datentypen (abstract data types, ADT)
Wie bei aggregierten Datentypen bestehen die Werte meist aus verschiedenen
Komponenten. Jede Komponente kann einen eigenen Datentyp besitzen.
Der Zugriff auf die Komponenten ist - bei konsequenter Realisierung - nur
über Operationen (Methoden) möglich, die Bestandteil der
Datentypdeklaration sind.
Zeiger-Datentypen (pointer types)
Die Werte von Zeiger-Datentypen sind Adressen (von Variablen,
Unterprogrammen, usw.).
Zeiger-Datentypen werden durch Programmiersprachen unterschiedlich
unterstützt:
Zu unterscheiden ist, durch wen und in welcher Form abgeleitete Datentypen eingeführt werden:
abgeleitete Datentypen
|
+------------------+----------------+
| |
vordefinierte benutzerdefinierte
Datentypen Datentypen
|
+--------+-------+
| |
anonyme benannte
Datentypen Datentypen
Vordefinierte Datentypen (built-in types)
Die Ableitungsvorschrift ist Bestandteil der Sprachdefinition.
Der Umgang mit vordefinierte Datentypen unterscheidet sich syntaktisch
meist nicht von dem Umgang mit elementaren Datentypen.
Vordefinierte Datentypen besitzen einen Namen. Dieser Name gilt entweder
als reserviertes Wort oder als vordefiniertes Wort.
Beispiele: INTEGER, REAL, CHAR
Benutzerdefinierte Datentypen (user-defined types)
Die Ableitungsvorschrift ist Bestandteil des Programms, welches die
Datentypen benutzt.
Der Datentyp wird vom Programmierer als Benutzer der Programmiersprache
eingeführt.
Anonyme Datentypen (anonymous types)
Die Einführung anonymer Datentypen erfolgt im Zusammenhang
mit der Deklaration von Variablen.
Ein anonymer Datentyp wird nicht separat deklariert, die
Ableitungsvorschrift ist Bestandteil einer Variablendeklaration.
Wegen des fehlenden Namens ist eine Bezugnahme auf den Datentyp nicht
möglich, d.h. anonyme Datentypen können nicht nachgenutzt
werden.
Beispiel (Pascal):
VAR x : ARRAY[1..100] OF INTEGER;Benannte Datentypen (named types)
Die Ableitungsvorschrift wird innerhalb einer Typdeklaration separat
notiert, der abgeleitete Datentyp erhält einen Namen.
Der Datentyp kann nachgenutzt werden.
Beispiel:
TYPE feld = ARRAY[1..100] OF INTEGER;Bemerkung:
Durch Programmiersprachen können zur Verfügung gestellt werden:
Abstrakte Datentypen sind im allgemeinen benutzerdefiniert. Häufig werden den Sprachsystemen vorgefertigte abstrakte Datentypen beigefügt, diese gehören jedoch nicht zur Sprache im engeren Sinne und sind austauschbar und damit als benutzerdefiniert einzustufen.
Abgeleitete Datentypen sind, wenn auch in unterschiedlichem Maße, in allen algorithmischen Programmiersprachen möglich. Dabei sind folgende Entwicklungsniveaus zu erkennen, die jeweils aufeinander aufbauen:
Eine weitere Möglichkeit, Datentypen zu klassifizieren, besteht darin, die Struktur ihrer Werte zu untersuchen:
Typbindung
Werte werden in einem Programm in Variablen oder Konstanten
gespeichert.
Wie erfolgt die Bindung einer Variablen an einen Datentyp ?
Datentypen lassen sich durch folgende Attribute charakterisieren: