
Das letzte Tool von Kapitel 2: switch-case! Wenn du viele Fälle hast (z.B. Menü-Optionen, Wochentage, Notengrade), ist switch viel übersichtlicher als viele else-if-Ketten. Das lernst du heute! 🎛️
🎛️ switch-case – Grundaufbau
switch vergleicht einen int- oder char-Ausdruck mit mehreren Konstanten (case-Werten). Das break am Ende jedes Falls verhindert, dass die folgenden Cases auch ausgeführt werden:
switch (ausdruck) { case wert1: // Code für wert1 break; // verlässt den switch-Block case wert2: // Code für wert2 break; default: // Code wenn kein case passt break; }
💻 Praxisbeispiel: Wochentag
#include <stdio.h> int main() { int tag; printf("Tag (1-7): "); scanf("%d", &tag); switch (tag) { case 1: printf("Montag "); break; case 2: printf("Dienstag "); break; case 3: printf("Mittwoch "); break; case 4: printf("Donnerstag "); break; case 5: printf("Freitag "); break; case 6: printf("Samstag "); break; case 7: printf("Sonntag "); break; default: printf("Ungültige Eingabe! "); break; } return 0; }
⚠️ Fall-Through – wenn break fehlt
❌ Ohne break – Fall-Through!
switch (x) {
case 1:
printf("Eins
");
// kein break!
case 2:
printf("Zwei
");
break;
}
Bei x=1: gibt BEIDE aus!
✅ Gezieltes Fall-Through
switch (monat) {
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12:
printf("31 Tage
"); break;
case 2:
printf("28/29 Tage
"); break;
}
⚡ switch vs. if-else – Wann was?
| Situation | Besser |
|---|---|
| Exakte Gleichheit mit Konstanten (1, 2, 3...) | switch ✅ |
| Bereiche prüfen (x > 0, x < 100) | if-else ✅ |
| Viele Menü-Optionen | switch ✅ |
| Komplexe kombinierte Bedingungen (&&, ||) | if-else ✅ |
| float-Werte vergleichen | if-else ✅ (switch nur int/char) |
✏️ Übungen
break-Analyse
Was gibt dieses Programm aus, wenn n = 2 ist? (Achtung: Kein break nach case 2!)
switch (n) {
case 1: printf("Eins
"); break;
case 2: printf("Zwei
");
case 3: printf("Drei
"); break;
default: printf("Andere
"); break;
}Ausgabe:
switch schreiben
Schreibe einen switch-Block, der eine Zahl 1–4 einliest und die entsprechende Jahreszeit ausgibt (1=Frühling, 2=Sommer, 3=Herbst, 4=Winter). Ungültige Zahlen sollen eine Fehlermeldung ausgeben.
Taschenrechner-Menü
Schreibe einen einfachen Taschenrechner: Zwei Zahlen einlesen, dann Operator wählen (+, -, *, /). Nutze switch für den Operator und if für die Überprüfung ob Divisor ≠ 0.
case '+': – in einfachen Anführungszeichen!Wochentag-Übersetzer
Schreibe ein Programm das eine Zahl (1–7) einliest und den deutschen Wochentag ausgibt. Zahlen außerhalb 1–7 sollen eine Fehlermeldung erzeugen. Nutze switch – kein if-else!
break; nicht – sonst fällt das Programm in den nächsten case durch (fall-through)!Fall-Through bewusst einsetzen
Manchmal ist Fall-Through nützlich! Schreibe ein Programm das für 1–5 "Wochentag", für 6–7 "Wochenende" ausgibt – ohne break zwischen 1 und 5:
break zwischen Cases nennt man Fall-Through – ein mächtiges, aber fehleranfälliges Muster. Immer kommentieren!