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();
}
}
}
}