Bedingte Ausführung

IF ... THEN ... ELSE Syntax IF <Bedingung> THEN <Anweisungen> END
oder
IF <Bedingung> THEN <Anweisungen> ELSE <Anweisungen> END
oder
IF <Bedingung> THEN <Anweisungen> ELSIF <Bedingung> THEN <Anweisungen> ELSIF <Bedingung> THEN <Anweisungen> ELSE <Anweisungen> END
Beispiele
IF  k#0  THEN
     m := n DIV k;
END;
Die Division wird nur ausgeführt,
wenn der Wert der Variablen k ungleich 0 ist
IF  k#0  THEN
     m := n DIV k;
ELSE  HALT(1);
END;
Wenn k den Wert 0 hat,
wird das Programm abgebrochen.
(Für Testzwecke häufig verwendet)
IF  k=0  THEN  HALT(1)
END;
m := n DIV k;
Gleichwertig. Die kritische Stelle
wird nach dem Abbruch nicht
mehr erreicht.
IF  k=0  THEN  HALT(1)
ELSIF  k=1  THEN
     m:=n
ELSIF  k=n  THEN
     m:=1
ELSE
     m := n DIV k;
END;
CASE Syntax CASE  <Ausdruck> OF  <Fallliste> : <Anweisungen> ELSE <Anweisungen> END;
oder
CASE  <Ausdruck> OF  
   <Fallliste> : <Anweisungen> ;
|  <Fallliste> : <Anweisungen> ;   (*auch mehrfach*)
ELSE <Anweisungen>
END;
Beispiel
D.ReadChar(c);
CASE  c  OF
     '0'..'9' : D.WriteStr("Ziffer");
 |   'A'..'Z' : D.WriteStr("Großbuchstabe");
 |   'a'..'z' : D.WriteStr("Kleinbuchstabe");
ELSE  D.WriteStr("sonstiges Zeichen");
Unterscheidet die verschiedenen Zeichen
Anmerkungen Abhängig vom Wert des Ausdrucks nach CASE wird zur passenden CASE-Marke verzweigt. Dabei gelten folgende Regeln:
  • Die Marken müssen konstante Ausdrücke enthalten und den richtigen Datentyp haben. Möglich sind ganzzahlige Datentypen und der Typ CHAR.
  • Mehrere Marken können durch ".." oder durch "," zusammengefaßt werden
  • Die einzelnen Alternativen müssen durch " | " voneinander getrennt werden
  • Die einzelnen Bereiche dürfen sich nicht überschneiden
  • Gibt es keine passende Übereinstimmung, wird der ELSE-Zweig betreten. Fehlt er in diesem Fall, wird das Programm mit einer entsprechenden Meldung abgebrochen.