Übungen – Entscheidungen
Aufgabe 1: Zweiseitige und einseitige Fallunterscheidung
In dieser Aufgabe übst du den Umgang mit Flussdiagrammen und du vertiefst dem Unterschied zwischen ein- und zweiseitigen Fallunterscheidungen.
Gegeben sind zwei Mini-Programme. Erkläre mit Hilfe von Flussdiagrammen, dass beide Programme dasselbe leisten.
Programm 1:
if kara.onLeaf():
kara.removeLeaf()
kara.move()
else:
kara.move()
Programm 2:
if kara.onLeaf():
kara.removeLeaf()
kara.move()
Aufgabe 2: Ein kurzes Programm mit einer Fallunterscheidung
In dieser einfachen Aufgabe schreibst du ein kleines Programm mit einer Fallunterscheidung.
Schreibe ein Programm, das Folgendes leistet: Kara soll ein Kleeblatt „invertieren“, das bedeutet: Wenn Kara auf einem Kleeblatt steht, dann hebt sie/er dieses auf. Steht Kara nicht auf einem Blatt, so liegt sie/er ein Blatt auf den Boden. Den Ablauf des Programms siehst du rechts veranschaulicht.
Aufgabe 3: Ein Problem mit Fallunterscheidungen lösen
In dieser Aufgabe löst du ein etwas schwierigeres Problem mit Fallunterscheidungen.
(a) Kara weiß nicht, ob und wie viele Kleeblätter sich in ihrem/seinem Bau befinden. Kara möchte sie alle einsammeln.
Beschreibe zunächst deine Lösung in eigenen Worten. Übersetze sie dann in die Python-Sprache und teste sie.
(b) Kara möchte den Bau mit Kleeblättern auslegen. Es können sich aber schon Kleeblätter in einigen Feldern des Baus befinden.
Beschreibe zunächst deine Lösung in eigenen Worten. Übersetze sie dann in die Python-Sprache und teste sie.
Aufgabe 4: Fehlende Sensoren?
In dieser Aufgabe denkst du etwas genauer über die vorhandenen Sensoren von Kara nach.
Betrachte den folgenden Quelltext:
if kara.treeBehind():
kara.move()
(a) Beschreibe: Was soll dieses Programm leisten? Was wollten die Programmierer:innen erreichen?
(b) Begründe, dass dieses Programm so aber nicht funktioniert. Welche „Fähigkeit“ fehlt Kara dafür?
(c) Ist die fehlende „Fähigkeit“ aus Teil (b) ein Problem bei der Programmierung von Kara? Argumentiere.
Aufgabe 5: Ein verwehtes Blatt
In dieser Aufgabe vollziehst du den Ablauf eines Programms in einem Flussdiagramm und im Programmcode nach.
Karas Bau ist schön mit Kleeblättern ausgelegt, aber ein Blatt ist vom Wind herausgeweht worden. Es gibt also genau ein Feld, auf dem kein Blatt liegt; auf allen anderen liegen Blätter. Kara will das beheben; der Ablauf wird in der Grafik verdeutlicht.
(a) Überlege dir erst kurz, wie du ein Programm aus der Erkundung abändern musst, um das Problem zu lösen. Du musst diese Abänderung nicht durchführen, sondern sollst es dir nur selbst klarmachen.
(b) Nun sollst du für jeden der drei möglichen Ausgangszustände den Programmablauf ohne Computer nachvollziehen. Wiederhole dafür für die drei Zustände:
- Gehe das Flussdiagramm von oben nach unten durch und überlege dir, welche Anweisungen ausgeführt werden und warum. Wenn möglich, zeichne den „Weg durch das Diagramm“ ein.
- Gehe parallel das Programm durch und begründe dabei an allen Fallunterscheidungen, welche Zeile warum als nächstes ausgeführt wird. Notiere dir für die drei Fälle, welche Zeilen in welcher Reihenfolge ausgeführt werden.