HTML, CSS und JavaScript

Bedingte Anweisungen

 aufwärts

Eine bedingte Anweisung dient dazu, in Abhängigkeit von einer Bedingung entweder das eine Programmstück oder das andere Programmstück auszuführen. Damit ist es möglich, den Programmfluss datenabhängig zu steuern. Beispielsweise sollen in einem Sortierprogramm zwei Zahlen nur dann vertauscht werden, wenn sie in falscher Reihenfolge stehen, ansonsten sollen sie an Ort und Stelle belassen werden.

 

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 Wahrheitswert, 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 m zugewiesen.

if (a>b)
{
    m=a;
}
else
{
    m=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 m zugewiesen. Wenn der Wert von a kleiner oder gleich dem Wert von b ist, so wird der Wert von b der Variablen m zugewiesen. Am Ende hat also die Variable m in jedem Fall den Wert des Maximums von a und b.

Der Programmablauf einer If-Anweisung lässt sich mit Hilfe eines Flussdiagramms ver­anschaulichen. Das Flussdiagramm für das obige Beispiel­programm ist in Bild 1 dargestellt.

Bild 1:  Flussdiagramm 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 einem Sortierprogramm sollen die Werte von a und b vertauscht werden, wenn sie in falscher Reihenfolge stehen, ansonsten soll nichts getan werden.

Die folgende If-Anweisung führt eine solche Vertauschung in ihrem If-Teil durch; ein Else-Teil ist nicht erforderlich und kann daher entfallen.

if (a>b)
{
    c=a;
    a=b;
    b=c;
}
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. Im ersten Beispiel war dies der Fall; das Programm zur Berechnung des Maximums lässt sich also kürzer folgendermaßen schreiben:

if (a>b)
    max=a;
else
    max=b;
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:  In folgendem modifizierten Programm zur Berechnung des Signums soll der If-Teil der ersten If-Anweisung aus einer If-Anweisung ohne else bestehen. Das Programm funktioniert jedoch nicht korrekt, da ein else sich immer auf das letzte if bezieht, das noch kein else hat. Dies ist hier if (x==0) und nicht, wie gewünscht, if (x>=0).

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.

 

 

Weiter mit:   [Programm­schleifen]   oder   up

 

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