Informatik

Verzweigungen

Bisher lief jedes deiner Programme stur von oben nach unten. Mit einer Verzweigung entscheidet das Programm selbst, welchen Weg es nimmt.

Der Ablauf als Flussdiagramm

Bevor wir programmieren, planen wir. Ein Flussdiagramm – genauer: ein Programmablaufplan – stellt den Ablauf grafisch dar.

flowchart TD
    S([Start]) --> E[/alter einlesen/]
    E --> B{alter >= 18?}
    B -- ja --> J["Ausgabe: volljährig"]
    B -- nein --> N["Ausgabe: minderjährig"]
    J --> ENDE([Ende])
    N --> ENDE
Symbol Bedeutung
abgerundetes Rechteck Start oder Ende
Rechteck eine Anweisung
Parallelogramm Ein- oder Ausgabe
Raute eine Bedingung – hier verzweigt sich der Ablauf
Pfeil zeigt, wie es weitergeht

Die if-else-Anweisung

if (Bedingung) {
    // wird ausgeführt, wenn die Bedingung wahr ist
} else {
    // wird sonst ausgeführt
}
  • Die Bedingung steht in runden Klammern und ist ein Ausdruck vom Typ boolean.
  • Nach der schließenden runden Klammer steht kein Semikolon.
  • Der else-Teil ist optional.
  • Nach der Verzweigung geht es für beide Wege gemeinsam weiter.

Vergleichsoperatoren

Operator Bedeutung
== ist gleich
!= ist ungleich
< > kleiner, größer
<= >= kleiner oder gleich, größer oder gleich

Das doppelte Gleichheitszeichen == ist der Vergleich. Das einfache = ist die Zuweisung. Sie zu verwechseln ist der wohl häufigste Anfängerfehler.

Bei Zeichenketten gilt weiterhin: equals statt ==.

Sage ohne Rechner voraus, was das folgende Programm ausgibt. Erkläre danach, warum die Ausgabe so aussieht.

Auflösung

Ausgegeben wird:

B
C

Es handelt sich um drei einzelne, voneinander unabhängige Verzweigungen. Jede wird geprüft, egal wie die vorherige ausgegangen ist. 7 ist nicht größer als 10, aber größer als 5 und größer als 3.

Mehrere Fälle: else if

Bei einer else if-Kette wird genau ein Zweig ausgeführt – der erste, dessen Bedingung zutrifft. Alle folgenden werden dann gar nicht mehr geprüft.

Deshalb ist die Reihenfolge entscheidend. Stünde punkte >= 1 ganz oben, bekämen alle die Note 5.

Schreibe die Notenkette so um, dass sie mit der kleinsten Grenze beginnt. Was musst du an den Bedingungen ändern, damit sie trotzdem richtig arbeitet?

Auflösung

Du musst die Vergleiche umdrehen:

if (punkte < 1) {
    IO.println("Note 6");
} else if (punkte < 4) {
    IO.println("Note 5");
} else if (punkte < 7) {
    IO.println("Note 4");
} ...

Beide Fassungen sind korrekt. Die erste liest sich für die meisten natürlicher, weil sie mit der besten Note beginnt.

Die switch-Anweisung

Wenn du einen Wert gegen mehrere feste Möglichkeiten prüfst, gibt es eine kompaktere Schreibweise.

In diesem Programm steckt Absicht: Bei einem case fehlt das break.

a) Finde ihn und sage voraus, was bei der Eingabe 3 passiert.

b) Probiere es aus und repariere den Fehler.

Auflösung

Bei case 3 fehlt das break. Die Eingabe 3 gibt deshalb aus:

befriedigend
ausreichend

Ohne break läuft die Ausführung einfach in den nächsten Fall hinein. Das nennt man Durchfallen. Meistens ist es ein Fehler – gelegentlich nutzt man es absichtlich, um mehrere Fälle gleich zu behandeln.

default fängt alle Werte ab, für die es keinen case gibt.

Aufgabe 1: Größte von drei Zahlen

Schreibe ein Programm, das drei Zahlen einliest und die größte ausgibt.

a) Entwickle zuerst auf Papier ein Flussdiagramm.

b) Setze es danach um.

Tipp 1: Nicht alle Fälle auf einmal

Fang mit zwei Zahlen an: Merke dir die größere in einer Variablen groesste. Vergleiche dann diese eine Variable mit der dritten Zahl.

Tipp 2: Das Gerüst
int groesste = a;
if (b > groesste) {
    groesste = b;
}
// und jetzt dasselbe noch einmal mit c

Dieses Muster – „merke dir den bisher besten Wert und vergleiche weiter“ – begegnet dir in Kapitel 5 und 7 wieder.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Schaltjahr

Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist – außer es ist durch 100 teilbar, dann ist es keines – außer es ist durch 400 teilbar, dann doch.

Schreibe ein Programm, das ein Jahr einliest und ausgibt, ob es ein Schaltjahr ist.

Teste mit 2024 (ja), 1900 (nein), 2000 (ja) und 2023 (nein).

Tipp 1: Teilbarkeit prüfen

jahr % 4 == 0 ist wahr, wenn jahr ohne Rest durch 4 teilbar ist.

Tipp 2: Die Reihenfolge der Regeln

Die Regeln sind ineinander verschachtelt. Prüfe von der speziellsten zur allgemeinsten: erst durch 400, dann durch 100, dann durch 4.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Zusatzaufgabe

Erweitere den Zeitrechner aus Kapitel 2 so, dass er sprachlich sauber ausgibt:

  • bei 0 Sekunden: „keine Zeit“
  • bei weniger als einer Minute: nur die Sekunden
  • bei weniger als einer Stunde: nur Minuten und Sekunden
  • sonst: Stunden, Minuten und Sekunden

Und wenn du magst: Setze auch die Einzahl richtig („1 Minute“ statt „1 Minuten“).


Selbsttest

Verzweigungen

Teilbare URL erstellen

Abschnitte auswählen