Übungen – Wiederholungen
Aufgabe 1: while-Anweisung
In dieser Aufgabe betrachtest du näher, wann und wie oft ein Schleifenrumpf ausgeführt wird.
Betrachte das folgende Kara-Programm:
while not kara.treeFront():
kara.move()
(a) Was leistet dieses Programm? Teste es mit geeigneten Kara-Welten.
(b) Überlege dir, wie die Kara-Welt jeweils beschaffen sein muss, damit einer der folgenden Sonderfälle eintritt:
- Die Schleife wird überhaupt nicht durchlaufen.
- Kara gerät in eine Endlosschleife.
Aufgabe 2: Der Schleifenrumpf
In dieser Aufgabe wird genauer beleuchtet, was die Einrückung bei einer Schleife bewirkt. Außerdem werden Flussdiagramme geübt.
Worin besteht der Unterschied zwischen den folgenden Programmen?
Programm 1:
while not kara.treeFront():
kara.move()
kara.putLeaf()
Programm 2:
while not kara.treeFront():
kara.move()
kara.putLeaf()
(a) Verdeutliche den Unterschied anhand konkreter Situationen: Erstelle verschiedene Welten. Sage für jede Welt voraus, was in den beiden Programmen passieren muss, und probiere es aus.
(b) Zeichne für beide Situationen je ein Flussdiagramm und erläutere daran mitsamt einer konkreten Welt, wie sich die Programme unterscheiden. Achte darauf, dass du die Flussdiagramme richtig zeichnest.
Aufgabe 3: Ein Problem mit Wiederholungen lösen
In dieser Aufgabe wird ein Problem mit Wiederholungen gelöst, das über die Erkundung hinausgeht.
Kara steht im Eingang ihres/seines rechteckigen Baus. Kara soll in die hintere Ecke des Baus (siehe Abbildung) laufen. Beachte, dass der Kara-Bau verschiedene Ausmaße haben kann.
Aufgabe 4: Ein etwas schwierigeres Problem mit Wiederholungen lösen
In dieser Aufgabe wird ein Problem mit Wiederholungen gelöst, das über die Erkundung und Aufgabe 3 hinausgeht.
Kara soll einmal um ihren/seinen Bau laufen und den Weg mit Kleeblättern auslegen. Aber Achtung, der rechteckige Kara-Bau kann ganz unterschiedliche Ausmaße haben. Unten sind zwei mögliche Beispiele abgebildet.
Beschreibe zunächst deine Lösung in eigenen Worten. Übersetze sie dann in die Python-Sprache und teste sie.
Aufgabe 5: Zum Baum laufen – Vier Varianten
In dieser Aufgabe werden mit Wiederholungen Probleme gelöst, die schrittweise schwieriger werden. Bearbeite den Aufgabenteil, der dir am meisten zusagt.
Kara steht einige Felder von einem Baum entfernt, weiß aber nicht genau, wie viele es sind.
(a) Einfach: Schreibe ein Programm, sodass Kara geradeaus bis zum nächsten Baum läuft und den Weg mit Blättern auslegt. Unterwegs liegen keine Blätter.
(b) Fortgeschritten: Schreibe ein Programm, sodass Kara geradeaus bis zum nächsten Baum läuft und den Weg mit Blättern auslegt. Unterwegs können bereits Blätter liegen.
(c) Zum Knobeln: Schreibe ein Programm, das Folgendes bewirkt: Kara steht wieder auf dem gleichen Feld wie zu Beginn. Auf dem Feld vor dem Baum (und auch nur dort) liegt ein Blatt. Anfangs liegt nirgends ein Blatt.
(d) Zum Knobeln – komplizierter: Schreibe ein Programm, das Folgendes bewirkt: Kara steht wieder auf dem gleichen Feld wie zu Beginn. Auf dem Feld vor dem Baum (und auch nur dort) liegt ein Blatt. Anfangs können Blätter auf dem Weg liegen.
Aufgabe 6: if
und while
– einerlei?
In dieser Aufgabe vergleichst du Fallunterscheideungen und Wiederholungen mithilfe ihrer Flussdiagramme.
Jannik hat gerade angefangen, Programmieren zu üben. Er hat diese beiden Programme gefunden und meint: „Die machen bestimmt genau dasselbe, sie sehen ja fast gleich aus.“
(a) Erkläre kurz mit Fachbegriffen, worin sich die Programme unterscheiden.
(b) Zeichne zu beiden Programmen das passende Flussdiagramm und erkläre daran (bestenfalls einer anderen Person) den Unterschied.
(c) Wie oft wird der eingerückte Code mindestens durchlaufen? Wie oft maximal?
Programm 1:
if not kara.onLeaf():
kara.putLeaf()
kara.move()
Programm 2:
while not kara.onLeaf():
kara.putLeaf()
kara.move()
Aufgabe 7: Typische Fehler
In dieser Aufgabe geht es um typische Fehler im Zusammenhang mit Wiederholungen (und Fallunterscheidungen).
In jedem der folgenden Aufgabenteile hat sich ein Fehler eingeschlichen. Finde ihn. Erkläre, inwiefern etwas falsch ist, und korrigiere den Fehler. Sammle danach drei weitere Fehler, die man bei Wiederholungen und Fallunterscheidungen machen kann. Wenn du magst, erstelle ein Plakat mit den wichtigsten Fehlern, die man vermeiden muss.
(a) Betrachte folgendes Programm; Achtung – es gibt mehr als eine Möglichkeit, den Fehler zu korrigieren:
while not kara.onLeaf():
kara.putLeaf()
kara.move()
(b) Betrachte folgendes Programm:
while kara.onLeaf()
kara.removeLeaf()
kara.move()
(c) Betrachte folgendes Programm:
while kara.onLeaf():
kara.removeLeaf()
kara.move()
else:
kara.putLeaf()
(d) Betrachte folgenden kurzen Dialog:
A: „Das Programm darf nicht immer gleich verlaufen. Was genau geschieht, soll davon abhängen, ob Kara vor einem Baum steht oder nicht.“ – B: „Da brauchst du eine if-Schleife.“