Aufgabenstellung

Kara sucht den Eingang eines geraden Tunnels (Feld 2a). Schreiben Sie ein Programm, das ihn auf dem ersten Feld im Tunnelinnern anhalten lässt. Aber Achtung: manche Tunnels haben zunächst eine einseitige Wand, manche links, manche rechts.

Bild

Zur Lösung dieses Problems benötigen wir zwei andere Sensoren. Anstelle von kara.treeFront() benötigen wir kara.treeRight() und kara.treeLeft(), diese kombinieren wir wieder mit einer while-Schleife, da Kara so lange nach vorne laufen soll, bis er sowohl links als auch rechts von sich einen Baum stehen hat.

Dieses Problem führt auch den logischen UND-Operator ein, der in Java mit && implementiert ist.

public void myMainProgram() {  
    while (!(kara.treeLeft() && kara.treeRight())) {  
        kara.move();  
    }  
}

Ausdrücke (Expressions) befolgen die gleichen Regeln wie die arithmetischen Operatoren in der Mathematik. D.h. hier, dass zuerst der Ausdruck kara.treeLeft() && kara.treeRight() evaluiert wird, dieser gibt dann anhand der folgenden Wahrheitstabelle einen Wert zurück, der dann von dem !-Operator außerhalb der Klammern negiert wird.

kara.treeLeft()kara.treeRight()kara.treeLeft() && kara.treeRight()!(kara.treeLeft() && kara.treeRight())
falsefalsefalsetrue
falsetruefalsetrue
truefalsefalsetrue
truetruetruefalse

Aus dieser Tabelle lässt sich auch gut entnehmen, dass unser Program nur dann hält, wenn Kara am Tunneleingang steht.