Variablen & Zuweisungen

In vielen Programmierkursen werden Variablen als Container beschrieben, in denen Werte gespeichert werden können. Damit unterscheiden sie sich kaum von Variablen in der Mathematik: Es sind feste, aber eventuell unbestimmte Werte. In der Informatik kommt hinzu, dass je nach Programmiersprache die Möglichkeit besteht, Variablen jederzeit andere Werte zuweisen zu können. Für die Verwendung in Computersystemen ist es nur wichtig, dass diese Werte eindeutig sind. Und ebenso wie in der Mathematik können Variablen in Programmen unterschiedliche Arten von Daten speichern. So bezeichnet $x$ im Mathematikunterricht der Unterstufe üblicherweise eine rationale Zahl, in der Linearen Algebra der Oberstufe dann oft auch einen Vektor im $\mathbb{R}^3$ und in einer Vorlesung zu Differentialrechnung oder in der Physik eine zeitabhängige Ortsfunktion. Von diesen teils abstrakten Datentypen der Mathematik abgesehen, gibt es einige, die der Informatik eigen sind: Zum Beispiel repräsentieren Zeichenketten (englisch Strings) Buchstaben und andere Symbole/Zeichen und boolsche Datentypen bilden die zwei Werte true und false (also wahr und falsch) ab.

Variablen dienen dem Zweck, dass der Computer sich (Zwischen-)Ergebnisse merken und weiterverarbeiten kann. Sie stellen damit eine Art Speicher dar, mit dem im einfachsten Fall ein Zustand erfasst und für den weiteren Programmablauf zur Verfügung gestellt werden kann. In nachfolgender Szene 5: Weiterführende Aufgaben zu Bedingungen stellt die Lehrerin die Schülerinnen und Schüler vor das Problem, in der bereits bekannten Programmierumgebung mit der Schildkröte jedes Feld (in Schlangenlinien) abzulaufen. Sie erkennen schnell, dass das ohne die Möglichkeit, sich etwas zu “merken”, nicht klappt.

Im Anschluss wird der nun neu eingeführte Speicher durch einen einfachen Knopf dargestellt, der die Werte red oder black aufnehmen kann. (Der Knopf ist somit streng genommen eine boolsche Variable.) Damit können die Schülerinnen und Schüler die Schildkröte in ihrer Programmierumgebung sehr viel flexibler steuern.

In der verwendeten Programmierumgebung kann die if-Anweisung auch den Status bzw. die Farbe des Knopfes abfragen:


Anleitung: In der linken Leiste finden Sie die Befehle, welche sich in die mittlere Leiste schieben lassen. Unterhalb der Befehle sind ein Geschwindigkeitsregler und die Tasten play und stop zu finden. Mit play werden die Befehle der mittleren Leiste von der Schildkröte ausgeführt. Die Geschwindigkeit kann durch den Schieberegler über den Knöpfen variiert werden. Der Knopf speichert einen von zwei Zuständen (“rot” oder “schwarz”), der in if-Bedingungen oder while-Schleifen abgefragt werden kann.

Aufgabe für den Unterricht:

Jedes Feld in Schlangenlinien ablaufen und markieren und anschließend den “Raum” am anderen Ende verlassen.

Je nach Programmiersprache ist es notwendig, den Typ einer Variablen vorab explizit zu deklarieren. Soll ein x also z. B. eine ganze Zahl darstellen, muss vor der ersten Verwendung beispielsweise eine Programmzeile der Form

int x;

zu finden sein, womit die Variable x vom Typ int deklariert wird. Hierbei steht int für das englische Wort ‘integer’; also für ganze Zahlen. Anschließend kann dieser Variablen dann ein Wert zugewiesen werden, der dann allerdings zwingend eine ganze Zahl sein muss, wie etwa:

x = 5 + 4;

Zu beachten ist, dass diese Schreibweise hier nicht symmetrisch ist, obwohl das vom Gleichheitszeichen aus der Mathematik eigentlich zu erwarten wäre. Sprich, der Befehl x = 5 + 4 wird streng von rechts nach links abgearbeitet und bedeutet, dass der Wert 9 in der Variablen x gespeichert wird. Die Anweisung 5 + 4 = x wird im Allgemeinen zu einer Fehlermeldung führen. Um diese Asymmetrie hervorzuheben, wird in Pseudocode oft die Schreibweise x $\leftarrow$ 5 + 4 verwendet.

Das bedeutet auch, dass der Wert einer Variable y einer anderen Variablen x zugeordnet werden kann:

x = y;

Hier ist zu beachten, dass eine solche Zuordnung je nach Programmiersprache entweder sich nur direkt auf den Wert bezieht oder gar auf die Referenz der Variable. Dies geht aber zu tief in die jeweilige Materie und soll nur der Vollständigkeit erwähnt werden. Folgende Beispiel richten sich an die reine Zuordnung eines Wertes.

Wegen der Asymmetrie der Zuweisung hat, nach dieser Zeile, x seinen Wert (eventuell) geändert; y allerdings nicht. Hierbei kann y das Ergebnis einer (beliebig komplizierten) Funktion/Rechnung sein, welche wiederum von anderen Variablen abhängt. Insbesondere kann der aktuelle Wert von x dafür verwendet werden, den neuen x-Wert zu bestimmen: Sollen zum Beispiel die Zahlen von $1$ bis $100$ aufsummiert werden – etwa um die Gauß’sche Summenformel $\sum_{i=1}^n i = \frac{n(n+1)}{2}$ zu visualisieren – so kann das mithilfe des folgenden Programms erreicht werden.

Setze i = 0;
Setze x = 0;
Solange i < 100
|     Setze i = i + 1;
|     Setze x = x + i;

Hier ist i der Laufparameter, wie er auch in der mathematischen Formel oben auftaucht. Er wird in jeder Iteration der Schleife um 1 erhöht. Und x ist das vorläufige Ergebnis der Summation. Aber anstatt das Ergebnis nach i Iterationen in einer neuen Variable zu speichern, wird der alte Ergebniswert in x überschrieben, da dieser nicht mehr gebraucht wird. Dieser gesamte Prozess kann in folgender Visualisierung verfolgt werden.


Anleitung: Auf den grünen Play-Knopf klicken, um die Zählschleife zu starten.


Mehr Informationen zu Algorithmen finden Sie unter (Dieker & Güting, 2018).