Title: Eigene Bedingungen
Course: Gy 7, Inf, Robot Karol > Section: Eigene Bedingungen

Eigene Bedingungen

Du hast bereits sehr häufig mit vordefinierten Bedingungen,
wie NichtIstWand oder IstSüden gearbeitet. Die komplette
Palette aller vordefinierten Bedingungen - wie sie rechts
abgebildet ist - kann bei RobotKarol im Übersichtsbereich
eingesehen werden.

Zur Erinnerung:
Eine Bedingung liefert entweder Wahr oder Falsch.

Die Bedingung IstSüden liefert entweder Wahr oder Falsch.

Wahr: Karol blickt Richtung Süden.
Falsch: Karol blickt nicht Richtung Süden

Ein Programmtext um Karol - egal in welche Richtung er gerade
blickt - nach Süden schauen zu lassen könnte wie folgt aussehen:
wiederhole solange NichtIstSüden
    LinksDrehen
*wiederhole
Wie Du Dir sicher schon gedacht hast, funktioniert das Programm
leider nicht: RobotKarol kennt die Bedingung NichtIstSüden nicht.

Glücklicherweise kann man RobotKarol neben eigenen Methoden auch
eigene Bedingungen beibringen. Dabei greift man natürlich auf
vorhandene/vordefinierte Bedingungen zurück:

Zunächst überlegt man sich, in welchem Fall wahr und wann falsch
geliefert werden muss. In unserem Fall muss wie folgt sein:

NichtIstSüden liefert

Falsch, falls Karol nach Süden blickt,
Wahr, falls nicht Richtung Süden blickt
- also in alle sonstigen Richtungen.

Der zugehörige Programmtext dafür schaut also wie folgt aus:
Bedingung NichtIstSüden
    wenn IstSüden
      dann falsch
      sonst wahr
    *wenn
*Bedingung
Wie bei den eigenen Anweisungen/Methoden, reicht es eine
eigene Bedingung ganz am Anfang des Programmtextes zu
definieren, um sie dann später immer wieder verwenden zu
können.

Nachfolgend ist der komplette Programmtext für unser
Anfangsproblem zu finden; Karol soll sich nach Süden
drehen, egal in welche Richtung er im Moment schaut:
// Zunächst wird die eigene Bedingung
// NichIstSüden festgelegt

Bedingung NichtIstSüden
    wenn IstSüden
      dann falsch
      sonst wahr
    *wenn
*Bedingung

// Nun beginnt das Hauptprogramm:
// Karol dreht sich nach Süden, egal
// in welche Richtung er gerade blickt

wiederhole solange NichtIstSüden
    LinksDrehen
*wiederhole