|
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
-
Bedingter Befehl
-
Ja/Nein Entscheidung
-
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
-
Sprung
-
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.
|