Home > Informatik > Stufe EF > Lernbausteine

Fallunterscheidungen

Fallunterscheidungen sind ein mächtiges Werkzeug der Programmierung, um Programme zu erzeugen, die flexibel auf verschiedene Umstände reagieren können. Graphisch kann man Fallunterscheidungen gut mit Hilfe von Flussdiagrammen darstellen.

Beispiel 1: Idealgewicht (aus dem Projekt "Waage" in Folge 3)

Das Idealgewicht eines Mannes ist etwas höher als das einer Frau. Bei beiden Geschlechtern wird zunächst der Wert 100 von der Körpergröße in cm abgezogen. Die Differenz wird dann bei einem Mann mit dem Faktor 0,9 multipliziert, bei einer Frau mit dem Faktor 0,85. Ein Programm zur Berechnung des Idealgewichts muss diese beiden Fälle unterscheiden können.

Beispiel 2: Bewegen eines Kreises (aus dem Projekt "shapes" in Folge 2)

Wenn ein Kreis in der Zeichenfläche nach rechts bewegt werden soll, soll er nicht über den rechten Rand "hinausschießen". Also muss das Programm wissen, wo sich der Kreis gerade befindet, wenn der moveRight()-Befehl kommt. Hält sich der Kreis gerade ganz links oder in der Mitte auf, kann er um weitere 20 Pixel nach rechts bewegt werden. Ist er aber bereits in der Nähe des rechten Randes, darf er nicht mehr bewegt werden.

Realisierung einer Fallunterscheidung in Java

In der Programmiersprache Java gibt es zwei wichtige Schlüsselworte, um solche Fallunterscheidungen zu implementieren, nämlich if und else. Das Schlüsselwort "if" bedeutet so viel wie "falls", und das Schlüsselwort "else" kann mit "ansonsten" übersetzt werden.

Die Befehle, die hinter "if" stehen, werden ausgeführt, wenn die Bedingung, die mit "if" verknüpft ist, wahr ist. Ist diese Bedingung nicht wahr (also falsch), denn werden die Befehle ausgeführt, die hinter "else" stehen.

Das ist jetzt aber sehr theoretisch, daher erst mal zwei praktische Beispiele:

Beispiel 1: Idealgewicht
   if (geschlecht == 'm')
      idealgewicht = (kg - 100) * 0.9;
   else
      idealgewicht = (kg - 100) * 0.85;

Die Variable geschlecht ist vom Datentyp char, in ihr können also einzelne Zeichen gespeichert werden. Handelt es sich bei diesem Zeichen um den Kleinbuchstaben 'm' (also für "männlich"), dann wird die Variable idealgewicht nach der ersten Formel mit dem Faktor 0.9 berechnet. Andernfalls - wenn das Geschlecht also nicht männlich ist - wird die zweite Formel mit dem Faktor 0.85 genommen. Die zweite Formel wird auch dann verwendet, wenn der Benutzer zum Beispiel den Buchstaben 's' für das Geschlecht eingegeben hat oder das Zeichen '#'. Das Schlüsselwort "else" bedeutet also nicht automatisch das Komplement (Gegenteil) von 'm' (in diesem Fall also 'w'), sondern "else" steht für die Negation (Verneinung); in diesem Fall also für alles, was NICHT 'm' ist.

Beispiel 2: Rechter Rand erreicht
   if (xPosition > 250)
      rechterRandErreicht = true;
   else
      rechterRandErreicht = false;

Wenn die xPosition des Kreises den Wert von 250 überschritten hat, soll der rechte Rand der Zeichenfläche als "erreicht" gelten. Ist die xPosition NICHT größer als 250, so gilt der rechte Rand als NICHT erricht. Die Variable rechterRandErreicht (Datentyp boolean) erhält den Wert false.