s n h m r u
i

Strukturierung

Zielsetzung

In der Erkundung hast du das erste Mal in PythonSpacebug eine Variable verwendet. Das ist beim Programmieren, vor allem beim Programmieren ohne die Argo, ein sehr wichtiges Konzept. Auf dieser Seite werden die informatischen Hintergründe von Variablen und Zuweisungen geklärt.

Im Gegensatz zu den vorherigen Kapiteln kommt hier eine weitere Denkweise zur Steuerung der Argo hinzu. Deshalb solltest du dir genügend Zeit lassen, um Variablen und Zuweisungen zu verstehen. Dafür ist es sinnvoll, wenn du den Abschnitt „Vertiefung und Vernetzung“ erst bearbeitest, wenn du einige Übungsaufgaben erfolgreich gelöst hast.

Variablen

In der Erkundung hast du eine Variable zaehler verwendet. Auf dieser Seite geht es darum, was genau Variablen eigentlich sind.

Variablen dienen beim Programmieren dazu, Daten zu verwalten. Eine Variable ist ein Name, der (in der Regel) mit einem Wert verknüpft ist.

Eine Variable ist beim Programmieren also etwas anderes als eine Variable in der Mathematik. Diesen Unterschied vertieft die folgende Aufgabe.

Aufgabe 1: Variablen in Mathematik und Informatik

(a) Ordne mithilfe dieser App die Aussagen zu: Passen sie eher zu Variablen in der Mathematik oder zu Variablen in der Informatik (genauer: beim Programmieren)?

Quelle: Learning Apps

(b) Im Wort „Variable“ steckt das Wort „variabel“. Recherchiere, was es bedeutet. Erkläre, inwiefern das mit der Besonderheit von Variablen beim Programmieren zusammenhängt.

Zuweisungen

Der Wert einer Variable kann im Laufe des Programms verändert werden. Dazu benutzt man Zuweisungen. In der Erkundung hast du solche schon gesehen. Sie sind so aufgebaut:

Struktur einer Zuweisung

Zuerst wird der aktuelle Wert der Variablen bestimmt, die im Term vorkommen. Dann wird der Wert des Terms ausgerechnet. Dann wird dieser Wert als neuer Wert für die links genannte Variable gespeichert.

Es ist beim Programmieren sehr wichtig, zu verstehen, wie Zuweisungen funktionieren. Damit beschäftigen sich die folgenden Aufgaben.

Aufgabe 2: Zuweisungen im Rollenspiel

Wie eine Zuweisung abläuft, versteht man am besten in einem Rollenspiel mit zwei Personen: Eine Person ist der Prozessor. Der Prozessor arbeitet das Programm Zeile für Zeile ab und führt nötige Berechnungen durch. Die andere Person ist der Datenverwalter und behält den Überblick darüber, welche Variable welchen Wert hat.

Braucht der Prozessor den Wert einer bestimmten Variable, so fragt er den Datenverwalter „Welchen Wert hat die Variable ...?“. Der Datenverwalter antwortet entsprechend. Am Ende der Abarbeitung einer Zuweisung sagt der Prozessor dem Datenverwalter, welchen neuen Wert eine Variable erhält: „Speichere ... als Wert der Variable ...“. Der Ablauf für die Zuweisung zaehler = zaehler + 1 kann so aussehen:

Dialog zwischen Prozessor und Speicherverwalter[1]

Suche dir einen Partner und führe nun selbst so einen Dialog für verschiedene Zuweisungen durch. Der Datenverwalter führt dazu eine Tabelle mit allen Variablennamen und deren Werten. Bei Änderungen streicht er den alten Wert durch und notiert einen neuen. Tauscht in jedem Aufgabenteil die Rollen. Kontrolliert nach jedem Aufgabenteil gemeinsam, ob ihr alles richtig gemacht habt.

Szenario (a)

Variablenwerte zu Beginn:

Variablenname Wert der Variable
anzahl 0
summe 4
zaehler 2

Zuweisungen:

zaehler = 5
anzahl = summe
zaehler = 3
	
Auflösung: Tabelle nach Szenario (a)
Variablenname Wert der Variable
anzahl 0, 4
summe 4
zaehler 2, 5, 3
Szenario (b)

Variablenwerte zu Beginn:

Variablenname Wert der Variable
zaehler1 5
zaehler2 6
zaehler3 2

