i

Variablen und Zuweisungen

Datenverwaltung mit Variablen

Variablen dienen in der Informatik dazu, Daten zu verwalten. Betrachte als Beispiel die Situation, in der Daten über eine Mäusepopulation verwaltet werden. Die Population soll zum betrachteten Zeitpunkt aus 6 jungen, 9 erwachsenen und 12 alten Mäusen bestehen. Die Daten dieser Situation lassen sich mit Hilfe von drei Variablen jung, erwachsen und alt verwalten. Die Tabelle zeigt die benutzten Variablen und die verwalteten Daten.

Variable Datenobjekt
jung 6
erwachsen 9
alt 12

Eine Variable ist ein Name, der (in der Regel) mit einem Datenobjekt verknüpft ist. Als Wert einer Variablen wird das Datenobjekt angesehen, das von der Variablen verwaltet wird.

Ein Variablenzustand beschreibt die aktuell vorliegenden Variablen mit den verwalteten Daten.

Einen Variablenzustand kann man - wie oben – mit einer Tabelle darstellen. Wir werden einen Variablenzustand auch kurz so notieren:

{jung -> 6; erwachsen -> 9; alt -> 12}

Bei der Wahl der Variablenbezeichner (d.h. der Namen, die man den Variablen gibt) ist man recht flexibel. Die folgenden Regeln beschreiben die Bezeichnerwahl in Python.

Man darf Groß- und Kleinbuchstaben wie im Beispiel jungVorher verwenden. Beachte hier, dass Python zwischen Groß- und Kleinschreibung unterscheidet. Erlaubt sind auch Ziffern wie im Beispiel jung0, sie dürfen nur nicht am Anfang eines Namens stehen. Zudem darf man einen Unterstrich im Namen (auch am Anfang) verwenden - wie im Beispiel gesamtanzahl_maeuse. Weitere Sonderzeichen sind nicht erlaubt. Umlaute sind zwar erlaubt, sollte man aber vermeiden.

Bei der Wahl der Variablenbezeichner sollte man sprechende Namen benutzen. Das sind Namen, die möglichst gut erklären, welche Daten mit den Variablen verwaltet werden.

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 an Variablen

Das folgende Beispiel zeigt eine Zuweisung, bei der der Variablen alt ein neues Datenobjekt zugewiesen wird. Dieses ergibt sich, indem man den aktuellen Wert der Variablen erwachsen durch 3 teilt.

alt = erwachsen // 3

Eine Zuweisung ist eine Anweisung, die eine Variable mit einem neu berechneten Datenobjekt verknüpft.

Der Aufbau einer einfachen Zuweisung lässt sich am Beispiel klarmachen:

Struktur einer Zuweisung

Eine einfache Zuweisung besteht somit aus einer Variablen (der ein Wert zugewiesen wird) und einem Term (der den zuzuweisenden Wert festlegt). Komplexere Zuweisungen werden erst in den weiteren Abschnitten eingeführt.

Allgemein kann man den Aufbau einer einfachen Zuweisung auch wie folgt beschreiben:

[variable] = [term]

Wir werden hier – angelehnt an Python – das Gleichheitszeichen "=" als Zuweisungszeichen benutzen.

Ausführung einer Zuweisung

Die Ausführung einer Zuweisung erfolgt nach folgendem Schema:

Auswertung einer Zuweisung

Schritt 1: Der Wert des Terms wird mit Hilfe des aktuellen Variablenzustands ermittelt.

Schritt 2: Der Variablen, die auf der linken Seite der Zuweisung steht, wird der ermittelte Wert des Terms als neuer Wert zugeordnet.

Es ist beim Programmieren sehr wichtig, zu verstehen, wie Zuweisungen funktionieren. Damit beschäftigen sich die beiden 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 alt = erwachsen // 3 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.

Achtung: Die Zuweisungen selbst ergeben in dieser Aufgabe kein sinnvolles Programm zur Berechnung von Populationen, sondern sind nur dafür gedacht, die Konzepte „Variable“ und „Zuweisung“ zu verstehen.

Zum Einsatz im Unterricht bietet es sich an, die folgenden Rollenspiel-Karten zu verwenden.

(a) Variablenwerte zu Beginn:

Variablenname Wert der Variable
jung 3
erwachsen 0
alt 9
Zuweisungen:
jung = 5
erwachsen = alt//3
erwachsen = 5
Auflösung: Tabelle nach Teil (a)
Variablenname Wert der Variable
jung 3, 5
erwachsen 0, 3, 5
alt 9

(b) Variablenwerte zu Beginn:

Variablenname Wert der Variable
jung 5
erwachsen 6
alt 2
Zuweisungen:
jung = erwachsen - alt
hilf = 6
erwachsen = 3*hilf

(c) Variablenwerte zu Beginn:

Variablenname Wert der Variable
jung 0
erwachsen 4
alt 10
Zuweisungen:
jung = 6
jung = jung - 2 
erwachsen = 3*erwachsen
alt = alt - jung

Aufgabe 3: Zuweisungen alleine auswerten

Achtung: Die Zuweisungen selbst ergeben in dieser Aufgabe kein sinnvolles Programm zur Berechnung von Populationen, sondern sind nur dafür gedacht, die Konzepte „Variable“ und „Zuweisung“ zu verstehen.

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

Sicherung und Vertiefung

Aufgabe 4: Das Wichtigste notieren

Halte das Gelernte in diesem Wissensspeicher fest.

Im Wissensspeicher soll übersichtlich und prägnant das neu Gelernte dokumentiert werden. Die vorgegebene Struktur auf dem Wissensspeicher soll sicherstellen, dass alles Wichtige festgehalten wird; so werden z.B. nicht nur Definitionen, sondern in der Regel auch Beispiele, Vernetzungen oder Konventionen gefordert. Der Wissensspeicher kann verwendet werden, um ein im Unterricht erstelltes Tafelbild einfacher ins Heft zu übertragen. Es ist mit ihm aber auch möglich, die Sicherung stärker schüler:innen-orientiert zu gestalten: Je nach Unterrichtsgestaltung können die Schüler:innen nach einer Erarbeitung und Besprechung den gesamten Wissensspeicher selbst ausfüllen (im Unterricht, ggf. auch in der Hausaufgabe) oder hierfür zusätzlich das Online-Schulbuch zu Hilfe nehmen.

Aufgabe 5: Ein geauerer 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 6: Umkehrung

Achtung: Die Zuweisungen selbst ergeben in dieser Aufgabe kein sinnvolles Programm zur Berechnung von Populationen, sondern sind nur dafür gedacht, die Konzepte „Variable“ und „Zuweisung“ zu verstehen.

Bisher hast du mithilfe des Variablenzustands vorher sowie der Zuweisungen den Variablenzustand nachher hergestellt. Das ist das, was der Rechner auch tun muss. Um das System noch besser zu verstehen, drehen wir diese Aufgabe um.

Wir betrachten im Folgenden einen Variablenzustand vorher, dann eine oder mehrere Zuweisungen und zuletzt den Variablenzustand nachher. Zwei dieser Informationen sind gegeben, die dritte ist gesucht. Schaffst du es, sie zu bestimmen?

(a) Finde den Variablenzustand vorher heraus. Ist die Lösung eindeutig?

{                            }
jung = erwachsen
{jung -> 5; erwachsen -> 5}

(b) Finde die Zuweisung heraus. Ist die Lösung eindeutig?

{jung -> 3; erwachsen -> 9}

{jung -> 8; erwachsen -> 9}

(c) Finde den Variablenzustand vorher heraus. Ist die Lösung eindeutig?

{                                           }
jung = erwachsen - 5
alt = 2*jung + erwachsen 
{jung -> 3; erwachsen -> 8; alt -> 14}

(d) Finde die Zuweisungen heraus. Ist die Lösung eindeutig? Findest du sogar Zuweisungen, sodass diese Zuweisungen Sinn ergeben? Was will man hier bezwecken?

{jung -> 44; erwachsen -> 12}

{jung -> 12; erwachsen -> 44; hilf -> 44}

Trace-Tabelle

Eine Trace-Tabelle protokolliert die Veränderungen von Variablenzuständen, wenn mehrere Zuweisungen (bzw. sonstige Anweisungen) ausgeführt werden. Das folgende Beispiel zeigt eine solche Trace-Tabelle.

Zuweisung schritt jung erwachsen alt hilf
schritt = 0 0        
jung = 6 0 6      
erwachsen = 9 0 6 9    
alt = 12 0 6 9 12  
schritt = schritt + 1 1 6 9 12  
hilf = erwachsen * 4 + alt * 2 1 6 9 12 60
alt = erwachsen // 3 1 6 9 3 60
erwachsen = jung // 2 1 6 3 3 60
jung = hilf 1 60 3 3 60

Aufgabe 7: Trace-Tabelle, Variablenbezeichner

Gegeben ist der folgende Python-Dialog:

>>> a = 20
>>> b = 12
>>> c = a + b
>>> d = a
>>> a = a // 2 + 4 * b
>>> b = d // 2 + b // 2
>>> c = a + b
>>> d = a
>>> a = a // 2 + 4 * b
>>> b = d // 2 + b // 2
>>> c = a + b

(a) Erstelle eine Trace-Tabelle zu der gezeigten Folge von Zuweisungen.

(b) Die Folge von Zuweisungen soll die Entwicklung einer Population beschreiben. Beurteile die Wahl der Variablenbezeichner.

(c) Die Population soll aus zwei Altersklassen bestehen. Beschreibe das hier benutzte Fortpflanzungsmodell mit einem geeigneten Diagramm.

Quellen

Suche

v
6.3.1.1.1.3
dev.inf-schule.de/imperative-programmierung/python/projekte/variablen/population/variablen
dev.inf-schule.de/6.3.1.1.1.3
dev.inf-schule.de/@/page/209TyBquKBcDdZSQ

Rückmeldung geben