| 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.
|