Optionen und weiterführende Links



In der Datenbank befinden sich derzeit 477 Specials. Alle Specials anzeigen...

Entweder - oder

Entweder - Oder

Jetzt bin ich Euch noch die Erklärung der if-Verzweigungen schuldig. Eine if-Verzweigung ist einfach dazu da, die Ausführung von Code von einer Bedingung abhängig zu machen

var zahl = random(0, 9);
if (zahl > 4)
  print "Die Zufallszahl ist größer als 4!";

Der print-Befehl wird also nur ausgeführt, wenn die Bedingung (zahl > 4) erfüllt ist. Die Bedingung steht nach dem Schlüsselwort 'if' in Klammern. Es ist üblich, den Code, der von einem if abhängig ist, einzurücken. Das könnt Ihr bereits im letzten Beispiel sehen: Die Zeile mit dem print-Statement steht etwas weiter rechts als die anderen. Auch das dient der Lesbarkeit des Codes.

Technisch gesehen, muß die Bedingung des if ein Wahrheitswert sein. Das bedeutet, ihr könnt alles dort einsetzen, was einen Wahrheitswert liefert: Direkte Vergleiche, Variablen, die einen Wahrheitswert enthalten, Ausdrücke mit Operatoren, die Wahrheitswerte liefern, Funktionen, deren Rückgabewert ein Wahrheitswert ist, ...

if (fertig) // prüft, ob 'fertig' true oder false enthält
  ...
// der &&-Operator ('und') liefert einen Wahrheitswert
if (zahl > 5 && zahl < 10)
  ...
// eine Funktion, die einen Wahrheitswert zurückliefert
if (isJPEG(dateiname))
  ...

«Eigentlich» ist von einem if nur die direkt folgende Zeile abhängig

if (zahl > 5)
  print "Zahl ist größer als 5!";
print "Diese Ausgabe kommt immer, auch wenn Zahl nicht größer 5 ist!";

Wenn Ihr mehr als eine Zeile von einem if abhängig machen wollt, müßt ihr den Code in einem Block zusammenfassen. Dann ist dieser Block vom if abhängig. Blöcke werden in Mengenklammern { } eingefaßt

if (zahl < 5)
  {
  print "Zahl ist größer 5!";
  print "Auch diese Ausgabe ist vom if abhängig!";
  zahl *= 2;
  zahl = random(0, zahl);
  }
print "Erst hier ist das if zu Ende!";

Oft braucht Ihr nicht nur das «wenn», sondern auch das «sonst». Dazu gibt es eine Erweiterung der if-Verzweigung um das Schlüsselwort else. Der von else abhängige Code wird genau dann ausgeführt, wenn die Bedingung des if nicht zutrifft

if (zahl > 5) // wenn
  print "zahl ist größer 5!";
else // sonst
  print "zahl ist nicht größer 5!";

Genauso wie beim if-Teil kann von else eine einzelne Zeile oder ein Block abhängig sein. if kann ohne else stehen, aber logischerweise nicht umgekehrt.

Innerhalb eines if- oder else-Blocks kann beliebiger Code stehen, beispielsweise auch weitere if-Verzweigungen

if (zahl > 5)
  {
  print "zahl ist größer 5!";
  if (zahl > 8)
    print "zahl ist auch größer 8!";
  }

In vielen Sprachen gibt es noch eine weitere Möglichkeit, die Ausführung von Code an eine Bedingung zu knüpfen. Dazu wird das Schlüsselwort switch benutzt

switch (zahl)
  {
  case 0:
    print "Der Wert ist 0!";
  case 1:
    print "Der Wert ist 1!";
  case 5:
    print "Der Wert ist 5!";
  default:
    print "Der Wert ist weder 0, noch 1, noch 5!";
  }

In diesem Beispiel richtet es sich nach dem Wert der Variablen 'zahl', welche Zeile des Codes als nächstes ausgeführt wird. Dazu dienen die Sprungmarken, die mit dem Schlüsselwort 'case' gesetzt werden. Hat also 'zahl' den Wert 0, wird hinter 'case 0:' weitergemacht, ist der Wert 1, hinter 'case 1:', etc. In vielen Sprachen könnt Ihr auch das Schlüsselwort 'default' als Sprungmarke verwenden. Die wird angesprungen, wenn keine der anderen Sprungmarken zutrifft.

Unser Beispiel hat jedoch noch einen nicht ganz kleinen Schönheitsfehler: Es wird zwar zur passenden Sprungmarke gesprungen, aber die folgenden Sprungmarken werden nicht übersprungen. Daher liefert das Beispiel für zahl == 1 folgende Ausgabe

Der Wert ist 1!
Der Wert ist 5!
Der Wert ist weder 0, noch 1, noch 5!

Das ist natürlich nicht im Sinne des Erfinders. Um dieses Verhalten zu vermeiden, müßt Ihr vor jeder neuen Sprungmarke die switch-Verzweigung verlassen. Das geschieht mit dem Schlüsselwort 'break'. Die Ausführung wird direkt hinter dem switch-Konstrukt fortgesetzt

switch (zahl)
  {
  case 0:
    print "Der Wert ist 0!";
    break;
  case 1:
    print "Der Wert ist 1!";
    break;
  case 5:
    print "Der Wert ist 5!";
    break;
  default:
    print "Der Wert ist weder 0, noch 1, noch 5!";
    break;
  }
print "Hier geht es nach einem break weiter!";

break verläßt das jeweils aktuelle Konstrukt, in diesem Fall das switch-Konstrukt. Ihr könnt auch andere Konstrukte damit unterbrechen

if (name != "") // wenn ein Dateiname eingegeben wurde
  {
  // wenn der Dateiname nicht auf '.jpg' endet
  if (!endsWith(name, ".jpg"))
    break; // nicht weitermachen
  var pic = loadImage(name); // diese Datei von der Festplatte laden
  ...
  }

Ein weiteres Einsatzgebiet von break sind das nächste Thema, Schleifen.



Special vom: 16.01.2003
Autor dieses Specials: Henning Kockerbeck
Die weiteren Unterseiten dieses Specials:
Die reine Lehre - HTML
Stilvoll - CSS
Kleiner Grundkurs Programmieren
Jetzt wird's dynamisch - JavaScript
Die andere Seite der Dynamik - PHP
Neue Gefilde - XML
Weiterführende Links
Zurück zur Hauptseite des Specials


?>