s n h m r u
i

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“.

if [Bedingung]:
    [Anweisungssequenz 1]
else:
    [Anweisungssequenz 2]
[Anweisungssequenz 3]
		
if onPow():
    removePow()
else:
    putPow()
move()
		

(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 zwei Grundtypen 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: Mehr als zwei Fälle

Manchmal reichen zwei Fälle nicht aus. Die Argo soll seitlichen Asteroiden ausweichen: Ist links von ihr ein Asteroid, weicht sie auf die Bahn rechts daneben aus. Ist rechts von ihr einer, weicht sie nach links aus. Ist die Bahn frei, markiert sie die Stelle mit einem PowerUp als sicher und fliegt weiter. Für solche Fälle gibt es in Python das Schlüsselwort elif.

move()
if rockLeft():        #WENN links ein Asteroid
    turnRight()
    move()
    turnLeft()
elif rockRight():     #SONST WENN rechts ein Asteroid
    turnLeft()
    move()
    turnRight()
else:                 #SONST
    putPow()
    move()

(a) Führe das Programm noch nicht aus! Unten findest du vier Welten. Sag für jede Welt voraus, wo die Argo am Ende steht und ob sie ein PowerUp ablegt. Halte deine Vorhersagen in einer Tabelle fest.

Welt Vorhersage Beobachtung
1: Asteroid links ... ...
2: Asteroid rechts ... ...
3: kein Asteroid ... ...
4: Asteroiden links und rechts ... ...

(b) Führe das Programm jetzt in allen vier Welten aus und trage ein, was du beobachtest. Wo lagst du richtig, wo nicht?

(c) Beantworte die folgenden Fragen zum Programm:

  1. In Welt 4 ist nicht nur rockLeft() wahr, sondern auch rockRight(). Erkläre, warum die Argo trotzdem nicht nach links ausweicht.
  2. Ersetze im Programm elif durch if. Überlege zuerst, ob sich etwas ändert, und teste dann alle vier Welten. In welcher Welt verhält sich die Argo jetzt anders? Erkläre den Unterschied. Mach die Änderung danach wieder rückgängig.
  3. Das folgende Programm verhält sich genauso wie das Programm oben. Vergleiche die beiden Programme und erkläre, warum man elif als Abkürzung für else if bezeichnet.
    move()
    if rockLeft():
        turnRight()
        move()
        turnLeft()
    else:
        if rockRight():
            turnLeft()
            move()
            turnRight()
        else:
            putPow()
            move()
    
  4. Wie viele der drei Anweisungssequenzen werden bei einem Programmlauf höchstens ausgeführt, wie viele mindestens? Was ändert sich daran, wenn der else-Teil fehlt?
Tipp zu b.

Zu welchem if gehört das else, wenn es kein elif mehr gibt? Und in welche Richtung schaut die Argo, wenn die zweite Bedingung geprüft wird?

(d) In Welt 4 kollidiert die Argo mit einem Asteroiden. Ergänze das Programm um einen weiteren Fall: Fliegt die Argo durch eine Engstelle, also mit Asteroiden links und rechts, soll sie nicht ausweichen, sondern die Engstelle mit einem PowerUp markieren. Probiere aus, an welcher Stelle der neue Fall stehen muss, und begründe deine Entscheidung.

Tipp

Wie man zwei Bedingungen verknüpft, weißt du aus der Erkundung: rockLeft() and rockRight()

Aufgabe 5: Ein Rollenspiel

Spielt eine Fallunterscheidung einmal nach – ohne Computer. Die Argo fliegt einen Korridor entlang und schaltet PowerUps um: Wo keines liegt, legt sie eines; wo eines liegt, hebt sie es auf. Dabei schlüpfen zwei Personen in unterschiedliche Rollen:

  • Pilotin: Sitzt am Spielplan und bewegt die Argo. Nur sie sieht das Spielfeld und beantwortet die Sensorfragen.
  • Steuermann: Hat das Programm vor sich. Bei jeder Bedingung fragt er die Pilotin und entscheidet anhand ihrer Antwort, welcher Zweig ausgeführt wird.

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 beiden Rollen, das Programm, ein Protokoll für den Steuermann und eine Reflexionskarte für den Schluss.

Aufgabe 6: 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 7: Ein Wissensspeicher für Fallunterscheidungen, Wahrheitswerte und logische Operatoren

Halte das Gelernte im nachfolgenden Wissensspeicher fest.

Aufgabe 8: 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: Fallunterscheidung und Logischer Operator.
  2. Verbinde sie mit Pfeilen – auch mit Begriffen, die schon auf deiner Karte stehen – und beschrifte jeden Pfeil.
  3. Schleife und Fallunterscheidung prüfen beide eine Bedingung. Worin unterscheiden sich die beiden Pfeile, die zur Bedingung führen?

Das Blatt für deine Konzeptkarte: Konzeptkarte herunterladen

Suche

v
6.1.3.1.2 Strukturierung
Kopieren durch Anklicken

Rückmeldung geben