Skip to content

2.7 Übungsprojekt: Robotersteuerung

Verknüpfung von Bedingungen

Bedingungen können durch logischen Operatoren modifiziert werden. Die NICHT-Verknüpfung dient zur Negierung einer Bedingung, die UND- und ODER-Verknüpfungen dienen zur Kombination von zwei Bedingungen.

Die NICHT-Verknüpfung

Mit ! (NICHT) wird eine Bedingung negiert. Es wird also überprüft, ob die Bedingung nicht erfüllt ist.

    while(!(x < 8)) {
	
}   
            
                    
        

Wird ausgeführt, solange der Wert von x nicht kleiner als 8 ist.

Die UND-Verknüpfung

Werden zwei Bedingungen mit && (UND) verknüpft, müssen beide Bedingungen erfüllt werden, damit der gesamte Ausdruck true ergibt. Wenn nur eine der mit && verknüpften Bedingungen false ergibt, ergibt die gesamte Bedingung false.

    while(x < 10 && x < 30) {
	
}   
            
                    
        

Wird ausgeführt, solange x größer als 10 und kleiner als 30 ist.

Die ODER-Verknüpfung

Werden zwei Bedingungen mit || (ODER) verknüpft, muss mindestens eine der beiden Bedingungen wahr sein (es können also auch beide wahr sein), damit der gesamte Ausdruck true ergibt.

    while(x == 10 || x < 5) {
	
}   
            
                    
        

Wird ausgeführt, solange x gleich 10 oder kleiner als 5 ist.

Vorrangregeln

Werden mehrere Bedingungen mit verschiedenen logischen Operatoren verknüpft, hat man das gleiche Problem wie bei Rechentermen, in denen sowohl Punkt- als auch Strichrechnungen vorkommen: Bei der Rechnung 7 + 3 * 5ist festgelegt, dass zuerste die Multiplikation 3 * 5 ausgeführt wird, bevor die Summe gebildet wird. Die Vorrangregel „Punkt vor Strich“ sichert die Eindeutigkeit des Ergebnisses, das ein Rechenausdruck liefert.

Damit auch bei Bedingungen die Eindeutigkeit sichergestellt ist, gelten hier die folgenden Vorrangregeln: NICHT vor UND vor ODER. Das heißt: Bedingungen, die mit einem UND verbunden sind, sind stärker aneinander gebunden als Bedingungen, die mit einem ODER verknüpft werden. Möchte man diese Vorrangregeln umgehen, hat man die gleiche Möglichkeit wie bei Rechenausdrücken: Durch das Setzen von Klammern kann die gewohnte Vorrangregel außer Kraft gesetzt werden. Es gilt also: „Klammern vor NICHT vor UND vor ODER“.

Öffne in Bluej das Projekt Roboter und darin die Klasse Robotersteuerung. In den verschiedenen Methoden aufgabe1 bis aufgabe6b kann der Roboter robo programmiert werden. Die Methoden, die der Roboter bereitstellt, finden sich in der Dokumentation. Du kannst auch die Tipps und Hinweise zur Lösung in Form von Struktogrammen nutzen.

2.7 Robotersteuerung

1. Quelltext analysieren
In der Klasse Robotersteuerung ist bereits ein Beispiel programmiert. Versehe die einzelnen Zeilen mit Kommentaren und beschreibe abschließend, wie der Roboter die Kugeln sortiert. Du kannst das Programm auch ausführen, wenn du das Vorgehen des Roboters nicht anhand des Quelltextes interpretieren kannst.

2. Verändern des Quelltextes
Verändere den Quelltext des Beispiels so, dass die Sortierung nicht anhand der Zahl, sondern anhand der Farbe erfolgt. Grüne und rote Kugeln sollen in den einen, alle anderen Kugeln in den anderen Behälter sortiert werden.

3. Volle Behälter

  1. In beide Behälter passen 10 Kugeln. Daher sollen die ersten zehn Kugeln in den ersten Behälter und die restlichen zehn Kugeln in den zweiten Behälter sortiert werden.
  2. Es sollen nur die ersten zehn Kugeln sortiert werden. Sie sollen immer abwechselnd in den linken und rechten Behälter sortiert werden.

4. Kombination von Kriterien
Es sollen alle Kugeln sortiert werden. Die Kugeln sollen in den rechten Behälter geworfen werden, es sei denn, sie haben die Farbe blau oder gelb und gleichzeitig die Nummer 1 oder 2.

Hinweis

Indem man Bedingungen verknüpft, lassen sich die Aufgaben mit relativ wenig Aufwand lösen. Bedenke auch die Vorrangregeln für logische Operatoren!

Zusatzaufgaben

5. Abbruchbedingungen
Es soll so lange sortiert werden (gerade Kugeln rechts, ungerade Kugeln links), bis eine blaue Kugel aufgenommen wird.

  1. Diese Kugel soll der Roboter nicht mehr sortieren.
  2. Diese Kugel soll in den linken Behälter sortiert und dann die Sortierung in der Ausgangsposition beendet werden.

6. Kugeln zählen
Bei den folgenden Aufgaben können Variablen helfen, um sich die Anzahl oder eine bestimmte Reihenfolge von Kugeln zu merken.

  1. Der Roboter soll so lange die Kugeln sortieren (alle in den rechten Behälter), bis sich insgesamt drei Kugeln mit einer 1 im rechten Behälter befinden.
  2. Der Roboter soll so lange die Kugeln sortieren (alle in den linken Behälter), bis eine Kugel mit der Nummer 1 und eine Kugel mit der Nummer 2 aufeinander folgen. Nachdem er diese eingeworfen hat, soll er die Ausführung stoppen.

Tipp: Nutze Variablen, um Informationen über die Anzahl oder die Nummer vorheriger Kugeln zu speichern.
Nutze die Methode fuegeKugelHinzu(int pNummer, String pFarbe), um Kugeln zur Kugelrampe hinzuzufügen, die genau diesen Kriterien entsprechen. Damit kannst du die Abbruchbedingung testen.