Checkmark on Circle.png

Datentyp

Aus KGS-Wiki

In der Programmierung werden verschiedene, aber gleichartige Daten zu Gruppen zusammengefasst, für die dieselben Regeln und Einschränkungen gelten und für die dieselben Operationen erlaubt sind. Diese Gruppen bezeichnet man als Datentyp.

Typische Datentypen, die in den meisten Programmiersprachen vorkommen, sind Ganzzahlen, Fließkommazahlen, Wahrheitswerte oder Zeichenketten.

Statisch getypte Sprachen

In manchen Programmiersprachen wie Java oder NEPO muss man bei der Deklaration einer Variablen ihren Datentyp festlegen. An dieser Stelle wird nämlich festgesetzt, wie viel Speicherplatz für diese Variable reserviert wird, denn das hängt vom Datentyp ab. An diesen Datentyp ist die Variable für den gesamten Programmablauf gebunden. Das bedeutet, dass in dieser Variablen keine Daten eines anderen Typs gespeichert werden dürfen. Programmiersprachen, in denen der Datentyp jeder Variablen bereits beim Programmieren feststehen muss und unveränderbar ist, heißen statisch getypt.

💬
Beispiel

Ein kurzer Codeschnipsel in Java:

int antwort = 42;
// Die Variable antwort hat den Typ int.
// Darum dürfen in ihr nur ganze Zahlen gespeichert werden.

antwort = antwort * 2;
// Die Multiplikation ist ein zulässiger Operator für Ganzzahlen.

antwort.length()
// Die Methode length() darf nur auf Strings aufgerufen werden.
// Deswegen wird dieser Aufruf eine Fehlermeldung produzieren.

antwort = 3.141592;
// 3.141592 ist keine Ganzzahl und passt nicht mit dem Datentyp von antwort zusammen.
// Deswegen ist diese Zuweisung nicht zulässig.

antwort = 12345678987654321;
// Das ist zwar eine Ganzzahl, aber sie ist zu groß für den Wertebereich eines int.
// Deswegen ist auch diese Zuweisung nicht zulässig.

Dynamisch getypte Sprachen

Andere Programmiersprachen wie JavaScript, Scratch oder Python sind da entspannter. Auch hier haben die Daten Typen, aber diese dürfen sich während der Laufzeit des Programms ändern. Diese Sprachen heißen dynamisch getypt.

💬
Beispiel

Ein kurzer Codeschnipsel in Python:

antwort = 42
print(type(antwort))
# ergibt <class 'int'>
# Die Variable antwort enthält also gerade eine Ganzzahl.

antwort = antwort * 2;
// Die Multiplikation ist ein zulässiger Operator für Ganzzahlen.

len(antwort)
# Die Funktion len() darf nur auf Strings aufgerufen werden.
# Deswegen wird dieser Aufruf eine Fehlermeldung produzieren.

antwort = 3.141592
print(type(antwort))
# ergibt <class 'float'>, da in der Variable nun eine Kommazahl gespeichert ist.

Datentypen in einigen Programmiersprachen

Visuelle Programmierung

Scratch

In Scratch wird zwischen zwei Datentypen unterschieden, die an der Form ihrer Blöcke auseinandergehalten werden können.

Datentypen in Scratch
Typ Art Mögliche Werte Zulässige Operationen
<sechseckig> Wahr­heits­wert <wahr>, <falsch> <nicht <>>, <<> und <>>, <<> oder <>>
(rund) Zahlen bis zu 308 Ziffern (() + ()), (() - ()), (() * ()), (() / ()), (() mod ()), (() gerundet), ([Betrag v] von ()) <() < ()>, <() > ()>, <() = ()>
Zeichen(-ketten) beliebig lang (verbinde () und ()), (Länge von ()), (Zeichen () von ()), <() enthält ()?>

NEPO

Die Datentypen der Ausdrücke und Parameter in NEPO erkennt man an der Farbe der Puzzle-Nupsis an den Blöcken:

  • Bei Ausdrücken zeigt der Nupsi nach links und zeigt den Datentyp an, den der Ausdruck zurückliefert
  • Bei Parametern zeigt die Lücke nach rechts und zeigt den Datentyp an, den die Funktion an dieser Stelle benötigt.
Datentypen in NEPO
Farbe Art Beispielwert Beispiel für einen Block, der diesen Datentyp erfordert Beispiel für einen Block, der diesen Datentyp zurückgibt
türkis Wahrheitswerte NEPO Block Bool.svg NEPO Block verlangt Bool.svg NEPO Block liefert Bool.svg
blau Zahlen NEPO Block Zahl.svg NEPO Block verlangt Zahl.svg NEPO Block liefert Zahl.svg
grün Zeichenketten NEPO Block String.svg NEPO Block verlangt String.svg NEPO Block liefert String.svg
gelb Farben NEPO Block Farbe.svg NEPO Block verlangt Farbe.svg NEPO Block liefert Farbe.svg
pink Bilder NEPO Block Bild.svg NEPO Block verlangt Bild.svg NEPO Block liefert Bild.svg

Textuelle Programmierung

Java

Datentypen in Java
Typ Größe Art Mögliche Werte Zulässige Operationen
boolean 1 Bit Wahr­heits­wert true, false !, &&, ||
char 2 Byte Zeichen[J 1] alle Unicode-Zeichen wie 'a', '@', '🦭' +, -, *, /, %, ^, ==, !=, <, >, <=, >=
byte 1 Byte (duh!) Ganz­zahl bis
short 2 Byte bis
int 4 Byte bis
long 8 Byte bis
float 4 Byte Fließ­komma­zahl bis
double 8 Byte bis
  1. Unter der Haube werden Zeichen als Zahl zwischen 0 und 65536 gespeichert. Deswegen sind mit chars auch mathematische Operationen möglich.

Python

Datentypen in Python
Typ Erklärung Beispiele
int für ganze Zahlen (engl. integer numbers) 0, 42, 3190701205
float für Dezimalzahlen (“Kommazahlen”, engl. floating-point numbers) 0.5, 42.0, 3.141592
str für beliebige Zeichenketten (engl. strings) 'Hello World', '42', 'https://wiki.kah.gs'
bool für Wahrheitswerte (engl. boolean)[P 1] True, False
  1. Logische Wahrheitswerte werden nach George Boole, einem Pionier der mathematischen Logik, auch als "boolesche Werte" bezeichnet (im Englischen "boolean").

Datenbanken

SQL

SQL-Datentypen
Typ Beschreibung
Numerische Datentypen INT Ganzzahlen zwischen und
BIGINT Ganzzahlen zwischen und
REAL Reelle Zahlen zwischen und
Strings CHAR(länge) Strings mit der vorgegebenen Länge (max. 8000 Zeichen)
VARCHAR(länge) Strings mit variabler, aber höchstens mit der vorgegebenen Länge (max. 8000 Zeichen)
TEXT Strings mit beliebiger Länge, höchstens 2 GB Text.
Datum und Zeit DATE Daten zwischen 0001-01-01 und 9999-12-31
TIME Zeitangaben mit einer Genauigkeit von 100 Nanosekunden
DATETIME Datum und Zeitangaben kombiniert