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
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!