Grundlagen der Programmierung mit Processing lernen - #2 Variablen und Datentypen

In diesem Kurs führe ich dich in kleinen Schritten in die Grundlagen der Programmierung ein. Wir nutzen dazu die Anfängerfreundliche Hochsprache "Processing" (ein Java Dialekt). Das hier Erlernte ist aber auf alle Hochsprachen und in weiten Teilen auch auf Scriptsprachen übertragbar.

Einfügen

Was sind Variablen?

Mit Hilfe von Variablen können wir uns Daten merken bzw. im Programm speichern. Variablen werden im Hauptspeicher des Rechners gespeichert, sie werden also nach Beendigung des Programms gelöscht und bleiben somit nicht dauerhaft erhalten.

Im unteren Beispiel merken wir uns eine Zahl, z.b. um sie anschließend für eine Rechenaufgabe zu nutzen. Variablen in Hochsprachen werden immer unter Angabe des Datentyps deklariert, im Beispiel wird der Typ "int" verwendet, für Integer bzw. Ganzzahl. Die erstmalige Angabe einer neuen Variable im Programm nennt man "Deklaration", das anschließende Zuweisen eines Wertes heißt "Initialisierung". Deklaration und Initialisierung können getrennt voneinander oder in einem Zug hintereinander erfolgen.


Warum sind da auch ganze Sätze und was bedeutet das Semikolon?

Im oberen Quellcode sind auch ganz normal geschriebene Sätze enthalten. Diese sind mit // als Kommentar gekennzeichnet und werden deshalb vom Compiler ignoriert. Wären die Sätze nicht auf diese Weise gekennzeichnet, würde es beim Kompilieren des Codes zu einem Fehler kommen, denn die Syntax (die Schreibweise) entspricht nicht der Art, wie Programmcode in Processing bzw. Java geschrieben wird.

Sicher ist dir auch schon aufgefallen, dass jede Anweisung in Processing bzw. Java mit einem ; abgeschlossen wird. Das ist auch in vielen anderen Sprachen so, aber nicht in jeder Programmiersprache. In JavaScript zum Beispiel können Anweisungen auch ohne ein Semikolon am Ende stehen.

Einfügen

Variablen verwenden

Da wir Variablen ja nicht einfach ohne Grund anlegen, verwenden wir sie im nächsten Schritt. Nachfolgend werden 2 Ganzahlen zunächst in Variablen gespeichert und dann für eine Addition verwendet. Das Ergebnis wird wiederum in einer Variable gespeichert.

Einfügen

Werbung (Affiliate - ich bekomme eine kleine Provision, dein Preis ändert sich nicht)

Beim Kauf einer Lötstation gibt es einen elektronischen Bausatz gratis dazu.

Ergebnisse der Berechnung in der Konsole ausgeben

Entwicklungsumgebungen, so auch die Processing IDE, verfügen über eine Art Textausgabe um Informationen und Daten während des Programmablaufs für den Programmierer auszugeben. Diese Textausgabe nennt sich Konsole. In Processing können wir mit den Anweisungen print und println in die Konsole schreiben.


In der IDE wird der Wert 15, welcher in der Variable d gespeichert ist, nun mehrmals ausgegeben. Da in Zeile 5 zunächst nur print() - also die Ausgabe ohne Zeilenumbruch - verwendet wird, werden die ersten beide Zahlen direkt hintereinander gedruckt. Nach der ersten Zahl erfolgt ein Umbruch, da diese Zahl mit println (für print line) ausgegeben wurde.

Einfügen

Was sind Datentypen?

Wir haben bereits den Datentypen int kennengelernt, dieser steht für eine Ganzzahl, also eine Zahl ohne Komma. Der Datentyp bedeutet aber auch, dass die darin gespeicherte Zahl eine bestimmten Wert einhalten muss. Nicht jede Zahl kann einfach als int gespeichert werden.

Ein Datentyp bestimmt also welche Art von Daten in einer Variable gespeichert werden können. Ausser dem Datentypen int für Ganzzahlen zwischen -2 147 483 648 und 2 147 483 647, gibt es noch weitere Datentypen. Man unterscheidet dabei grundsätzlich zwischen primitiven und komplexen Datentypen.

Die Nachfolgende Auflistung zeigt dir die 8 primitiven Datentypen:

Datentyp Beschreibung Speicherplatz Wertebereich
byte Ganzzahl 1 Byte (8 Bit) -128 bis 127
short Ganzzahl 2 Byte (16 Bit) -32.768 bis 32.767
int Ganzzahl 4 Byte (32 Bit) -2.147.483.648 bis 2.147.483.647
long Ganzzahl 8 Byte (64 Bit) -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
float Fließkommazahl 4 Byte (32 Bit) Ca. ±3.4E38 (7 Stellen Genauigkeit)
double Fließkommazahl 8 Byte (64 Bit) Ca. ±1.7E308 (15 Stellen Genauigkeit)
char Einzelnes Zeichen 2 Byte (16 Bit) '\u0000' (0) bis '\uffff' (65.535)
boolean Wahrheitswert 1 Bit (abhängig von der JVM) true oder false

Um zu verstehen, warum die verschiedenen Datentyp unterschiedlich viel Speicherplatz benötigen, müssen wir uns kurz ansehen, wie Computer  überhaupt Daten speichern. 

