Vetiefung von Kontrollstrukturen Flashcards
goto Statement
° Unbedingte Verzweigung
° Führt zu unlesbaren und unzuverlässigen Programmen
° Jede beliebige Reihenfolge von Anweisungen unabhängig von ihrer textlichen Reihenfolge
° gibt es in Java nicht, goto ist jedoch als Schlüsselwort reserviert
Blöcke
° Zusammengesetze Anweisungen mit lokalen Variablen
° Syntaktisch geklammert {}
° blockstrukturiert
Geschachtelte if-Anweisung
° else-Zweig bezieht sich immer auf die letzte if-Anweisung ohne else-Zweig!!
-> Problem nennt sich dangling else
° Explizite Block-Klammerung, um Fehler zu vermeiden
° if und else Anweisungen sollten in einer eigenen Zeile stehen
switch-Anweisung
° Auswahlanweisung, ist ein Mehrweg-Verzweigung
° Mehrere Fälle können unterschiedlich behandelt werden
° Unterschiede zur if-Anweisung:
- Mehrere Ausdruckstypen können die Auswahl kontrollieren
° Es können einer oder mehrere Fälle ausgewählt werden
° Statt else-Falles gibt es einen Standardfall für alle nicht benannten Fälle
° alternative zu break ist return
° jeder case-Label darf nur einmal vorkommen
- Beispiel für switch-Anweisungen
switch (gedrueckteTaste) { case 'a': // 'a': case-Label -> nur Konstante (häufig Typ int oder char) bewegeSpielerNachLinks(); break(); // sorgt dafür das switch nicht ewig ausgeführt wird, Abbruchbedingung case 'b': bewegeSpielerNachRechts(); break(); case ' ': feuereRaketeAb(); }
- Beispiel für switch-Anweisungen
switch (buchstabe) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': istVokal = true; } ..... // break; Anweisung ist nicht notwendig, da die Case-Label denselben Wert haben sollen
- Beispiel für switch-Anweisungen
int monat = liesMonatszahlVomBenutzer(); int tage; switch (monat) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: tage = 31; break;
case 4: case 6: case 9: case 11: tage = 30; break;
case 2:
tage = 28;
break;
default:
tage = -1;
}
System.out.println(“Der Monat “ + monat + “ hat “ + tage + “ Tage.”);
// solte keiner der Fälle zutreffen und die default-Anweisung fehlen, so wir die gesamte switch-Anweisung einfach übersprungen