Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Datentyp

Die Konkretisierung der Operationsmenge führt zu Abstrakten Datentypen beziehungsweise Algebraischen Strukturen. Mit der weiteren Konkretisierung der …

Inhalt5 Abschnitte
  1. 1. Begriff und Bedeutung
  2. 2. Signatur und Semantik
  3. 3. Elementare und ordinale Typen
  4. 4. Gleitkommawerte, Bitmengen und Zeiger
  5. 5. Zusammengesetzte, abstrakte und generische Typen

Begriff und Bedeutung

Ein Datentyp (auch Datenart) fasst in der Informatik Objektmengen und die auf ihnen definierten Operationen zusammen. In der formalen Sicht werden durch eine Signatur zunächst nur die Namen der Objekt- und Operationsmengen festgelegt; diese Spezifikation besitzt noch keine Semantik, also keine festgelegte Bedeutung.

In Programmiersprachen meint Datentyp meist konkreter eine Wertemenge mit zugehörigen Operationen. Beispiele sind ganze Zahlen, Kommazahlen, Zeichenketten, Datum/Zeit und Objekte. Datentypen geben Speicherbereichen von Variablen oder Konstanten eine Bedeutung. Dadurch können Compiler oder Laufzeitumgebungen prüfen, ob Operationen typverträglich sind. Beispielsweise kann die Division der Zeichenkette „HANS“ durch die Zahl „5“ als unzulässige, üblicherweise undefinierte Operation erkannt werden.

Der Übergang von der formalen zur konkreten Bedeutung erfolgt schrittweise: Die Konkretisierung der Operationsmenge führt zu abstrakten Datentypen beziehungsweise algebraischen Strukturen; wird auch die Objektmenge konkret festgelegt, entsteht ein konkreter Datentyp.

Signatur und Semantik

Eine Signatur ist das Paar (Sorten, Operationen). Sorten sind Namen für Objektmengen, Operationen Namen für Operationen auf diesen Mengen. Für den vereinfachten Typ „Simple Integer“ gibt es die Sorte int sowie die Operationen zero: → int, +: int x int → int und −: int x int → int. zero erzeugt ein Element der Sorte int; + und − sind zweistellig und liefern jeweils wieder ein int.

Diese Angaben sind rein syntaktisch. Sie legen weder fest, was ein int ist, noch wie die Symbole + und − arbeiten. Eine Semantik könnte int der Menge der natürlichen Zahlen IN zuordnen, zero mit 0 gleichsetzen, + als Summe zweier Zahlen aus IN und − als arithmetische Differenz aus IN bestimmen. Eine solche um Semantik erweiterte Spezifikation ist keine bloße Signatur mehr, sondern eine Algebra.

Elementare und ordinale Typen

Programmiersprachen besitzen jeweils eigene vordefinierte Typen. Zwar sind die Grundprinzipien – etwa ganze Zahlen, Gleitkommazahlen oder Zeichenketten – ähnlich, Namen, exakte Wertebereiche und Operationen hängen aber von Sprache, Plattform und Compiler ab. Man unterscheidet elementare und zusammengesetzte Datentypen.

Elementare, einfache oder primitive Typen können nur einen Wert ihres Wertebereichs aufnehmen. Ihr Wertebereich ist endlich; daher lassen sich reelle Zahlen als Gleitkommazahlen nur näherungsweise und mit begrenzter Genauigkeit darstellen. Für Zahlentypen sind insbesondere Grundrechenarten definiert.

Ordinale Datentypen haben eine feste Ordnungsrelation: Jeder Wert erhält eine eindeutige Ordnungsnummer. Damit besitzt jeder Wert außer dem ersten genau einen direkten Vorgänger und jeder außer dem letzten genau einen direkten Nachfolger. Ob ein Typ ordinal ist, bestimmt die jeweilige Sprache. In PASCAL sind Aufzählungstypen ordinal, weil ihre Werte von links nach rechts geordnet sind; in C gilt dies nicht. Boolean ist ein spezieller Aufzählungstyp mit „falsch“/false als Ordnungswert 0 und „wahr“/true als Ordnungswert 1. Ganze und natürliche Zahlen sind von Natur aus ordinal.

