Checkmark on Circle.png

Variable (Informatik)

Aus KGS-Wiki
Man kann sich eine Variable wie eine beschriftete Box vorstellen

In der Informatik bezeichnet man als Variable einen Verweis auf ein Stück Speicher, in dem eine Information festgehalten werden kann. Diese Information kann aus dem Speicher ausgelesen werden, ebenso kann eine neue Information hineingeschrieben werden. Bei diesem Vorgang geht die alte Information verloren.

Eine Variable hat immer einen Namen, den so genannten Bezeichner (engl. identifier). Mit diesem Namen kann auf den Wert der Variablen zugegriffen werden.

In manchen Programmiersprachen haben Variablen feste Datentypen, die festlegen, wie viel Speicher für diese Variable zur Verfügung steht und welche Werte darin gespeichert werden dürfen. Zum Beispiel kann eine Variable vom Typ short in C nur ganzzahlige Werte zwischen -32768 und 32768 annehmen.

Analogie

Man kann sich eine Variable wie eine beschriftete Box mit einem Inhalt vorstellen. Die Beschriftung ist hier der Bezeichner, der Inhalt ist der Wert.

Konkretes Beispiel: in meiner Küche steht eine Box mit der Beschriftung MEHL. Wenn ich meine Freundin bitte, mir die Box mit der Beschriftung MEHL zu geben, weiß sie, was ich will. Der Bezeichner dient also dazu, eine Variable eindeutig zu identifizieren.

Den Wert einer Variable kann man beliebig oft abfragen (Schatz, wie viel ist noch in der MEHL-Dose? - 300 Gramm!), verändern (indem man Mehl entnimmt oder hinzufügt) oder ganz löschen. Das Ergebnis einer Abfrage gibt dabei immer den aktuellen Wert einer Variablen zurück. Alte vorherigen Werte gehen beim Überschreiben verloren.

⚠️
Achtung

Der Bezeichner einer Variable hat nicht zwingend etwas mit dem Inhalt zu tun! In die MEHL-Dose könnte ich auch Zucker, Linsen oder schmutzige Socken füllen! Der Wert einer Variablen wird ausschließlich von dem Programm festgelegt, in dem sie verwendet wird!

👉
Hinweis

Der Bezeichner einer Variable sollte zu deren Wert passen. Genau so, wie ich von einer mit MEHL beschrifteten Dose erwarte, dass sie Mehl enthält, erwarte ich von einer Variable namens vorname, dass darin jemandes Vorname gespeichert wird. Dies gilt umso mehr, weil man in der Regel nicht alleine, sondern im Team an einem Programm arbeitet.

Kleine Anekdote: Als Jugendlicher wollte ich mal für einen Kuchen einen Zuckerguss aus Zitronensaft und Puderzucker anrühren. Das weiße Pulver in der mit "PUDERZUCKER" beschrifteten Dose war aber Kartoffelstärke. Moral: benenne deine Variablen und beschrifte deine Dosen so, dass andere sofort sehen oder wenigstens ahnen können, was darin ist.

Ähnlich wie die Datentypen hat auch meine MEHL-Dose nur ein begrenztes Fassungsvermögen. Wenn ich versuchen würde, einen ganzen 50-kg-Sack Mehl hineinzukippen, würde die Dose überlaufen. Genau so bezeichnet man übrigens auch die Fehler, die passieren, wenn man einen zu großen Wert in einer Variable speichern möchte: Überlauf.

Verwendung

Variablen bilden die einfachste Form des "Gedächtnisses" eines Computerprogramms oder Algorithmus. Komplexere Daten, die mehrere Informationen umfassen, müssen mit Datenstrukturen gespeichert werden.

Deklaration

Im AppInventor müssen Variablen deklariert werden, bevor sie verwendet werden können.
Auch in Scratch müssen Variablen vor der Verwendung deklariert werden.

In vielen Programmiersprachen müssen Variablen deklariert werden, bevor sie verwendet werden können. Das heißt, dass ihr Name sowie gegebenenfalls ihr Datentyp oder Informationen über ihre Sichtbarkeit festgehalten werden müssen. Im AppInventor müssen Variablen mit den Blöcken global initialisieren oder lokal initialisieren deklariert werden und können nur dann verwendet werden, wenn diese Blöcke vorhanden sind.

In Sprachen wie Java deklariert man Variablen zum Beispiel so:

int x;
char y;
boolean z;

Das bedeutet: es werden drei Variablen x, y und z angelegt. In x darf nur eine ganze Zahl gespeichert werden, in y nur ein Zeichen und in z nur ein Wahrheitswert. Damit wird zugleich der nötige Speicher für diese Variablen reserviert: 4 Byte für den int, 2 Byte für den char und 1 Bit für den boolean.

Durch die Pflicht zur Deklaration von Variablen kann bereits beim Kompilieren des Programms geprüft werden, ob alle verwendeten Variablen ganz sicher existieren und auch so verwendet werden dürfen, wie es im Programm steht.

Zuweisung und Abfrage

Den Wert einer Variable zu ändern, ist eine Anweisung, da hierdurch der Zustand des Programms verändert wird. Den Wert einer Variable abzufragen, ist hingegen ein Ausdruck, da ein Ergebnis zurückgeliefert wird. Wenn eine Variable einen neuen Wert zugewiesen bekommt, wird ihr alter Wert sofort überschrieben und ist nicht mehr abrufbar.

Visuelle Programmierung

In den visuellen Programmiersprachen werden für Anweisungen und Ausdrücke unterschiedlich geformte Blöcke verwendet. Darum wird auch anhand der Blockform zwischen Zuweisung und Abfrage unterschieden. In Scratch gibt es für die Zuweisung den Block setze [x v] auf () und für die Abfrage die ovalen Blöcke (x) mit den Variablennamen.

Im AppInventor werden die Blöcke AppInventor Setze.svg für die Zuweisung und AppInventor Hole.svg für die Abfrage verwendet.

Textuelle Programmierung

In der textuellen Programmierung wird für jeden Zugriff auf die Variablen einfach nur ihr Name verwendet. Für eine Zuweisung wird dahinter in den meisten Sprachen ein einfaches Gleichheitszeichen gesetzt und dahinter der Wert, der der Variablen zugewiesen werden soll:

💬
Beispiel

In der interaktiven Python-Kommandozeile kann man Variablen folgendermaßen abfragen und setzen:

>>> antwort = 42
>>> antwort
42

Zeile 1: Zuweisung – die Variable antwort bekommt den Wert 42 zugewiesen.
Zeile 2: Abfrage – der Wert der Variablen antwort wird abgerufen.
Zeile 3: Ergebnis – der Wert der Variablen antwort wird ausgegeben.

x = y

In der Mathematik bedeutet die Aussage : Die Variablen und sind für immer gleich.

In der Informatik ist das anders. Die Anweisung Python code bedeutet: Hole dir den Wert, der in der Variablen y gespeichert ist, und speichere ihn in der Variable x. Dies ist ein einmaliger Vorgang und hat insbesondere keine Auswirkung auf y. Wenn y in der Zukunft geändert wird, ändert x sich nicht mit; umgekehrt gilt das genau so. Zwischen diesen beiden Variablen gibt es nun keine feste Verbindung, es gab nur eine einmalige Abfrage und eine einmalige Zuweisung.

Weblinks