Zurück zur Einstiegsseite

Bedingte Anweisungen

Bei der Umsetzung von Zustandsübergangsdiagrammen in Automaten haben Sie vielleicht die bedingte Anweisung in Java bereits kennengelernt und verwendet.

Falls das nicht der Fall ist, überspringen Sie Aufgabe 1!

Arbeitsauftrag 1

In welchem Zusammenhang wurde die bedingte Anweisung bei der Implementierung von Zustandsübergangsdiagrammen benötigt?

Lösung

Sie kennen bedingte Anweisungen bereits aus der 7. und 9. Klasse.

Arbeitsauftrag 2

Interpretieren Sie folgende Anweisung bzw. Funktion:
Robot Karol (7.Jgst.) Bedingte Funktion (9.Jgst.)
Lösung Lösung

In Java gibt es nun ebenfalls eine bedingte Anweisung, die nach dem gleichen Prinzip abläuft. Lesen Sie auf Ihrem Java Überblick zunächst das Beispiel zum Abschnitt über bedingte Anweisungen und machen Sie sich anschließend noch einmal mit der Java-Syntax vertraut.

Ergänzen Sie nun Ihren Hefteintrag:

Bedingte Anweisung
  • Bei einer zweiseitig bedingten Anweisung wird, abhängig von einer Bedingung, eine von zwei möglichen Sequenzen ausgeführt.
  • Bei einer einseitig bedingten Anweisung wird, abhängig von einer Bedingung, nur eine Sequenz ausgeführt. Im Fall, dass die Bedingung false liefert, passiert nichts. In der Regel wird dies durch Weglassen des SONST-Teils (else-Teils) realisiert.

Bedingungen - wie war das gleich wieder?

Nun sollen Sie an einigen Übungen die bedingte Anweisung in Java anwenden:

Arbeitsauftrag 3

Karol soll so programmiert werden, dass er eine Steinreihe invertieren kann. Was das bedeutet, sehen Sie auf den beiden folgenden Bildern.

Er wandert zur Wand. Liegt ein Stein auf dem Feld vor ihn, so hebt er ihn auf, andernfalls legt er einen Stein ab.

„Bringen“ Sie Karol das Invertieren „bei“, indem Sie eine Methode invertieren() entwickeln! Das untere Struktogramm liefert Ihnen eine Hilfestellung.


Arbeitsauftrag 4

Betrachten Sie nun den untenstehenden Quelltext der Methode xxx.
a) Vervollständigen Sie dazu passend das Struktogramm. Nehmen Sie notfalls Ihren Java-Überblick zu Hilfe.

  public void xxx (int n)
  {
    for (int i=1; i<=n; i=i+1)
    {
      if (karol.IstWand())
      {
        karol.RechtsDrehen();
        karol.Hinlegen();
        karol.Schritt();
      }
      else
      {
        karol.Hinlegen();
        karol.Schritt();
      }
    }
  }
Lösung 4a

b) Was bewirkt diese Methode und was bedeutet der Eingangsparameter n?

c) Wieso benötigt man hier überhaupt eine bedingte Anweisung?

Testen Sie die Methode für verschiedene Startzustände von Karol, falls Sie keine Lösung für Aufgabe b) und c) finden

Lösung 4b Lösung 4c

Falls Sie zeitlich gut im Rennen liegen oder mehr üben wollen, können Sie noch die folgenden Zusatzaufgaben bearbeiten. Ansonsten haben Sie jetzt alle Algorithmik-Bausteine behandelt! An aufwendigeren Algorithmen können Sie nun noch Ihr Können überprüfen.

Zusatzaufgabe 1:

Karol steht vor einer "löchrigen" Ziegelreihe. Er wandert wieder zur Wand und soll die Lücken mit Steinen auffüllen. Entwickeln Sie eine entsprechende Methode reiheAuffuellen().

Lösung

Zusatzaufgabe 2:

Erstellen Sie eine Methode die folgendes macht:
  • erst die Methode spazieren() aufrufen 
  • dann von seiner Position aus eine Ziegelreihe bis zur nächsten Wand legen, aber nur an jeder zweiten Stelle soll ein Ziegel abgelegt werden.

Lösung

Zurück zur Einstiegsseite