Entscheidungen Ein-
und zweiseitige Entscheidungen ähneln den entsprechenden Konstrukten in anderen
Programmiersprachen. Der boolesche Ausdruck, der über die Ausführung des nachfolgenden
Anweisungsblocks entscheidet, steht in Klammern. Danach folgt unmittelbar (also ohne das
für PASCAL übliche "then") der
Anweisungsblock. Bei zweiseitigen Entscheidungen folgt das Schlüsselwort else und ein weiterer Anweisungsblock.
Beispiele
Einseitige Entscheidungen:
if (<boolescher Ausdruck>) {
<Anweisungsfolge> }
Beispiel:
if (i<5) { stift.schreibe("i ist kleiner als 5");}
Zweiseitige Entscheidungen
if (<boolescher Ausdruck>)
{ <Anweisungsfolge> } else
{ <Anweisungsfolge> }
if ((i<5)
{
stift.schreibe("i ist kleiner als 5");
} else
{
stift.schreibe("i ist größer oder gleich 5");
}
Mehrseitige Entscheidungen
Mehrseitige Entscheidungen generiert man mit Hilfe der switch-Anweisung.
Die Konstruktion ähnelt sehr der Case-Anweisung in
PASCAL, weist aber einige wichtige semantische Unterschiede auf:
Mit Hilfe der switch-Anweisung kann über den Wert
eines Selektors bestimmt werden, welche Anweisungen ausgeführt werden sollen. Zulässige
Ausdrücke für den Selektor sind nur solche, die Werte der Typen int,
char, byte oder short liefern. Jede Möglichkeit wird über eine mit dem
Schlüsselwort case eingeleitete Marke erreicht. Optional
kann eine default-Marke angegeben werden.
switch (<Ausdruck>) {
case <wert> : <Anweisungsfolge>
case <wert> : <Anweisungsfolge>
...
case <wert> : <Anweisungsfolge>
default: <Anweisungsfolge>
}
!Achtung !:Bei der Ausführung der switch-Anweisung wird die passende Marke
angesprungen. Es werden anschließend alle folgenden Anweisungen ausgeführt, auch
die, die hinter den nachfolgenden Marken stehen, es sei denn, die Anweisung break wird erreicht. Um die case-Anweisung
von PASCAL zu imitieren, wird man also hinter die Anweisungsfolge jeder Marke eine break-Anweisung setzen.
Beispiel:
Diese folgende switch-Anweisung liefert die Ausgabe "fünf".
i= 5;
switch (i)
{
case 3: stift.schreibe("drei");break;
case 4: stift.schreibe("vier");break;
case 5: stift.schreibe("fünf");break;
case 6: stift.schreibe("sechs");break;
default : stift.schreibe("mehr als sechs oder weniger als drei");
}
Anders ist dagegen das Ergebnis von:
i= 5;
switch (i)
{
case 3: stift.schreibe("drei");
case 4: stift.schreibe("vier");
case 5: stift.schreibe("fünf");
case 6: stift.schreibe("sechs");
default : stift.schreibe("mehr als sechs oder weniger als drei");
}
Jetzt erhält man die Ausgabe:
"fünf sechs mehr als sechs oder weniger als
drei" |