Variablen, Zuweisung und Programmzustand
Was macht die Anweisung a = 5 in einem Programm?
Erklärung: Das = ist hier keine Frage und keine Gleichung, sondern ein Befehl — „a erhält den Wert 5".
Wie liest man die Zuweisung x = x + 1 richtig?
Erklärung: Erst wird die rechte Seite mit dem alten Wert berechnet, dann wird das Ergebnis links gespeichert. Aus x = 4 wird so x = 5 — keine Gleichung, sondern ein Arbeitsschritt.
Nach den Anweisungen a = 3 und danach a = 7 hat die Variable a beide Werte gespeichert.
Erklärung: Falsch — eine Variable hält immer genau einen aktuellen Wert. Die zweite Zuweisung überschreibt die 3; sie ist danach weg.
Programm: a = 2, dann b = a + 3, dann a = 10. Welchen Wert hat b am Ende?
Erklärung: b wurde berechnet, als a noch 2 war — also b = 5. Die spätere Änderung von a ändert b nicht mehr; Variablen aktualisieren sich nicht von selbst.
Was bewirkt die Zuweisung a = b?
Erklärung: Eine Zuweisung wirkt nur in eine Richtung — von rechts nach links. Die rechte Seite wird gelesen, die linke überschrieben.
Um die Werte von a und b zu vertauschen, reichen die zwei Anweisungen a = b und b = a.
Erklärung: Falsch — nach a = b ist der alte Wert von a bereits überschrieben. b = a kopiert dann nur denselben Wert zurück. Man braucht eine Hilfsvariable, die den alten Wert rettet.
Vertauschen mit Hilfsvariable: h = a, a = b, b = ?
Erklärung: h hat den alten Wert von a gerettet. Nach a = b bekommt b diesen geretteten Wert aus h — jetzt sind a und b vertauscht.
Was versteht man unter dem Zustand eines Programms?
Erklärung: Der Programmzustand ist der Schnappschuss des Speichers. Jede Zuweisung verändert diesen Zustand um genau eine Zelle.
Programm: x = 4, dann x = x * 2, dann x = x + 1. Welchen Wert hat x am Ende?
Erklärung: Schritt für Schritt: x ist 4, dann 4 · 2 = 8, dann 8 + 1 = 9. Jede Zuweisung benutzt den jeweils aktuellen Wert.
In der Zuweisung punkte = punkte + 10 bedeutet das Gleichheitszeichen dasselbe wie in der Mathematik.
Erklärung: Falsch — in der Mathematik wäre das eine falsche Gleichung. Im Programm ist = ein Befehl („erhält den Wert"), viele Sprachen sprechen ihn deshalb als „wird zu" aus.
Zwei Anweisungen: (1) a = b + 1, (2) b = 5. Kommt es auf die Reihenfolge an?
Erklärung: Programme laufen strikt von oben nach unten. Eine Zuweisung sieht immer nur den Zustand, der in diesem Moment gilt.
Lea sagt: „Wenn ich preis = netto * 1.19 schreibe, passt sich preis automatisch an, sobald sich netto später ändert." Was stimmt?
Erklärung: Eine Zuweisung speichert einen berechneten Wert — keine Formel. Anders als in einer Tabellenkalkulation gibt es keine automatische Neuberechnung.
Eine Variable ist eine benannte ___ im Speicher, die genau einen aktuellen Wert hält.
Erklärung: Das Bild der beschrifteten Speicherzelle trägt weit — ein Name, ein Fach, ein aktueller Inhalt, der beim Überschreiben ersetzt wird.
Programm: a = 1, b = 2, a = b, b = a. Welche Werte haben a und b am Ende?
Erklärung: a = b macht a zu 2 (die 1 ist weg). b = a kopiert dann die 2 zurück nach b. Genau deshalb funktioniert Tauschen ohne Hilfsvariable nicht.