Spezialfälle bedingter Anweisungen
Einseitige Auswahl
Beispiel: Viele Ziegel
Karol bekommt den Auftrag insgesamt einhundert Ziegel abzulegen. Da er nicht so hoch reicht, kann er sie nicht alle vor sich aufstapeln. Deshalb legt er sie hintereinander. Dabei muss er aufpassen, dass er nicht an eine Wand stößt. Außerdem soll Karoll am Anfang nicht vor einer Wand stehen.
Überlegen Sie, wie eine Lösung unseres Problems aussehen könnte.
Ein Lösungsvorschlag könnte folgendermaßen aussehen:
Struktogramm | Anweisungstext |
![]() |
![]() |
Auffällig im Vergleich zu den zweiseitigen Anweisungen ist, dass Karol nur dann auf die Überprüfung der Bedingung reagieren muss, wenn er tatsächlich vor einer Wand steht. Steht er hingegen nicht vor einer Wand, braucht er auch nicht zu reagieren und fährt ganz einfach mit der weiteren Ausführung des Programms fort. Diesen Spezialfall einer bedingten Anweisung nennt man eine einseitige Entscheidung. Der sonst-Teil der zweiseitigen Entscheidung wird nicht benötigt und im Programmtext einfach weggelassen.
Eine bedingte Anweisung heißt einseitig, wenn der sonst-Teil fehlt. Falls die Bedingung "falsch" ist, wird die Sequenz 1 im Programmablauf übergangen.
Struktogramm | Anweisungstext |
![]() |
![]() |
Aufgaben zur einseitigen Entscheidung
Übung 1: Reihe mit Löchern
Entwerfen Sie eine Folge von Anweisungen, mit der Karol von seiner momentanen Position ausgehend, eine Ziegelreihe zur gegenüberliegenden Wand legt. Dabei soll er nur auf jedes zweite Feld einen Ziegel ablegen (siehe Abbildung rechts). Testen Sie Ihre Lösung, wenn Karol eine geradzahlige Anzahl von Feldern bzw. eine ungeradzahlige Anzahl von Feldern vor der Wand steht. | ![]() |
Übung 2: Im Sumpf
Karol soll über Ziegelwege aus einem Sumpf herausfinden (siehe Abbildung rechts). Damit er an den Abbiegungen und Abzweigungen weiß wie er gehen muss, hat ein Freund vorher den Weg erkundet. Wenn der Weg nach links führt, hat das Abzweigungsfeld bzw. die Kurve eine Markierung, sonst nicht. Erstelle ein Programm, das Karol wieder aus dem Sumpf führt. Eine vorgefertigte Welt finden Sie hier. Hinweis: Achten Sie darauf, dass Karol richtig reagiert, wenn er das Ende des Weges erreicht hat und nicht wieder zurück in den Sumpf läuft. |
![]() |
Verschachtelte bedingte Anweisungen
Auswahlanweisungen lassen sich, ähnlich wie Wiederholungsanweisungen, schachteln.
Karol soll ein beliebiges Grundstück umrunden, das durch Ziegelsteine eingezäunt ist. Die Felder mit den Ziegelsteinen haben mindestens eine Seite gemeinsam (siehe Abbildung rechts). Dazu muss eine Strategie entwickelt werden, die Karol dazu bringt, bei einem beliebigen Grundstück immer am Zaun entlang zu laufen. Aufgabe: Beschreiben Sie die verschiedenen Situationen, die auf Karols Weg um das Grundstück auftreten können. Überlegen Sie wie Karol in der jeweiligen Situation reagieren muss. |
![]() |
Karol muss unterwegs immer auf zwei Bedingungen achten:
- Befindet sich rechts ein Hindernis?
- Befindet sich vor ihm ein Hindernis?
Umgangssprachlich formuliert muss die Lösung für das Problem folgendermaßen lauten:
- Wenn die erste Bedingung "wahr" ist, muss noch die zweite Bedingung geprüft werden.
- Wenn die zweite Bedingung "wahr" ist, dann dreht sich Karol nach links, sonst geht er einen Schritt geradeaus.
- Wenn die erste Bedingung "falsch" ist, dann dreht sich Karol nach rechts und geht anschließend einen Schritt vorwärts.
Das Struktogramm unserer Lösungsstrategie sieht folgendermaßen aus:

Man spricht hier von einer verschachtelten Anweisung, da sich die zweite bedingte Anweisung völlig in der Anweisungsfolge des dann-Teils der ersten bedingten Anweisung befindet. Natürlich wäre es auch denkbar, dass sie sich im sonst-Teil der ersten bedingten Anweisung befindet.
Damit Karol immer wieder um das Hindernis rennt, sollen die bedingten Anweisungen in eine Endlosschleife eingebettet werden (Anweisungstext siehe rechts). | ![]() |
Um zu prüfen, ob sich rechts von Karol ein Ziegel befindet, ist ein neues Prädikat IstRechtsZiegel notwendig. Den Anweisungstext dieses Prädikats sehen Sie rechts dargestellt. | ![]() |
Aufgabe: Schreiben und testen Sie nun das Programm zur Umrundung des Hindernisses. Die vorgefertigte Welt finden Sie hier.
Eine Seite von Mirko Hans