RUB »  Rechenzentrum » Internetdienste » CMS Imperia » Dokumentation

Fallunterscheidung

Eine Fallunterscheidung bzw. Abfrage ist dazu da, um zwischen zwei oder mehreren Fällen zu verzweigen.
Ein einfaches Beispiel:
Wenn es regnet, gehe ich nicht raus.
Man könnte die Abfrage auch negieren:
Wenn es nicht regnet, gehe ich raus.

Wie setzt man das nun in Imperia um?
Dazu gibt es die IF-Abfrage. Diese ist in Imperia immer wie folgt aufgebaut:

#IF ([logischer Ausdruck])
[Anweisungen]
#ENDIF

Die einzelnen Elemente erklärt:
Mit "#IF" wird die Abfrage gestartet. Dahinter wird in Klammern der Bedingungsblock geschrieben, in welchem eine Überprüfung stattfindet.
In der darauf folgenden Zeile stehen die Anweisungen, welche ausgeführt werden sollen, wenn der logische Ausdruck wahr ist.
Mit #ENDIF wird die Fallunterscheidung abgeschlossen.

Die zwei Beispiele als Pseudo-Code:

#IF ($Regen EQ "wahr")
Nicht rausgehen
#ENDIF

#IF ($Regen EQ "falsch")
rausgehen
#ENDIF

Wenn Sie angeben möchten, was in dem Fall getan werden soll wenn der abgefragt Fall nicht eintritt, können Sie das mit einer #ELSE Verzweigung realisieren.
Mit dem Beispiel von oben:
Wenn es regnet, gehe ich nicht raus, ansonsten schon.
Wenn man die Abfrage negiert:
Wenn es nicht regnet, gehe ich raus, ansonsten nicht.

Dies würde dann im Pseudo-Code folgender Maßen aussehen:

#IF ($Regen EQ "wahr")
Nicht rausgehen
#ELSE
rausgehen
#ENDIF

#IF ($Regen EQ "falsch")
rausgehen
#ELSE
Nicht rausgehen
#ENDIF

Mit #ELSE springen Sie also in den Fall, wenn der Bedingungsblock falsch zurückliefert.

Möchte man mehrere Fälle verzweigen so ist es möglich diese mittels #ELSIF abzufragen.
Einfaches Beispiel:
Wenn heute Montag ist, dann Kopf in den Sand stecken.
Wenn heute Freitag ist, dann auf das Wochenende freuen.
Wenn heute Sonntag ist, sich mental auf Montag vorbereiten.
An allen anderen Tagen, sei du selbst.

Als Pseudo-Code würde das Beispiel, wie folgend aussehen:

#IF ($Heute EQ "Montag")
Kopf in den Sand stecken
#ELSIF ($Heute EQ "Freitag")
Juhu, Wochenende!
#ELSIF ($Heute EQ "Sonntag")
Das Wochenende ist immer viel zu schnell vorbei.
#ELSE
irgendwie wird es schon weitergehen
#END

Der Bedingungsblock

Der Bedingungsblock überprüft zwei "Aussagen" miteinander und gibt true bzw. false (wahr oder falsch) zurück, je nachdem welcher Komparator (Vergleichsoperator) zwischen diesen "Aussagen" steht.
So würde die Abfrage #IF(1 < 5) [In Worten: Ist eins kleiner als fünf?] true zurück liefern, aber die Abfrage #IF(1 > 5) [In Worten: Ist eins größer als fünf?] false.
Wenn true zurück geliefert wird, wird die erste Anweisung ausgeführt. Falls false zurück geliefert wird, wird die Anweisung nach #ELSE ausgeführt.

Der Komparator

In Imperia muss unterschieden werden, ob Zahlen oder Zeichenketten im logischen Ausdruck überprüft werden sollen. Je nach dem ändert sich der Komparator. Zu den Zahlen gehören auch die logischen Zustände true und false. Hier alle möglichen Varianten:

  • Um abzufragen, ob zwei Zahlen gleich sind, notieren Sie zwei Gleichheitszeichen == nebeneinander.
  • Um abzufragen, ob zwei Zahlen unterschiedlich sind, notieren Sie zwischen beiden Werten die Zeichen !=.
  • Um abzufragen, ob eine Zahl größer oder gleich ist als eine andere, notieren Sie die Zeichen >=.
  • Um abzufragen, ob eine Zahl in jedem Fall größer ist als eine andere, notieren Sie das Zeichen >.
  • Um abzufragen, ob eine Zahl kleiner oder gleich ist als eine andere, notieren Sie die Zeichen <=.
  • Um abzufragen, ob eine Zahl in jedem Fall kleiner ist als eine andere, notieren Sie das Zeichen <.

  • Um abzufragen, ob zwei Zeichenketten gleich sind, notieren Sie EQ zwischen den beiden Werten, die verglichen werden sollen (EQ = equal = gleich).
  • Um abzufragen, ob zwei Zeichenketten unterschiedlich sind, notieren Sie NE zwischen den beiden Werten, die verglichen werden sollen (NE = not equal = nicht gleich).
  • Um abzufragen, ob zwei Zeichenketten gleich sind, dabei jedoch auf Groß-/Kleinschreibung nicht geachtet werden soll, notieren Sie CEQ zwischen den beiden Werten, die verglichen werden sollen.
  • Um abzufragen, ob zwei Zeichenketten unterschiedlich sind, dabei jedoch auf Groß-/Kleinschreibung nicht geachtet werden soll, notieren Sie NCE zwischen den beiden Werten, die verglichen werden sollen.
  • Um einen Wert mit einem regulären Ausdrcuk zu vergleichen, notieren Sie REQ zwischen den beiden Werten.
  • Um abzufragen, ob eine erste Zeichenkette alphabetisch weiter hinten liegt als eine zweite, notieren Sie GT zwischen den beiden Werten, die verglichen werden sollen (GT = greater than = größer als).
  • Um abzufragen, ob eine erste Zeichenkette alphabetisch weiter vorne liegt als eine zweite, notieren Sie LT zwischen den beiden Werten, die verglichen werden sollen (LT = less than = kleiner als).
  • Um abzufragen, ob eine erste Zeichenkette alphabetisch gleich ist wie eine zweite oder weiter hinten liegt, notieren Sie GE zwischen den beiden Werten, die verglichen werden sollen (GE = greater or equal = größer oder gleich).
  • Um abzufragen, ob eine erste Zeichenkette alphabetisch gleich ist wie eine zweite oder weiter vorne liegt, notieren Sie LE zwischen den beiden Werten, die verglichen werden sollen (LE = less or equal = kleiner oder gleich).

Verknüpfungen

Sie können logische Ausdrücke auch verknüpfen um so eine bessere bzw. genauere Auswahl zu treffen.
Beispiel:
Wenn die Sonne scheint UND über 30°C sind, dann ins Freibad ansonsten nicht ins Freibad.
Als Pseudo-Code:

#IF (($Sonne EQ "wahr") AND ($Temp >= 30))
ins Freibad
#ELSE
nicht ins Freibad
#ENDIF

Sie können beliebig viele Ausdrücke miteinander verknüpfen.
Für die Verknüpfung werden die logische Operatoren benötigt.
Es gibt vier Stück davon:

  • Mit dem logischen Operator AND verknüpfen Sie zwei oder mehrere Bedingungen durch "und", d.h. beide bzw. alle Bedingungen müssen erfüllt sein, damit die gesamte Bedingung erfüllt ist.
  • Mit dem logischen Operator OR verknüpfen Sie zwei oder mehrere Bedingungen inklusiv durch "oder", d.h. es genügt, wenn eine der Bedingungen erfüllt ist, damit die gesamte Bedingung erfüllt ist.
  • Mit dem logischen Operator XOR verknüpfen Sie zwei oder mehrere Bedingungen exklusiv durch "oder", d.h. es muss entweder die eine oder die andere Bedingungen erfüllt sein, damit die gesamte Bedingung erfüllt ist.
  • Mit dem logischen Operator NOT verneinen Sie eine nachfolgende Bedingung, d.h. Sie fragen nicht, ob die Bedingung wahr ist, sondern ob sie falsch ist.