Zuweisungen:

zaehler1 = zaehler2 - zaehler3
zaehler4 = 6
zaehler2 = 3*zaehler1
	
Auflösung: Tabelle nach Szenario (b)
Variablenname Wert der Variable
zaehler1 5, 4
zaehler2 6, 12
zaehler3 2
zaehler4 6

Die Variable zaehler4 gab es zu Beginn noch nicht. Der Datenverwalter legt für sie eine neue Zeile an.

Szenario (c)

Variablenwerte zu Beginn:

Variablenname Wert der Variable
z1 0
z2 4
z3 10

Zuweisungen:

z1 = 6
z1 = z1 - 2 
z2 = 3*z2
z3 = z3 - z1
	
Auflösung: Tabelle nach Szenario (c)
Variablenname Wert der Variable
z1 0, 6, 4
z2 4, 12
z3 10, 6

In den Szenarien (d) bis (f) läuft nicht alles glatt – so, wie es auch beim Programmieren vorkommt. Dafür braucht ihr eine weitere Regel: Fragt der Prozessor nach einer Variable, die nicht in der Tabelle steht, antwortet der Datenverwalter: „Die Variable ... kenne ich nicht.“ Der Prozessor kann dann nicht weiterrechnen. Er bricht ab und sagt, in welcher Zeile: „Abbruch in Zeile ...“. Alle Zeilen danach werden nicht mehr ausgeführt.

Achtet in diesen Szenarien genau auf die Schreibweise der Variablennamen. Am besten buchstabiert der Prozessor jeden Namen, und der Datenverwalter vergleicht ihn Buchstabe für Buchstabe mit seiner Tabelle. Überlegt nach jedem Szenario gemeinsam, woran es lag und wie man die Zuweisungen ändern müsste.

Szenario (d)

Variablenwerte zu Beginn:

Variablenname Wert der Variable
summe 4
zaehler 2

Zuweisungen:

zaehler = zaehler + 1
summe = summe + anzahl
summe = 2*summe
	
Auflösung: Tabelle nach Szenario (d)
Variablenname Wert der Variable
summe 4
zaehler 2, 3

Abbruch in Zeile 2: Der Prozessor erfährt, dass summe den Wert 4 hat. Nach anzahl fragt er vergeblich, denn diese Variable steht nicht in der Tabelle. Der Term lässt sich also nicht ausrechnen: summe behält den Wert 4, und Zeile 3 wird nicht mehr ausgeführt.

Python Spacebug verhält sich genauso. Das Programm bricht ab, die Zeile wird markiert und es erscheint diese Fehlermeldung:

NameError: name 'anzahl' is not defined on line 2

Auf Deutsch: Der Name anzahl ist in Zeile 2 nicht definiert.

Szenario (e)

Variablenwerte zu Beginn:

Variablenname Wert der Variable
zaehler 2

Zuweisungen:

zaehler = zaehler + 1
zaeler = zaehler + 1
zaehler = Zaehler + 1
zaehler = 0
	
Auflösung: Tabelle nach Szenario (e)
Variablenname Wert der Variable
zaehler 2, 3
zaeler 4

Zeile 2 enthält einen Tippfehler: Links vom = steht zaeler statt zaehler. Das führt nicht zu einem Abbruch. Der Datenverwalter legt einfach eine neue Variable zaeler mit dem Wert 4 an, und zaehler behält den Wert 3. Solche Fehler sind tückisch, weil das Programm ohne Fehlermeldung weiterläuft.

Abbruch in Zeile 3: Rechts vom = steht Zaehler mit großem Z. Das ist ein anderer Name als zaehler, und eine Variable mit diesem Namen steht nicht in der Tabelle. Zeile 4 wird nicht mehr ausgeführt. Python Spacebug meldet hier NameError: name 'Zaehler' is not defined on line 3.

Szenario (f)

Variablenwerte zu Beginn:

Variablenname Wert der Variable
zaehler 3

Zuweisungen:

anzahl = zaehler + 1
summe = anzahl + bonus
bonus = 10
	
Auflösung: Tabelle nach Szenario (f)
Variablenname Wert der Variable
zaehler 3
anzahl 4

