9.1 Bedingte Verarbeitung

Aufgabe

Aufgabe 9-1: Szenario – „Plötzlicher Erdrutsch“

Ziel des vierten Szenarios ist es, dass ein Roboter von Feld (1; 2) startend das Zielfeld (4; 1) erreicht.

img/9_1_Spielbrett_s4.jpg
Abb. 9-1: Spielbrett s4

Allerdings ist unklar, ob der auf dem Feld (3; 2) niedergegangene Steinschlag bereits beseitigt worden ist. Der Roboter soll daher zunächst zum Feld (2; 2) fahren und dort prüfen, ob das Feld unmittelbar vor ihm frei ist.

Der Roboter kann mit Hilfe seines Attributs sensorFront auf eine Sensor-Objekt zugreifen, welches das Feld direkt vor dem Roboter untersuchen kann. Nutzen Sie die Methode istWegFrei() der Klasse Sensor, um festzustellen, ob das Feld unmittelbar vor dem Roboter frei ist. Ist dies der Fall gibt die Methode den Wert true zurück, andernfalls den Wert false.

Falls der Weg frei ist, soll der Roboter zum Zielfeld (4; 1) fahren. Ist der Weg noch blockiert, endet sein Auftrag und er soll vor dem Steinschlag stehenbleiben.

img/Abb_9_2_UML_Roboter.svg
Abb. 9-2: Klasse Roboter und Klasse Sensor (UML)
Aufgabe
  1. Informieren Sie sich zunächst über die bedingte Verarbeitung (vgl. „Merke: bedingte Verarbeitung“).
  2. Erstellen Sie dann ein Struktogramm der Methode steuereRobi(). Lösung
    img/Abb_9_3_Aufgabe_9_1_Struktogramm.svg
    Abb. 9-3: Struktogramm der Methode steuereRobi()
  3. Erstellen Sie anschließend den Quellcode der Klasse SzenarioAufgabe9_1. Lösung
    JAVA
    package welt;

    public class SzenarioAufgabe9_1 implements Szenario{

        private String name = "Aufgabe 9-1: Szenario – „Plötzlicher Erdrutsch“";
        private Roboter robi;

        @Override
        public void erstelleRobi(Spielbrett ausgewaehltesSpielbrett){
            robi = new Roboter ();
            robi.starteAufFeld(1, 2, ausgewaehltesSpielbrett);
        }

        @Override
         public void steuereRobi() {
            robi.gehVorwaerts();
            if(robi.getSensorFront().istWegFrei()) {
                robi.gehVorwaerts();
                robi.gehVorwaerts();
                robi.drehLinks();
                robi.gehVorwaerts();

            }

        }

        @Override
        public String getName() {
            return name;
        }

    }
    Abb. 9-4: Klasse SzenarioAufgabe9_1 (Quellcode)

Eine bedingte Verarbeitung ist ein Programmabschnitt, der nur ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist.

Die Bedingung wird in Form eines booleschen Ausdrucks formuliert. Ein boolescher Ausdruck ist ein Ausdruck, dessen Auswertung einen Wert des Typs boolean ergibt, das heißt, entweder true oder false. Anstelle von booleschem Ausdruck wird auch der Begriff logischer Ausdruck verwendet.

img/Abb_9_5_Struktogramm_bedingte_Anweisung.svg
Abb. 9-5: Bedingte Verarbeitung (Struktogramm)
JAVA
if( boolescher_Ausdruck ) {
    // Anweisungen, die ausgeführt werden sollen,
    // wenn boolescher_Ausdruck wahr ist.
}
Abb. 9-6: Bedingte Verarbeitung (Quellcode)
boolescher Ausdruck Erläuterung
buch.isAusleihbar() Methode, die als Antwort einen Wert des Typs boolean zurückgibt.
ausleihbar Variable vom Typ boolean.
anzahl >= 100 Ungleichung
alter == 18 Gleichung
Abb. 9-7: boolesche Ausdrücke (Beispiele)
Merke: bedingte Verarbeitung