Variablen - Ein Stückchen Arbeitsspeicher, das wir nennen können, wie wir wollen.

1. Variablen

Teil 2 von 7 - Der Reihe:
Programmieren ist so einfach - Die 6 Konzepte der Programmierens die Sie lernen müssen.

Sie kennen vermutlich alle die berühmten Windows Fehlermeldungen die so aussagekräftig sind wie eine Speisekarte in chinesischen Schriftzeichen.
 


Was bedeuten diese komischen Zahlenfolgen?

Ein Computer speichert alle Daten mit denen er arbeiten möchte zunächst im Arbeitsspeicher (RAM - Read And Write Memory). Da hier sehr viele mögliche Stellen für das Speichern von Daten zur Verfügung stehen, gibt es eine eigene Logik für das benennen dieser Stellen im Arbeitsspeicher.

Stellen Sie sich das ganze so vor:
Die lange Zahlenkombination die Sie dort sehen, ist die Adresse für eine ganz bestimmte Stelle auf dem RAM Riegel in Ihrem Computer. Somit weiß der Computer wo er hingehen muss um Daten zu lesen oder zu schreiben.



Das Problem mit diesen "Speicheradressen" ist, das sie für uns viel zu lang und kompliziert sind. Wir würden viel lieber ein einfaches Wort benutzen um sagen zu können:
"meine Zahl lege ich jetzt im Speicher an der Stelle mit dem Namen `zahl_1` ab."
Und genau hier kommen VARIABLEN ins Spiel.

Variablen erlauben es uns, einen eigenen Namen für eine Speicherstelle zu vergeben.
Wenn wir also in unserem Programm eine Variable namens "zahl_1" erstellen, dann merkt sich der Computer im Hintergrund:

'zahl_1 'steht für die Adresse '0x0000000025C2E42B'.

Somit können wir in der Programmierung mit einfachen Namen für die komplexen Speicheradressen arbeiten und müssen uns keine Gedanken darüber machen welche Speicheradresse sich in Wirklichkeit dahinter versteckt.

In den meisten Programmiersprachen müssen wir dem Computer aber auch mitteilen, WAS wir an dieser Stelle im Arbeitsspeicher ablegen möchten.

Von beginn an wurden Computer immer so entwickelt, dass sie so wenig Speicher wie möglich verschwenden und daher sollten wir nur soviel Speicher für unsere Variable benutzen wie wirklich nötig. Denn für das ablegen einer kleinen Zahl wie z.B. "55", benötigt der Computer weniger Platz als wenn wir die Zahl "6545.23008796423424" speichern wollen.

Hierfür kann man bei Variablen den so genannten Datentyp angeben. Also:
"was für Daten möchte ich in dieser Variable speichern?".
Wenn wir in der Variable nur eine kleine Zahl (von 0 bis 255) speichern wollen, dann sagen wir das dem Computer in dem Moment wo wir unsere Variable zum ersten mal in unserem Programm erwähnen.

byte zahl_1

Das Schlüssel-Wort 'byte' vor dem Variablennamen, sagt dem Computer, dass wir nur ein ganz kleines Stück vom Arbeitsspeicher benötigen.
Wenn wir nun eine größere Zahl speichern möchten, könnten wir dem Computer folgende Anweisung geben:

int zahl_2

Das Schlüssel-Wort 'int' reserviert für unsere Variable 'zahl_2', viel mal soviel Platz im Arbeitsspeicher wie das Schlüsselwort 'byte'.
Dadurch können wir in der Variable 'zahl_2', ganze Zahlen von bis zu 4294967295 speichern.
Größere Zahlen brauchen mehr Platz. Und wir müssen dem Computer sagen, wie viel Platz wir für die Zahl brauchen werden.

Aber Zahlen die viel Platz brauchen, sind nicht immer GROß. Schauen wir uns die folgende Zahl an:
0,00000000000123
Hierbei handelt es sich um eine sehr kleine Zahl mit vielen Stellen nach dem Komma.
Auch hierfür muss der Computer genügend Platz im Arbeitsspeicher bereitstellen, denn die vielen `0` hinter dem Komma müssen ja irgendwo gespeichert werden.
Eine Variable für solch eine Komma-zahl (keine ganz Zahl) könnte wie folgt aussehen:

double zahl_3

Das Schlüssel-Wort 'double' reserviert für unsere Variable 'zahl_3', acht mal soviel Platz im Arbeitsspeicher wie das Schlüsselwort 'byte'.
Zusätzlich steckt in dem Wort 'double' die Information das es sich hier um Komma-zahlen handelt. Das muss der Computer wissen um mit der Variable richtig arbeiten zu können.

Einfach gesagt:
"wir müssen den Computer sagen ob wir Zahlen ohne Nachkommastellen haben (Ganzzahlen) oder ob es Nachkomma-Stellen gibt (Kommazahlen)".

Sie merken schon, ein Computer ist sehr genau (um nicht zu sagen pingelig) in der Art und weise wie er mit Zahlen arbeitet.

Für einen Computer gibt es eine Zahl nicht nur 1 mal sonder in ganz verschiedenen Arten:

byte zahl_1 = 5            Eine kleine ganze Zahl mit dem Wert 5
short zahl_2 = 5           Eine mittelgroße ganze Zahl mit dem Wert 5
int zahl_3 = 5               Eine große ganze Zahl mit dem Wert 5
float zahl_4 = 5.0         Eine Kommerzahl mit nur wenigen möglichen Nachkommastellen und dem Wert 5
double zahl_5 = 5.0     Eine Kommerzahl mit vielen möglichen Nachkommastellen und dem Wert 5
char zahl_6 = '5'           Ein Buchstabe der die Zahl 5 anzeigt.


