MezData-Logo

Mehrfachverzweigung mit Switch

Problem

Ein Programm bekommt als Eingabe die Notenzahlen 1..6 und soll die Noten in Texte "sehr gut".."ungenuegend" umwandeln,
wenn die Eingabe außerhalb des Noten-Bereichs ist, soll "Fehler: Note unbekannt" ausgegeben werden.

Analyse

In Abhängigkeit eines ganzzahligen Wertes, werden Zeichenketten ausgegeben.

Eingabe n 1 2 3 4 5 6 sonst
Ausgabe "sehr gut" "gut" "befriedigend" "ausreichend" "mangelhaft" "ungenuegend" "Fehler: Note unbekannt"

Design

Welche Lösungsmöglichkeiten kennen Sie?

Hier ein weiterer Lösungsansatz, die switch-Anweisung, bedingte Verarbeitung in Abhängigkeit von dem Wert eines Testausdrucks.

Switch-Anweisung

Struktogramm
switch (Testausdruck){ // Selektor
  case Wert1:
    Anweisungen 1
    break;
  case Wert2:
    Anweisungen 2
    break;
  case Wert3:
    Anweisungen 3
    break;
  default: // optional
    Anweisungen Sonst
}

Funktionsweise

Der Testausdruck wird ausgewertet. Wenn sein Wert einem der Werte in den case-Abschnitten gleicht, werden die dazugehörigen Anweisungen ausgeführt. Die break-Anweisung dient dazu, nach Verarbeitung der jeweiligen Anweisungen die switch-Anweisung zu verlassen, sonst würden die nachfolgenden Anweisungen ebenfalls verarbeitet werden.

Der default-Abschnitt ist optional, er kann weggelassen werden.

Aufgabe: Entwickeln Sie eine Lösung mit der Switch-Anweisung.
Tipp: Setzen Sie für "Testausdruck" Ihre Eingabe-Variable ein.
Implementieren und testen Sie Ihr Programm. Lösung anzeigen..

Welche Ausgabe ergibt sich bei Eingabe 2, wenn das break bei case 2: weggelassen wird?

Erstellen Sie ein Struktogramm für Ihre Lösung. Lösung..

Welche Vor- und Nachteile hat die switch-Anweisung gegenüber einer Lösung mit Array oder if-Anweisung?

Können als Werte auch Zeichenketten verwendet werden? Begründung!