Strukturierung
Zielsetzung
In der Erkundung hast du ein konkretes Problem mit einem neuen Befehl gelöst. Jetzt geht es darum, die Details herauszuarbeiten, die hinter diesem Befehl stecken.
Strukturierung: Die Argo trifft Entscheidungen
Bisher kanntest du Bedingungen nur innerhalb von Schleifen: Die Anweisungssequenz im Schleifenrumpf wurde so lang durchlaufen, wie die Bedingung der Schleife erfüllt war. Häufig möchte man aber auch auf bestimmte Situationen reagieren und Aktionen nur dann durchführen, wenn eine bestimmte Bedingung (hier: ist vor der Argo ein Asteroid?) erfüllt ist. Dann braucht man Fallunterscheidungen.
Aufgabe 1: Fallunterscheidungen sind überall
Automatisierte Abläufe nehmen im täglichen Leben immer mehr Raum ein. Damit verbunden sind auch Fallunterscheidungen und Bedingungen. Führe diese Tabelle weiter fort:
Situation / Programm / Roboter | Bedingung | Verschiedene Aktionen |
---|---|---|
Staubsaug-Roboter | Wand berührt? | sauge weiter / drehe dich |
Computerspiel | Leben = 0 ? | ... |
Aufzugsteuerung | ... | ... |
... | ... | ... |
Aufgabe 2: Wenn... dann... SONST!
Häufig möchte man nicht nur ein Verhalten beschreiben, für den Fall das eine Bedingung gilt, sondern auch ein Verhalten definieren, wenn dies eben nicht der Fall ist. Im Alltag würden wir sagen Wenn... dann... sonst.... Dieses sonst beschreibt man in Python mit dem else-Befehl.
if onPow(): #WENN auf einem PowerUP
removePow() #DANN hebe es auf
else: #SONST lege eines
putPow()
Du kannst das hier ausprobieren. Stelle vor der Ausführung in jedem Szenario zunächst Überlegungen an, wie sich die Argo verhalten wird.
Aufgabe 3: Fallunterscheidungen vertiefen
(a) Betrachte die folgende Struktur einer Fallunterscheidung. Es sind insgesamt drei Anweisungssequenzen eingetragen. Erkläre, unter welchen Umständen und wann welche dieser Anweisungssequenzen ausgeführt werden.
if [Bedingung]:
[Anweisungssequenz 1]
else:
[Anweisungssequenz 2]
[Anweisungssequenz 3]
Tipp
Es hilft ggf., sich hier ein konkretes einfaches Programm vorzustellen. Also: Unter welchen Umständen und wann werden in diesem Programm die einzelnen Befehle ausgeführt? Beschreibe das erst konkret, also bezogen auf die Argo und ein PowerUp, und dann allgemein mit Begriffen wie „Bedingung“.
|
|
(b) Es gibt bei Fallunterscheidungen in PythonSpacebug einige Regeln im Quelltext zu beachten – sonst funktioniert das Programm nicht. Solche Regeln, die durch die Programmiersprache vorgegeben werden, nennt man Syntaxregeln. Welche Syntaxregeln für Fallunterscheidungen in PythonSpacebug findest du?
(c) Man unterscheidet zwischen zwei Typen von Fallunterscheidungen. Für beide ist der Aufbau unten beispielhaft dargestellt. Erkläre den Unterschied zwischen einer einseitigen Fallunterscheidung und einer zweiseitigen Fallunterscheidung so, dass man es versteht, wenn man direkt zuvor zum ersten Mal von Fallunterscheidungen gehört hat. Gib jeweils ein konkretes Beispiel (in Alltagssprache oder in PythonSpacebug) an.
Einseitige Fallunterscheidung:
if [Bedingung]:
[Anweisungssequenz]
Zweiseitige Fallunterscheidung:
if [Bedingung]:
[Anweisungssequenz]
else:
[Anweisungssequenz]
Aufgabe 4: Neue Bedingungen bauen
Neben der Sensoren der Argo, hast du bereits Erfahrungen mit zweien der drei logischen Operatoren not, and und or gemacht, mit denen man neue und komplexere Bedingungen formulieren kann.
Beschreibe des Verhalten der Argo in den folgenden Szenarien möglichst präzise:
Aufgabe 5: Ein Wissensspeicher für Fallunterscheidungen, Wahrheitswerte und logische Operatoren
Halte das Gelernte im nachfolgenden Wissensspeicher fest.