Alle diese möglichen Arten der Zahl 5 sind für den Computer zunächst einmal völlig unterschiedliche Dinge. Zwar kann der Computer die meisten dieser verschiedenen Zahlen miteinander verrechnen, aber oftmals kann dies auch zu Problemen führen. Sie können halt keinen Buchstaben mit einer Zahl verrechnen, selbst wenn dieser Buchstabe aussieht wie eine '5'.

Wie schon weiter oben gesehen, können wir den selbst gewählten Variablennamen einen Wert geben. z.B. 5 wie oben gezeigt.
Dazu verwenden wir das '='  Zeichen.
Eine Zahl die auf der Rechten Seite des '=' Zeichens steht, wird in die Variable auf der Linken Seite des '=' geschrieben. Und da wir wissen das unserer Variablenname ja nur als Platzhalter für ein Stück Arbeitsspeicher steht, wird also die Zahl im Arbeit speicher abgelegt.

Der Name Variable (substantiviertes Adjektiv, feminin, veränderliche Größe) lässt uns schon vermuten, das wir die Zahl die wir in der Variable gespeichert haben, jederzeit verändern können.
Somit kann ein Stück in unserem Programm z.B. so aussehen:

int zahl_1 = 55;
zahl_1 = 222;
zahl_1 = 9999;


(** Das Semikolon ";" am ende einer Zeile, ist in vielen Programmiersprachen so etwas wie der "." am Ende eines Satzes und beendet die Anweisung **)
In der ersten Zeile sagen wir dem Computer, dass wir eine große Ganzzahl mit dem Namen 'zahl_1' haben möchten und das wir die '55' darin ablegen wollen.
In der zweiten Zeile, bitten wir den Computer die Speicherstelle die sich hinter der Variable 'zahl_1' verbirgt, mit dem Wert '222' zu befüllen und somit die Zahl '55' zu überschreiben.
Die Zahl '55' ist nun überschrieben und unwiederbringlich gelöscht.  In der dritten Zeile wiederrum überschreiben wir die '222' mit einer '9999'.

Einen Papierkorb oder "STRG+Z" gibt es in der Programmierung nicht.

Da sich hinter Variablen also nur Speicheradressen mit darin befindlichen Werten verstecken, können wir auch Werte zwischen Variablen und somit zwischen Speicherbereichen hin und her kopieren.
Im Folgenden Beispiel erstellen wir 2 Variablen und kopieren den Wert der eine Variable in die andere Variable hinein.

int zahl_1 = 5;
int zahl_2 = 77;
zahl_1 = zahl_2;


In diesem Beispiel setzen wir die Ganzzahl Variable 'zahl_1' auf '5' und die Variable 'zahl_2' auf '77'.
In der dritten Zeile sagen wir nun dem Computer, dass er bitte den Wert der Variable 'zahl_2' (77) an die Speicheradresse der Variable 'zahl_1' kopieren soll.
Dabei wird die Variable 'zahl_1' auf '77' gesetzt und ihr alter Wert '5' geht verloren. An der Variable 'zahl_2' ändert sich durch diese Aktion nichts.

Hier nochmal die aufgeschlüsselt was die einzelnen Teile einer solchen Codeanweisung für eine Variable bedeuten:


int       zahl_1     =    5;
             
int         
[DATENTYP_GANZZAHL]
zahl_1  
[SELBSTGEWÄLTER_NAME]
=    
      [ZUWEISUNG_VON_LINKS_NACH_RECHTS]
5;         
[DER_WERT]

Wenn wir eine neue Variable auf diese Art ins Leben rufen, spricht man in der Programmierung von einer "Deklaration".

int zahl_1;     <<< Wir 'deklarieren' das es ab jetzt die Ganzzahl Variable mit dem Namen 'zahl_1' gibt.

Wenn wir der Variable Zeitgleich einen Wert zuweisen sprechen wir zusätzlich von einer "Definition".

int zahl_1 = 55; <<< Wir 'deklarieren' das es ab jetzt die Ganzzahl Variable mit dem Namen 'zahl_1' gibt und 'definieren' für sie den Startwert '55'.


Versuchen Sie sich bitte immer wieder klar zu machen, das der 'Datentyp' ( int, float, byte ) einer Variable, nur beschreibt, wie viel Platz diese im Arbeitsspeicher benötigt und wie der Computer sie lesen soll (z.B. mit oder ohne Nachkommastellen). Wenn Sie dieses Prinzip einmal verinnerlicht haben, dann können Sie auch mit jedem Datentyp ( bild, musikdatei, video ) umgehen, denn am Ende ist es immer nur ein Stückchen Arbeitsspeicher auf das wir ein kleines Schild mit einem selbst gewählten Namen draufgeklebt haben.  

Zögern Sie nicht, die Serie weiterzugeben, wenn Sie sie für nützlich halten, oder schicken Sie mir Kommentare, wenn Sie denken, dass ich mich irre oder etwas übersehen habe.


ENGLISH VERSION


Kontakt:
Kai Niklas - CEO decode GmbH
Mail: k.niklas@decode-it.de
Twitter: @Kai_Niklas
Skype: uwi2k2
Instagram: uwiworld









Kommentare

Beliebte Posts aus diesem Blog

Place items in the hands of 2D characters in a 3D world

Variables - A piece of memory that we can name whatever we want.

Technical Tile Data vs. Visible Tile Data