Datentyp: Unterschied zwischen den Versionen

Aus KGS-Wiki
(Immerhin Ganzzahlen)
(Scratch)
Zeile 51: Zeile 51:


== Datentypen in einigen Programmiersprachen ==
== Datentypen in einigen Programmiersprachen ==
{| class="wikitable"
|+ Datentypen in Scratch
! Typ
! Art
! Mögliche Werte
! colspan="2" | Zulässige Operationen
|-
| <sb><sechseckig></sb>
| Wahr&shy;heits&shy;wert
| <sb><wahr></sb>, <sb><falsch></sb>
| colspan="2" | <sb><nicht <>></sb>, <sb><<> und <>></sb>, <sb><<> oder <>></sb>
|-
| rowspan="2" | <sb>(rund)</sb>
| Zahlen
| bis zu 308 Ziffern
| <sb>(() + ())</sb>, <sb>(() - ())</sb>, <sb>(() * ())</sb>, <sb>(() / ())</sb>, <sb>(() mod ())</sb>, <sb>(() gerundet)</sb>, <sb>([Betrag v] von ())</sb>
| rowspan="2" | <sb><() < ()></sb>, <sb><() > ()></sb>, <sb><() = ()></sb>
|-
| Zeichen(-ketten)
| beliebig lang
| <sb>(verbinde () und ())</sb>, <sb>(Länge von ())</sb>, <sb>(Zeichen () von ())</sb>, <sb><() enthält ()?></sb>
|}


{| class="wikitable"
{| class="wikitable"
Zeile 68: Zeile 91:
| <syntaxhighlight lang="java" inline>char</syntaxhighlight>
| <syntaxhighlight lang="java" inline>char</syntaxhighlight>
| 2 Byte
| 2 Byte
| Zeichen
| Zeichen<ref group="J">Unter der Haube werden Zeichen als Zahl zwischen 0 und 65536 gespeichert. Deswegen sind mit <syntaxhighlight lang="java" inline>char</syntaxhighlight>s auch mathematische Operationen möglich.</ref>
| alle [[Unicode]]-Zeichen wie <syntaxhighlight lang="java" inline>'a'</syntaxhighlight>, <syntaxhighlight lang="java" inline>'@'</syntaxhighlight>, <syntaxhighlight lang="java" inline>'🦭'</syntaxhighlight>
| alle [[Unicode]]-Zeichen wie <syntaxhighlight lang="java" inline>'a'</syntaxhighlight>, <syntaxhighlight lang="java" inline>'@'</syntaxhighlight>, <syntaxhighlight lang="java" inline>'🦭'</syntaxhighlight>
| rowspan="5" | <syntaxhighlight lang="java" inline>+</syntaxhighlight>, <syntaxhighlight lang="java" inline>-</syntaxhighlight>, <syntaxhighlight lang="java" inline>*</syntaxhighlight>, <syntaxhighlight lang="java" inline>/</syntaxhighlight>, [[Modulo|<syntaxhighlight lang="java" inline>%</syntaxhighlight>]], <syntaxhighlight lang="java" inline>^</syntaxhighlight>, <syntaxhighlight lang="java" inline>==</syntaxhighlight>, <syntaxhighlight lang="java" inline>!=</syntaxhighlight>, <syntaxhighlight lang="java" inline><</syntaxhighlight>, <syntaxhighlight lang="java" inline>></syntaxhighlight>, <syntaxhighlight lang="java" inline><=</syntaxhighlight>, <syntaxhighlight lang="java" inline>>=</syntaxhighlight>
| rowspan="7" | <syntaxhighlight lang="java" inline>+</syntaxhighlight>, <syntaxhighlight lang="java" inline>-</syntaxhighlight>, <syntaxhighlight lang="java" inline>*</syntaxhighlight>, <syntaxhighlight lang="java" inline>/</syntaxhighlight>, [[Modulo|<syntaxhighlight lang="java" inline>%</syntaxhighlight>]], <syntaxhighlight lang="java" inline>^</syntaxhighlight>, <syntaxhighlight lang="java" inline>==</syntaxhighlight>, <syntaxhighlight lang="java" inline>!=</syntaxhighlight>, <syntaxhighlight lang="java" inline><</syntaxhighlight>, <syntaxhighlight lang="java" inline>></syntaxhighlight>, <syntaxhighlight lang="java" inline><=</syntaxhighlight>, <syntaxhighlight lang="java" inline>>=</syntaxhighlight>
|-
|-
| <syntaxhighlight lang="java" inline>byte</syntaxhighlight>
| <syntaxhighlight lang="java" inline>byte</syntaxhighlight>
| 1 Byte (duh!)
| 1 Byte (duh!)
| rowspan="4" | Ganzzahl
| rowspan="4" | Ganz&shy;zahl
| <math>-2^7=-128</math> bis <math>2^7-1=127</math>
| <math>-2^7=-128</math> bis <math>2^7-1=127</math>
|-
|-
Zeile 88: Zeile 111:
| 8 Byte
| 8 Byte
| <math>-2^{63}=-9.223.372.036.854.775.808</math> bis <math>2^{63}-1=9.223.372.036.854.775.807</math>
| <math>-2^{63}=-9.223.372.036.854.775.808</math> bis <math>2^{63}-1=9.223.372.036.854.775.807</math>
|-
| <syntaxhighlight lang="java" inline>float</syntaxhighlight>
| 4 Byte
| rowspan="2" | Fließ&shy;komma&shy;zahl
| <math>\pm 2^{-149} \approx 0,\underbrace{000 \dots 0}_{44\text{ Nullen}}14,</math> bis <math>\pm (2-2^{-23})\cdot 2^{127} = 340.282.346.638.528.859.811.704.183.484.516.925.440</math>
|-
| <syntaxhighlight lang="java" inline>double</syntaxhighlight>
| 8 Byte
| <math>\pm 2^{-1053} \approx 0,\underbrace{000 \dots 0}_{316\text{ Nullen}}1</math> bis <math>\pm (2-2^{-31})\cdot 2^{1023} = 1\underbrace{797693\dots}_{308\text{ Ziffern}}</math>
|}
|}
 
<references group="J"/>
{{Lückenhaft}}
{{Lückenhaft}}


[[Kategorie:Programmierung]]
[[Kategorie:Programmierung]]

Version vom 2. August 2024, 20:27 Uhr

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.

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.

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

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 ()?>
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.
🕳
Lückenhaft

In diesem Artikel oder Abschnitt fehlen noch wichtige Informationen.

Hilf dem KGS-Wiki, indem du sie recherchierst und einfügst.