Ganze Zahlen heißen unter anderem INT, INTEGER, LONG oder BIGINT und umfassen meist 8, 16, 32 oder 64 Bit; bei 32 Bit ist der Bereich −2^{31}…2^{31}-1. Typische Operationen sind +, −, *, Vergleiche, Ganzzahldivision, Modulo, bitweise Operatoren sowie Inkrement und Dekrement. Natürliche bzw. vorzeichenlose Zahlen heißen beispielsweise UINT, UNSIGNED oder CARDINAL; bei 32 Bit reichen sie von 0…2^{32}-1.

Festkommazahlen wie DECIMAL, NUMERIC oder CURRENCY haben einen von der maximalen Stellenzahl abhängigen Bereich. CURRENCY mit 64 Bit umfasst −922337203685477,5808…922337203685477,5807. Aufzählungstypen wie ENUM können frei wählbare Werte enthalten, etwa (SCHWARZ, ROT, BLAU, GELB). Boolean-Werte können als (TRUE, FALSE), (≠ 0, = 0) oder (= -1, = 0) dargestellt sein; wichtige logische Operationen sind NOT, AND, XOR, NOR, NAND und OR.

CHAR oder CHARACTER bezeichnet einzelne Zeichen aus einem Zeichensatz. Bei den verbreiteten Mehrbyte-Zeichenkodierungen UTF-8 und UTF-16 entspricht CHAR jedoch häufig eher einer 8- oder 16-Bit-Codeeinheit: In UTF-8 benötigen viele Zeichen zwei bis vier 8-Bit-Einheiten, in UTF-16 zwei 16-Bit-Einheiten als Surrogate-Pärchen. Erst die Folge dieser Einheiten kodiert das Zeichen.

Gleitkommawerte, Bitmengen und Zeiger

Gleitkommazahlen, etwa FLOAT, REAL, DOUBLE oder EXTENDED, unterstützen +, −, *, / und Vergleiche. Ihre Genauigkeit und ihr Bereich hängen von der Bitzahl ab: HALF mit 16 Bit reicht von 3,1·10^{−5} bis 6,6·10^{4} bei 4 signifikanten Stellen; SINGLE/REAL mit 32 Bit von 1,5·10^{−45} bis 3,4·10^{38} bei 7–8 Stellen. DOUBLE/REAL mit 64 Bit kann 5,0·10^{−324} bis 1,7·10^{308} bei 15–16 Stellen darstellen. EXTENDED mit 80 Bit reicht von 1,9·10^{−4951} bis 1,1·10^{4932} bei 19–20 Stellen.

Bitmengen sind Mengen mehrerer Bits, beispielsweise {} für die leere Menge, {i} oder {i, j}. Sie sind weder Aufzählungstypen noch Datenfelder, weil mehrere Elemente gleichzeitig angesprochen werden. Manche Sprachen bieten dafür Typen wie SET oder BITSET und Mengenoperatoren, etwa für Vereinigung oder Schnittmenge. Häufig werden stattdessen ganzzahlige Typen verwendet; dadurch können Zahlen und Bitmengen zuweisungskompatibel sein, obwohl ihre jeweiligen arithmetischen beziehungsweise Mengenoperatoren inhaltlich nicht sinnvoll austauschbar sind.

Zeiger sind Referenzen auf andere Datentypen; ihr genauer Wertebereich bleibt oft anonym. Ihre Werte sind Adressen eines Basistyps, Operationen sind Referenz und Dereferenz, teils auch +, −, * und /. Objektorientierte Sprachen können zusätzlich den referenzierten Typ zusammen mit der Adresse speichern und so die Kompatibilität auch zur Laufzeit prüfen, was etwa für Polymorphie nötig sein kann. Der konstante Nullzeiger heißt beispielsweise NULL, VOID, None, NIL oder Nothing, hat keinen Wertebereich und ist von jedem Zeiger auf ein Objekt verschieden. Prozedurtypen können Zeigervariablen beschreiben, die auf verschiedene Prozeduren mit identischen formalen Parameterlisten zeigen.

Zusammengesetzte, abstrakte und generische Typen

Zusammengesetzte Datentypen bestehen aus einfacheren Typen und können beliebig komplex werden; deshalb zählen sie oft bereits zu Datenstrukturen. Ein ARRAY ist eine Abbildung einer endlichen, ordinalen Indexmenge auf den Wertebereich eines Elementtyps. Mehrere Indizes ergeben mehrdimensionale Reihungen. Beispiel: type 3D-Vektor is ARRAY(1..3) of INTEGER;.

