if else
Die
einfache Gabelung eines Programmflusses in zwei Richtungen erfolgt
mittels der if/else-Struktur.
Die
allgemeine Syntax lautet:
if(
expression
) statement
bzw.
in
erweiterter Form mit else-Zweig:
if
( expression
) statement
else
statement
Untersuchen
wir ein erstes Beispiel:
if
( i >
0 )
{
a = b;
c = d;
}
else
{
a = b + 1;
c = d + 1;
}
Hier
wird
aufgrund des Ausdrucks i>0 eine Entscheidung
getroffen. Ist dieser
Ausdruck "wahr", dann wird der if-Zweig
ausgeführt, ist der Ausdruck "falsch", dann wird der else-Zweig, falls vorhanden, ausgeführt.
Der
else-Zweig ist optional. Eine if-Kontrollstruktur
ohne else könnte z.B. folgendes sein:
if
( i > 0 )
{
a = b;
}
Ist
der
Ausdruck i>0
"wahr", dann wird der if-Zweig ausgeführt,
ansonsten wird er nicht ausgeführt.
Man
kann
die geschweiften Klammern in diesem einfachen Fall auch weglassen:
if
( i >
0 ) a = b;
Was ist das?
if
( i ) a = b;
Dies
ist
ein oft anzutreffender Fall, der Anfänger irritieren kann. Gehen wir
logisch
vor. Wenn i ungleich 0 ist, ist der Ausdruck in den Klammern "wahr".
Wenn der Ausdruck in den Klammern wahr ist, wird die Anweisung bzw. der
Anweisungsblock im if-Zweig ausgeführt.
Wollen
wir
das Gegenteil, dann schreiben wir:
if
( i == 0
) a = b;
oder negiert:
if
( !i ) a = b;
Achten
Sie
unbedingt auf das doppelte Gleichheitszeichen, wenn die Prüfung auf
Gleichheit
gemeint ist.
Das
einfache Gleichheitszeichen ist der Zuweisungsoperator.
Was passiert, wenn wir
das doppelte Gleichheitszeichen
vergessen?
if
( i = 0 ) a = b;
Hier
wird i
der Wert 0 zugewiesen. Damit ist i gleich 0, und der Klammerausdruck
wird "unwahr". Also
wird der if-Zweig
nicht ausgeführt. Das ist genau das Gegenteil dessen, was wir
beabsichtigen. Solche Fälle kann der
Compiler nicht als Fehler erkennen, denn dies ist logischer Fehler, und
dafür
ist der Programmierer zuständig.
Es
ist also
Ihre Aufgabe, derartige Programmfehler zu vermeiden!