Programmieren

Bedingte Anweisungen

 aufwärts

If-Anweisung

Die If-Anweisung dient dazu, in Abhängigkeit von einer Bedingung entweder das eine Programmstück oder das andere Programmstück auszuführen.

Die If-Anweisung hat die allgemeine Form

if (bedingung)
{
      anweisung1;
            drei Punkte übereinander
      anweisungm;
}
else
{
      anweisungm+1;
            drei Punkte übereinander
      anweisungn;
}

Bei bedingung muss es sich um einen Ausdruck handeln, der einen Wert vom Typ boolean, also true oder false, ergibt. Die Bedingung steht in runden Klammern hinter dem Wort if (engl.: if – wenn, falls).

Danach folgt in geschweiften Klammern der If-Teil, also das Programmstück, das ausgeführt werden soll, wenn die Bedingung erfüllt ist, hier dargestellt durch die Anweisungen anweisung1, ..., anweisungm. Jede Anweisung wird mit einem Semikolon abgeschlossen.

Danach folgt das Wort else und dann, wiederum in geschweiften Klammern, der Else-Teil, also das Programmstück, das ausgeführt werden soll, wenn die Bedingung nicht erfüllt ist, hier dargestellt durch die Anweisungen anweisungm+1, ..., anweisungn (engl.: else – sonst, anderenfalls).

Bei Ausführung der If-Anweisung wird zunächst geprüft, ob die Bedingung erfüllt ist, d.h. ob sie den Wert true ergibt. Ist dies der Fall, so wird der If-Teil ausgeführt, also die unmittelbar folgenden Anweisungen. Danach wird hinter dem Else-Teil fortgefahren.

Ist die Bedingung nicht erfüllt, so wird der If-Teil übersprungen und der Else-Teil ausgeführt, also die auf das Wort else folgenden Anweisungen.

Beispiel:  In folgendem Programmstück wird das Maximum der beiden Werte der Variablen a und b ermittelt und der Variablen max zugewiesen.

if (a > b)
{
    max = a;
}
else
{
    max = b;
}

Vorausgesetzt ist hier, dass die beiden Variablen a und b Werte haben. Es wird geprüft, ob der Wert von a größer als der Wert von b ist. Wenn dies der Fall ist, so wird der Wert von a der Variablen max zugewiesen. Wenn der Wert von a kleiner oder gleich dem Wert von b ist, so wird der Wert von b der Variablen max zugewiesen. Am Ende hat also die Variable max in jedem Fall den Wert des Maximums von a und b.

Der Programmablauf einer If-Anweisung lässt sich mit Hilfe eines Fluss­diagramms ver­anschau­lichen. Das Fluss­diagramm für das obige Beispiel­programm ist in Bild 1 dargestellt.

Flussdiagramm des Beispielprogramms (If-Anweisung)
Bild 1:  Fluss­diagramm des Beispiel­programms (If-Anweisung)
If-Anweisung ohne Else-Teil

Oft ist folgende Situation gegeben: Ein Programmstück soll ausgeführt werden, falls eine bestimmte Bedingung erfüllt ist, anderenfalls aber soll fortgefahren werden, ohne dass etwas getan wird. Dies kann durch eine If-Anweisung mit leerem Else-Teil programmiert werden. Es ist dann auch zulässig, das Wort else und den leeren Else-Teil wegzulassen.

Beispiel:  In folgendem Programmstück zur Berechnung des Maximums wird der Variablen max zunächst "auf Verdacht" der Wert von b zugewiesen. Nur wenn der Wert von a größer sein sollte, wird die Zuweisung korrigiert, indem der Variablen max der Wert von a zugewiesen wird. Wenn der Wert von a aber nicht größer ist, braucht nichts getan zu werden, denn die ursprüngliche Zuweisung war richtig. Ein Else-Teil ist also nicht erforderlich.

Links steht das entsprechende Programm mit leerem Else-Teil, rechts das gleiche Programm mit weggelassenem Else-Teil.

max = b;

if (a > b)
{
    max = a;
}
else
{
}
 
max = b;

if (a > b)
{
    max = a;
}
Weglassen von geschweiften Klammern

Wenn ein Anweisungsteil, also der If-Teil oder der Else-Teil, nur aus einer einzigen Anweisung besteht, können die geschweiften Klammern weggelassen werden. In obigen Beispielen war dies der Fall; die beiden unter­schiedlichen Programm­versionen zur Berechnung des Maximums lassen sich also kürzer folgendermaßen schreiben:

if (a > b)
    max = a;
else
    max = b;
 
max = b;

if (a > b)
    max = a;
Geschachtelte If-Anweisungen

Der If- oder der Else-Teil einer If-Anweisung kann wiederum aus einer If-Anweisung bestehen.

Beispiel:  Folgendes Programm berechnet das Signum einer Zahl x. Das Signum ist 1, wenn die Zahl positiv ist, -1, wenn sie negativ ist, und 0 wenn sie gleich 0 ist.

if (x >= 0)
    if (x == 0)
        signum = 0;
    else
        signum = 1;
else
    signum = -1;

Hier besteht der If-Teil der ersten If-Anweisung wiederum aus einer If-Anweisung. Geschweifte Klammern sind nicht nötig, da eine If-Anweisung einschließlich If- und Else-Teil als eine Anweisung zählt.

Probleme kann es bei geschachtelten If-Anweisungen geben, wenn geschweifte Klammern um eine If-Anweisung ohne Else-Teil weggelassen werden.

Beispiel:  Folgende Programm­version zur Berechnung des Signums funktioniert nicht korrekt. Gedacht war hier ein Bezug des else auf das erste if, wie durch die Einrückung des Programmtextes angedeutet. Tatsächlich aber bezieht sich else immer auf das letzte if, das noch auf ein mögliches else wartet.

signum = 1;

if (x >= 0)
    if (x == 0)
        signum = 0;
else
    signum = -1;

Damit das Programm korrekt funktioniert, muss if (x == 0) signum = 0; in geschweifte Klammern gesetzt werden. Damit ist diese If-Anweisung für sich abgeschlossen, wartet also nicht mehr auf else.

 

 

Weiter mit:   [Programmschleifen]   oder   up del.icio.us digg.com Furl Google Ma.gnolia Mister Wong StumbleUpon YahooMyWeb LinkARENA

 

homeH.W. Lang   FH Flensburg   lang@fh-flensburg.de   Impressum   ©  
Valid HTML 4.01 Transitional