Abbruch in Zeile 2: Für anzahl nennt der Datenverwalter den Wert 4, aber bonus steht noch nicht in der Tabelle. Dass bonus eine Zeile später einen Wert bekommen soll, hilft nicht: Der Prozessor arbeitet Zeile für Zeile und schaut nicht voraus. Python Spacebug meldet hier NameError: name 'bonus' is not defined on line 2.

Vertauscht man die Zeilen 2 und 3, werden alle Zeilen ausgeführt. Dann erhält bonus den Wert 10 und summe den Wert 14.

Aufgabe 3: Zuweisungen alleine auswerten

Nun sollst du selbst Zuweisungen auswerten und beobachten, wie sich der Variablenzustand dabei verändert. Bearbeite hierfür das folgende Arbeitsblatt. Auf der linken Seite stehen die Zuweisungen. Die eingezeichneten geschweiften Klammern helfen dabei, die Zuweisungen auszuwerten.

Aufgabe 4 (optional): Ein Rollenspiel zu dritt

In einem Spacebug-Programm arbeiten Variablen und Argo zusammen. Spielt das einmal nach – ohne Computer und zu dritt. Die Argo führt das Zähler-Programm aus der Erkundung aus, ergänzt um einen zweiten Teil: Sie fliegt einen kurzen Korridor entlang, hebt die PowerUps auf und zählt sie dabei. Dann dreht sie um und legt auf dem Rückweg so viele PowerUps wieder ab, wie sie gezählt hat. Dabei schlüpft ihr in drei Rollen:

  • Pilotin: Sitzt am Spielplan und bewegt die Argo. Nur sie sieht das Spielfeld und beantwortet die Sensorfragen.
  • Steuermann: Hat das Programm vor sich und arbeitet es Zeile für Zeile ab. Bei Sensoren fragt er die Pilotin, bei Variablen den Datenverwalter.
  • Datenverwalter: Führt wie in Aufgabe 2 die Variablentabelle. Er sieht weder das Spielfeld noch das Programm.

Eine Zuweisung läuft ab wie in Aufgabe 2. Der Steuermann übernimmt dabei die Arbeit des Prozessors: Er erfragt den Wert, rechnet und lässt das Ergebnis speichern.

Ihr braucht den Spielplan (ausgedruckt, dazu Spielfiguren für Argo, Asteroid und PowerUps – zur Not Münzen oder Radiergummis) und die Rollenkarten. Die erste Karte erklärt Aufbau und Ablauf, danach folgen die drei Rollen, das Programm, ein Protokoll für den Steuermann, die Variablentabelle für den Datenverwalter und eine Reflexionskarte für den Schluss.

Kurzschreibweise für den Variablenzustand

Da es sehr aufwändig ist, wie in Aufgabe 2 und 3 Tabellen für den Variablenzustand anzulegen, gibt es eine Kurzschreibweise. Den Variablenzustand zu Beginn von Szenario (c) aus Aufgabe 2 kann man so abkürzen:

{z1 -> 0; z2 -> 4; z3 -> 10}

Aufgabe 5: Das Wichtigste notieren

Aufgabe 6: Ein genauerer Blick aufs „=“

Beim Programmieren kommen sehr oft Ausdrücke der Form zaehler = zaehler + 1 vor. In der Mathematik ergibt ein solcher Ausdruck aber wenig Sinn: Die Gleichung $x = x + 1$ ist immer falsch.

Erkläre daran, welche Bedeutung das Zeichen = beim Programmieren hat. Wie ist der Zusammenhang zu Zuweisungen? Was ist der Unterschied zur Mathematik?

Aufgabe 7: Die Konzeptkarte erweitern

Nimm deine Konzeptkarte aus den vorigen Kapiteln wieder zur Hand. Falls du noch keine hast, lade das Blatt herunter und trage zuerst die Begriffe der früheren Kapitel ein.

  1. Ergänze die neuen Begriffe dieses Kapitels: Variable, Zuweisung und Wert.
  2. Verbinde sie mit Pfeilen – auch mit Begriffen, die schon auf deiner Karte stehen – und beschrifte jeden Pfeil.
  3. Den Begriff Bezeichner kennst du schon von den Unterprogrammen. Wie hängt er mit Variablen zusammen?

Das Blatt für deine Konzeptkarte: Konzeptkarte herunterladen

Quellen

Suche

v
6.1.5.1.2 Strukturierung
Kopieren durch Anklicken

Rückmeldung geben