LÖSUNG AUFGABE 2.01
LÖSUNG AUFGABE 2.02
LÖSUNG AUFGABE 2.03
-
Beschreiben Sie zuerst mit Worten, was die folgenden Codebeispiele bewirken.
Nimmt ein Blatt weg, wenn es eines hat, legt ein Blatt hin, wenn keines dort ist (Invertieren). -
Skizzieren Sie es als Flussdiagramm.
LÖSUNG AUFGABE 2.04
-
Beschreiben Sie zuerst mit Worten, was die folgenden Codebeispiele bewirken.
Wenn Kara auf einem Blatt ist, geht er einen Schritt vorwärts. -
Skizzieren Sie es als Flussdiagramm.
LÖSUNG AUFGABE 2.05
-
Beschreiben Sie zuerst mit Worten, was die folgenden Codebeispiele bewirken.
Nimmt das Blatt auf, wenn links ein Baum steht. -
Skizzieren Sie es als Flussdiagramm.
LÖSUNG AUFGABE 2.06
public void act() { if (treeFront()) { goAroundTree(); } else { move(); } if (onLeaf()) { removeLeaf(); stop(); } } public void goAroundTree() { turnLeft(); move(); turnRight(); move(); move(); turnRight(); move(); turnLeft(); }
LÖSUNG AUFGABE 2.07
public void act() { if (treeLeft()) { move(); } else { if (onLeaf()) { removeLeaf(); move(); } else { move(); } } }
LÖSUNG AUFGABE 2.08
public void act() { if (treeLeft() && treeRight()) { putLeaf(); stop(); } else { move(); } }
LÖSUNG AUFGABE 2.09
public void act() { if (treeLeft() || treeRight()) { putLeaf(); move(); } else { move(); } if (onLeaf()) { stop(); } }
LÖSUNG AUFGABE 2.10
public void act() { if (!onLeaf()) { putLeaf(); } if (!treeFront()) { move(); } else { stop(); } }
LÖSUNG AUFGABE 2.11
public void act() { if (onLeaf()) { removeLeaf(); } else { if (!treeFront()) { move(); } else { if (!treeLeft()) { turnLeft(); move(); } else { turnRight(); move(); } } } }
LÖSUNG AUFGABE 2.12
public void act() { if (!treeFront()) { removeLeaf(); findNextLeaf(); } else { removeLeaf(); stop(); } } public void findNextLeaf() { // Erst mal vorne schauen. move(); if (!onLeaf()) { // Kein Blatt vorne, also zurueck und links schauen. turnAndGoBack(); turnRight(); move(); if (!onLeaf()) { // Links ist auch kein Blatt; dann muss es rechts liegen. turnAndGoBack(); move(); } } } public void turnAndGoBack() { turnLeft(); turnLeft(); move(); }
LÖSUNG AUFGABE 2.13
# | Code | Description | Steps |
---|---|---|---|
a. | while (treeLeft()) { move(); } |
Solange links ein Baum steht, mache einen Schritt. | 4 | Solange rechts ein Baum steht, mache einen Schritt. | 0 | Solange entweder links oder rechts ein Baum steht, mache einen Schritt. | 5 | Zuerst ein Schritt, wenn links ein Baum. Solange links und rechts ein Baum steht, ma-che einen Schritt. | 4 | Solange kein Baum vor Kara steht: Wenn links ein Baum, mache einen Schritt.
Achtung: Endlosschleife |
4 |
LÖSUNG AUFGABE 2.14
public void act() { while (!onLeaf()) { if (treeFront()) { goAroundTree(); } else { move(); } } // Blatt gefunden --> essen. removeLeaf(); stop(); } public void goAroundTree() { turnLeft(); move(); turnRight(); move(); while (treeRight()) { move(); } turnRight(); move(); turnLeft(); }
LÖSUNG AUFGABE 2.15
public void act() { while (treeFront()) { oneStepUp(); } stop(); } public void oneStepUp() { turnLeft(); move(); turnRight(); move(); }
LÖSUNG AUFGABE 2.16
public void act() { makeOneStep(); } public void makeOneStep() { if (!treeRight()) { // Kein Baum rechts --> gehe nach rechts. turnRight(); move(); } else { // Baum rechts. if (!treeFront()) { // Kein Baum vorne --> vorwärts gehen. move(); } else { // Bäume rechts und vorne. if (!treeLeft()) { // Kien Baum links --> gehe nach links. turnLeft(); move(); } else { // Bäume rechts, vorne und links: Sackgasse. turnLeft(); turnLeft(); move(); } } } }