Einfügen

Werbung (Affiliate - ich bekomme eine kleine Provision, dein Preis ändert sich nicht)

Kleiner Exkurs: Wie werden Daten überhaupt im Computer verarbeitet?

Dieses Thema wird in diesem Kurs nur grundlegend behandelt, Vertiefung findest Du z.b. auf Wikipedia: Dualsystem

Zunächst muss man wissen, dass die Schaltkreise eines Computer nur 2 Zustände kennen: Strom fließ oder nicht. Ein Computer nutzt zur Speicherung von Daten technisch gesehen grundsätzlich nur diese zwei Zustände an oder aus. 

Ein Computer arbeitet also digital: das bedeutet etwa „in Stufen erfolgend, in Ziffern darstellend“ bzw. „zahlenmäßig“.

Mit Hilfe der zwei Zustände an oder aus bzw.  0 und 1 werden also einfach gesagt jegliche Daten dargestellt und gespeichert. Auch Buchstaben und andere Zeichen werden so dargestellt, denn sie werden von Zahlenwerten repräsentiert.

Um Zahlenwerte darzustellen, kennen und verwenden die meisten Menschen das Zehnersystem. Aber auch andere Zahlensysteme können Zahlenwerte darstellen. 

Jedes Zahlensystem besteht aus Nennwerten. Die Anzahl der Nennwerte ergibt sich aus der Basis. Der größte Nennwert entspricht der Basis minus 1. Wird der größte Nennwert überschritten, entsteht aus dem Übertrag der nächsthöhere Stellenwert. Im Zehnersystem zählen wir also von 0 bis 9, dann geht es weiter mit 10 bis zur 19 und immer so weiter.

Es gibt aber auch noch andere Zahlensysteme, die im Grund ganz genauso funktionieren, der Unterschied ist einzig die Basis und damit die Anzahl der Nennwerte: im Dualsystem 2 Nennwerte, im Dezimalsystem 10 Nennwerte, im Hexadezimalsystem 16 Nennwerte und im Octalsystem 8 Nennwerte.

Dezimalsystem Duales System (Binär) Hexadezimalsystem Oktalsystem
0000
1111
21022
31133
410044
510155
611066
711177
81000810
91001911
101010A12
111011B13
121100C14
131101D15
141110UND16
151111F17
16100001020
17100011121
18100101222
19100111323
20101001424
21101011525
22101101626
23101111727

Ein Computer nutzt also das Dualsystem oder Binärsystem um Zahlen zu speichern. 

Und da kommt wieder der unterschiedliche Bedarf an Speicherplatz für die verschiedenen Datentypen ins Spiel. Umso größer der gespeicherte Wert, desto mehr Stellen werden benötigt, um die Dualzahl darzustellen. Dabei steht jede Stelle für 1 Bit, 8 Bit werden als 1 Byte bezeichnet.

Daraus ergibt sich, dass mit Hilfe von einem Byte, Zahlen von 0 bis 255 dargestellt werden können. Das sind also 256 verschiedene Zahlenwerte. Die Dualzahl für 255 ist nämlich 11111111, also 8 Stellen = 1 Byte bzw. 8 Bit.

Ein Vergleich mit der obigen Tabelle der 8 primitiven Datentypen in Processing bzw. Java zeigt allerdings, das der Datentyp Byte Zahlen von -128 bis 127 speichern kann. Das liegt daran, dass sich der Wertebereich auf den negativen und positiven Bereich aufteilt. Man bezeichnet dies als "signed", mit Vorzeichen.

Einfügen

Unterschiedliche Datentypen verwenden

Der nachfolgende Code zeigt die Deklaration von Variablen der acht primitiven Datentypen.

Einfügen

Der Datentyp String

Um Zeichenketten darstellen zu können gibt es den Typen "String". Strings sind endliche viele Zeichen (Buchstaben, Steuerzeichen, Sonderzeichen, Ziffern) aus einem definierten Zeichensatz.

String ist kein primitiver Datentyp, sondern eine Klasse. Eine Variable vom Typen String verweist daher immer ein Objekt der Klasse String. Dazu später mehr im Abschnitt "Grundlagen der Objektorientierten Programmierung" dieses Kurs.

Da Strings Klassen sind, wird der Typ String in Java groß geschrieben.

Einfügen

Verbinden von Strings und Zahlen

Zeichenketten können mit anderen Zeichenketten oder Zahlen zusammengefügt werden. Dies nennt man Konkatenation, dies bedeutet soviel wie "aneinanderhängen". Dabei werden Zeichenketten durch das "+" zusammengefügt.





Einfügen

Aufgaben und Quizfragen

Aufgabe 1

Deklariere und initialisiere alle 8 primitiven Datentypen als Variablen mit sinnvollen Werten.

Aufgabe 2

Speichere dein Alter in einer Variable und gib anschließend als Satz "Ich bin ... Jahre alt." in der Konsole aus.

Einfügen

Wie geht es im nächste Teil weiter?

Wir haben einige Datentypen kennengelernt und wie man sie verwendet. Manchmal ergibt sich im Laufe des Programms die Notwendigkeit eine Variable eines bestimmten Typs in einen anderen Typen umzuwandeln. Darum geht es in der nächsten Folge des Tutorials.

Da geht es weiter...
Folge 3 - Konvertierung von Variablen
Einfügen