Programmieren

Bedingte Anweisungen

If-Anweisung

Die If-Anweisung dient dazu, in Abhängigkeit von einer Bedingung entweder das eine Programm­stück oder das andere Programm­stü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 Programm­stü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 abge­schlossen.

Danach folgt das Wort else und dann, wiederum in geschweiften Klammern, der Else-Teil, also das Programm­stü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 Programm­stü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;
}

Voraus­gesetzt 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 Programm­ablauf einer If-Anweisung lässt sich mit Hilfe eines Fluss­diagramms ver­anschaulichen. Das Fluss­diagramm für das obige Beispiel­programm ist in Bild 1 dargestellt.

 

Bild 1: Flussdiagramm des Beispielprogramms (If-Anweisung) 

Bild 1: Flussdiagramm des Beispielprogramms (If-Anweisung)

 

If-Anweisung ohne Else-Teil

Oft ist folgende Situation gegeben: Ein Programm­stü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 Programm­stü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üng­liche Zuweisung war richtig. Ein Else-Teil ist also nicht erforderlich.

Links steht das ent­sprechende Programm mit leerem Else-Teil, rechts das gleiche Programm mit weg­gelassenem Else-Teil.

max = b;

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

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

Wenn ein Anweisungs­teil, 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 unterschiedlichen Programm­versionen zur Berechnung des Maximums lassen sich also kürzer folgender­maß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 Programm­textes 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)    // funktioniert so nicht korrekt!
        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 abge­schlossen, wartet also nicht mehr auf else.

 

Weiter mit:   [Programmschleifen]   oder   [up]

 


H.W. Lang   mail@hwlang.de   Impressum   Datenschutz
Diese Webseiten sind während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden