Java Einführungs-Seminar

Verzweigungen in JAVA

Verzweigungen sind die grundlegenden "Intelligenz"-Befehle einer Sprache. Eine Verzweigung ändert den linearen Ablauf eines Programmes, der durch die grundlegende Architektur der Hardware vorgegeben ist. Eine Verzweigung ist entweder unbedingt oder bedingt. Eine unbedingte Verzweigung ist der Sprung zu einer anderen Stelle im Programm. Die bedingten Verweigungen hängen von einer vorangegangenen Entscheidung ab und setzen dann das Programm gemäß dieser vorangegangenen Entscheidung an unterschiedlichen Stellen fort.

Bedingte Verzweigungen

  1. Bedingter Befehl
  2. Ja/Nein Entscheidung
  3. Fallunterscheidung
Bedingter Befehl
Ein bedingter Befehl wertet einen boole'schen Ausdruck aus und führt abhängig vom Ergebnis den nachfolgenden Befehl (oder Befehlsblock) aus. Die übliche Schreibweise ist:
if (boole'scher Ausdruck ist wahr)
    bedingt auszuführender Befehl
die weiteren Befehle

Ja/Nein-Entscheidung
Die Ja-/Nein-Entscheidung ergänzt den bedingten Befehl und eine Klausel für den Fall, daß die Bedingung falsch war.
if (boole'scher Ausdruck ist wahr)
    Befehl bei wahrem Ausdruck
else
    Befehl bei falschem Ausdruck
Fallunterscheidung
Eine korrekte Fallunterscheidung hat in der strukturiierten Programmierung zwei Eigenschaften: die gestellte Bedingung wird stets vollständig (zu 100%) ausgewertet, und es wird immer nur ein Fall ausgewertet. Die Unterscheidungsbedingung kann entweder darin bestehen, daß man eine kleine ganze Zahl berechnet und diese Zahl dann benutzt, um eine der möglichen Anweisungen auszuwählen, genauso, als wären die möglichen Befehle in einem Feld abgelegt und die Zahl wäre der Index. Die andere Methode ist eine Folge von Vergleichen, denen jeweils eine Menge von Befehlen zugeordnet wird.
In Java wird die zweite Variante mit den Vergleichen benutzt, da sie wesentlich flexibler zu handhaben ist. Dabei wir der Inhalt einer ganzzahligen Variablen, der natürlich zur Laufzeit ermittelt werden kann, einer Menge von Konstanten gegenüber gestellt. Für den Fall, daß kein Vergleich Erfolg hat, muß ein Rest-Fall eingerichtet werden.
Der Typ der Variablen ist ein ganzzahliger Basisdatentyp, nicht jedoch "long" (also byte, char, short oder int).
switch (Variable)
    {
    case Konstante1: Befehle zu Fall 1;
                     break;
    case KonstanteX: Befehle zu Fall X;
                     break;
    default:         Befehle zum Rest;
    }

Unbedingte Verzweigungen

  1. Sprung
  2. strukturierte Sprünge
Sprung
Sprünge werden üblicherweise mit dem Namen "goto" verbunden. In Java wurde ein Experiment gewagt. Das Schlüsselwort "goto" wurde reserviert, aber nicht implementiert. Die Idee war, daß man theoretisch alle Programme ohne "goto" schreiben kann. Die praktische Analyse von Programmen, die doch "goto" benutzten, ergab, daß man mit einem Sprung typischerweise verschachtelte Schleifen im Fehlerfall verließ.
Java implementierte daher zwei aus C bekannte strukturierte Sprünge etwas anders. Es sind "continue" und "break". "Break" verläßt eine Kontrollstruktur (Schleifen oder Fallunterscheidung) und geht zum unmittelbar nachfolgenden Befehl. "Continue" kommt nur in Schleifen vor und geht zum Entscheidungsteil einer Schleife. Der Befehl überspringt sozusagen den Rest des Schleifenkörpers.
In Java können nun beide Anweisungen Sprungmarken verarbeiten.Die Marken müssen bekannt sein. Vorwärtssprünge sind nicht möglich. Bezeichnen Marken eine Kontrollstruktur, dann wird hinter das Ende der Kontrollstruktur verzweigt. Programmierer, die bisher mit "goto" gearbeitet haben, sollten sich etwas Zeit nehmen, um diese Eigenschaften näher kennenzulernen.

for (i=0; i< 10; i++)
    {
    if (i %2 == 0)
        continue;
    else
        System.out.println ("Ungerade Zahl");
    }

marke: for (i = 0; i < 10; i++)
    {
     System.out.println("In der Schleife");
    if (i > 5)
        break marke;
    }
Befehl, der nach "break marke" ausgeführt wird; etwas gewöhnungsbedürftig.


Das Seminar wurde entwickelt von Walter Herglotz, München, 1999.
© Copyright "Walter digital", München, Walter Herglotz, 1999.