next up previous contents
Nächste Seite: switches Aufwärts: Verzweigungen Vorherige Seite: Verzweigungen   Inhalt

if-Abfragen mit/ohne else-Zweig

Die einfache Verzweigung wird von dem Schlüsselwort if eingeleitet, auf das der kontrollierende Ausdruck (die Bedingung) in Klammern folgt. Ist der Wert dieses Ausdrucks nicht binär 0, so wird die folgende Anweisung ausgeführt, ansonsten wird sie übersprungen. Statt einer einfachen Anweisung kann auch, wie überall, ein Block (eine von {} eingeschlossene Folge von Anweisungen) oder wiederum eine Kontrollstruktur stehen.

Auf diese Anweisung kann eine weitere, ducrh das Schlüsselwort else eingeleitete Anweisung (Block,Kontrollstruktur) folgen, die sog. Alternative stehen. Diese wird immer dann ausgeführt, wenn die andere Anweisung nicht ausgeführt wurde, i.e. wenn der Wert der Bedingung 0 ( = in C logisch falsch) ist.

Beispiele:


if (i > 10000)
  printf("I ist zu gross\n");
...
...
if (a < 0)
  a = -a;
...
...
if(x == y)
   printf("X und Y sind gleich\n");
else
  printf("X und Y sind ungleich\n");

if-Konstruktionen können auch ,,verschachtelt`` werden:


if (a < b)
  if (c > d)
     printf("a ist kleiner als b, c ist groesser als d\n");
  else
     printf("a ist kleiner als b, c ist kleiner oder gleich d\n");
else
   printf("a ist groesser oder gleich b, von c und d wissen wir nichts\n");

..
..
if (a > b)
  printf("a ist groesser");
else 
  if (a < b)
    printf("a ist kleiner");
  else
    printf("a und b sind gleich");

Bei diesen Verschachtelungen ist zu beachten: jedes else bezieht sich immer auf das zuletzt genannte if. Dies sollte sich auch im Layout wiederspiegeln.

Das letztgenannte Beispiel, if-Abfrage im else-zweig gibt es in dieser Form sehr häufig und auch mit relativ tiefer Verschachtelung. In anderen Sprachen gibt es dafür sogar extra eine elsif-Konstruktion. In der Tat wird ja dabei, im Gegensatz zu der EInrückung, keine Tiefenstruktur aufgebaut. Üblicherweise schreibt man dieses Beispiel in C dann auch so:


if (a > b)
  printf("a ist groesser");
else if (a < b)
  printf("a ist kleiner");
else
  printf("a und b sind gleich");

um diesem Umstand Rechnung zu tragen.


next up previous contents
Nächste Seite: switches Aufwärts: Verzweigungen Vorherige Seite: Verzweigungen   Inhalt
Thomas Neuhaus
2001-01-14