zurück weiter

C++

G.Eichelsdörfer - Staatliche Technikerschule Weilburg

Ablaufstrukturen: Fallunterscheidung für Mehrfachverzweigung (2)

In der Mehrfachverzweigung auf der letzten Seite stellt eine Variable durch Vergleich mit verschiedenen Konstanten die Weichen für den abzuarbeitenden Zweig. Unter dieser Bedingung kann eine Fallunterscheidung verwendet werden. Die folgende Darstellung erläutert den C++-Quellcode:

Textbeschreibung C++-Quelltext
Schalte mit Hilfe der Eingabe auf
Anfang der Fallunterscheidung
 Fall 1:
  <Celsius->Fahrenheit>
  Fallunterscheidung beenden
 Fall 2:
  <Celsius->Kelvin>
  Fallunterscheidung beenden
  ...
 in anderen Fällen vorgesehen:
  <Fehlerausgabe>
Ende der Fallunterscheidung
switch(Eingabe)
{
 case 1:
  <Celsius->Fahrenheit>
  break;
 case 2:
  <Celsius->Kelvin>
  break;
  ...
 default:
  <Fehlerausgabe>
}

Das Schlüsselwort switch leitet die Fallunterscheidung ein. Dahinter steht in runden Klammern der auszuwertende Ausdruck, hier Eingabe. Alle folgenden Fälle werden in geschweiften Klammern eingeschlossen.

Ein Fall wird mit dem Schlüsselwort case eingeleitet, dem eine Konstante folgt. Dieser Fall endet mit einer break-Anweisung zum Verlassen der Fallunterscheidung. Fehlt am Ende dieses Falles das break, wird der sich anschließende Fall ebenfalls bearbeitet. Das geht so weiter, bis ein break oder das Ende der Fallunterscheidung vorliegt.

In C++ werden die case-Stellen als Einsprungpunkte zur Fallbearbeitung verwendet. Mit dem nächsten case endet der Fall nicht. Deshalb muss für das Ende eines Falles eine break-Anweisung eingesetzt werden.

Das Struktogramm zu obiger Fallunterscheidung:

Im Allgemeinen steht hinter switch ein Ausdruck. Eine einzelne Variable (bspw. Eingabe) ist nur die einfachste und kürzeste Form eines Ausdrucks. Statt switch(Eingabe) (mit Eingabe vom Typ int) könnte auch switch(Eingabe-'0') verwendet werden, wenn Eingabe vom Typ char wäre.
Warum hätte dies die gleiche Wirkung?

Beachten Sie, dass ein ganzzahliger Ausdruck etwas ist, was intern im Speicher ganzzahlig dargestellt wird. So kann ein ganzzahliger Ausdruck auch ein Zeichen (char), einen Wahrheitswert (wenig sinnvoll) oder einen Wert eines Aufzählungstyps (Beschreibung folgt) ergeben. Ein zusammengesetzter Typ wie string kann hinter switch nicht eingesetzt werden.
Warum ist ein boolescher Ausdruck hinter switch nicht sinnvoll?

Auftrag
Entwerfen (Struktogramm) und schreiben (Quelltext) Sie das komplette Programm zur Umrechnung zwischen den Temperatureinheiten aus Übung 2.2 unter Verwendung einer Fallunterscheidung!
Arbeitsbereich: fallunterscheidung, Projekt: temperaturen