Zeichenketten fester Länge können etwa Array of CHAR, CHAR(n) oder CHAR[n] heißen; variable Zeichenketten etwa String, VARCHAR, CLOB oder Text. Typische Operationen sind Teilstring, Länge, Konkatenation sowie Vergleiche. BLOB bezeichnet binäre Zeichenketten variabler Länge. Ein RECORD, STRUCT oder CLASS enthält unterschiedliche Komponenten, die jeweils beliebige Typen haben können. Beispiel: type Prüfung is RECORD (Fach: STRING, Schueler: STRING, Punkte: INTEGER, Lehrer: STRING, Termin: DATUM). Variantenrecord oder UNION erlaubt, denselben Speicherbereich unterschiedlich zu interpretieren, bietet aber meist keine Typsicherheit.

Individuelle Formatangaben können einem Typ zusätzliche Bedeutung geben. Ein Datum kann beispielsweise als ganze Zahl von Millisekunden seit dem 1. Januar 1970 0:00 Uhr gespeichert und als „TT.MM.JJJJ“ oder „MM.TT hh:ss“ dargestellt werden. Es kann alternativ als julianisches Datum oder als Verbund aus Tag, Monat und Jahr gespeichert sein.

Ein abstrakter Datentyp (ADT) verbindet Daten in Variablen mit allen festgelegten Zugriffsoperationen. Weil Lesen und Schreiben nur über diese Operationen erfolgt, sind die Daten nach außen gekapselt. Klassen objektorientierter Sprachen sowie Module etwa in Ada oder Modula-2 unterstützen ADTs. Fachlich kann etwa „Kundennummer“ eine Untermenge ganzer Zahlen mit festgelegter Länge und Prüfziffer sein; bei Zeiträumen können Beginndatum und Endedatum durch eine Integritätsbedingung verbunden werden.

Ein anonymer Datentyp hat keinen Namen. Parametrische Polymorphie erlaubt, Typen oder Funktionen generisch zu formulieren, sodass sie Werte unabhängig von ihrem konkreten statischen Typ einheitlich behandeln und dabei vollständige statische Typsicherheit bewahren. Generische Typen beziehungsweise Templates setzen dies um: Algorithmen werden nicht für einen bestimmten Typ geschrieben, sondern verlangen nur bestimmte Eigenschaften. Die C++-Standardbibliothek trennt Algorithmen weitgehend von den Datenstrukturen. Ein universeller Datentyp ist meist die diskriminierte Vereinigung aller auftretenden Wertearten und kommt bei typenlosen Variablen, besonders in universellen Skriptsprachen, vor.

Lernvideos zu Datentyp

Weiterlesen

Informatik Als einfache Rechengeräte leisteten Abakus und später der Rechenschieber unschätzbare Dienste. 1641 konstruierte Blaise Pascal eine mechanische … Objekt (Programmierung) Ein Objekt in der Programmierung bezeichnet eine inhaltlich zusammengehörige Datenmenge: In der objektorientierten Programmierung wird eine Objektinstanz … Semantik In einem engeren Sinn behandelt die Semantik die Bedeutung vor allem sprachlicher Zeichen, wie Sätzen, Satzteilen, Wörtern oder Lexemen. Sie ist dann Teil der … Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin … Typisierung (Informatik) B. Variablen, Funktionen oder Objekte (im Sinne der objektorientierten Programmierung) korrekt verwendet werden. Ein Ziel der Typisierung ist die Vermeidung von … Abstrakter Datentyp Ein Abstrakter Datentyp (ADT) ist ein Verbund von Daten zusammen mit der Definition aller zulässigen Operationen, die auf sie zugreifen. Ganze Zahl Die ganzen Zahlen (auch Ganzzahlen, lateinisch numeri integri) sind eine Erweiterung der natürlichen Zahlen. ℤ. Der Buchstabe Z mit Doppelstrich Gleitkommazahl Gleitkommazahlen bestehen aus einer festen Anzahl von Ziffern, die gemäß dem Stellenwertsystem den Wert der Zahl angeben, sowie der Angabe, um wie viele Stellen … Compiler Ein Übersetzer zur Übertragung von Assembler-Quellprogrammen in Maschinensprache wird als Assembler oder Assemblierer bezeichnet. Geschichte. Bearbeiten. Programmierung Beim Programmieren sind wesentliche Aspekte zur Softwarequalität zu berücksichtigen und durch die Gestaltung des Quellcodes umzusetzen. Siehe dazu als Beispiele … Variable (Programmierung) In der Programmierung ist eine Variable ein abstrakter Behälter für einen Wert, der bei der Ausführung eines Computerprogramms auftritt.