Inhaltsverzeichnis

Ein- und zweiseitige Alternative

Häufig ist es notwendig, die Ausführung eines Algorithmus in Abhängigkeit von bestimmten Bedingungen zu verzweigen. Dazu verwendet man Alternativen bzw. Verzweigungen. In diesem Abschnitt werden die ein- und zweiseitige Alternative vorgestellt. Im nächsten die Mehrfachverzweigung.





Allgemeine Formulierung

Verbale Kurzbeschreibung

Einseitige Alternative

Wenn die Bedingung erfüllt ist, dann führe die Anweisungen a1 bis an aus.

Zweiseitige Alternative

Wenn die Bedingung erfüllt ist, dann führe die Anweisungen a1 bis an aus, anderenfalls führe die Anweisungen b1 bis bn aus.

Struktogramm

Das Struktogramm für die ein- bzw. zweiseitige Alternative besteht zunächst aus einem Rechteck, welches in drei Dreiecke aufgeteilt ist. Im mittleren Dreieck wird die Bedingung formuliert. Im linken Dreieck steht „wahr“, im rechten Dreieck „falsch“. Unter dem linken Dreieck erscheinen nun alle Anweisungen, die ausgeführt werden, wenn die Bedingung erfüllt ist, unter dem rechten Dreieck erscheinen alle Anweisungen, die ausgeführt werden, wenn die Bedingung nicht erfüllt ist. Bei der einseitigen Alternative stehen unter dem rechten Dreieck keine Anweisungen.

Einseitige Alternative

Zweiseitige Alternative

Python-Syntax

Einseitige Alternative

if <bedinung>:
    a1
    ...
    an

Die einseitige Alternative wird in Python mit der if-Anweisung umgesetzt. Danach folgt die <bedingung>. Dies ist ein Ausdruck vom Datentyp bool, der die Werte True oder False annehmen kann. Nach der Bedingung folgt ein Doppelpunkt. Ab der nächsten Zeile wird dann der Quelltext eingerückt. Wenn die Bedingung den Wert True annimmt, wird der eingerückte Quelltext ausgeführt.

Zweiseitige Alternative

if <bedinung>:
    a1
    ...
    an
else:
    b1
    ...
    bn

Bei der zweiseitigen Alternative gibt es zusätzlich noch eine else-Anweisung, die von einem Doppelpunkt gefolgt wird. Auch danach wird der Quelltext eingerückt. Dieser Quelltext wird ausgeführt, wenn die Bedingung den Wert False annimmt.

Beispiel

Im folgenden werden die verschiedenen Darstellungsformen der ein- und zweiseitigen Alternative demonstriert.

Verbale Beschreibung

Zunächst soll eine ganze Zahl eingegeben werden. Wenn die Zahl durch Zwei teilbar ist, soll ausgegeben werden: „Die Zahl ist gerade.“.

Zusätzlich soll nun noch ausgegeben werden „Die Zahl ist ungerade.“, wenn Zahl nicht durch Zwei teilbar ist.

Struktogramm

Pythonprogramm

eins.py
zahl = int(input))
if zahl%2 == 0:
    print("Die Zahl ist gerade.")
zwei.py
zahl = int(input))
if zahl%2 == 0:
    print("Die Zahl ist gerade.")
else:
    print("Die Zahl ist ungerade.")

Formulierung der Bedingung

Wie schon weiter oben erklärt, muss die Bedingung vom Datentyp bool sein. Analysieren wir die wir die Bedingung „Die Zahl ist gerade.“ aus dem Beispiel. Wie lässt sich diese Bedingung in Python formulieren, so dass ein Wahrheitswert entsteht? Anstelle von „Die Zahl ist gerade.“ könnte man auch sagen „Die Zahl ist durch 2 teilbar.“. Eine Zahl ist genau dann durch 2 teilbar, wenn ihr Rest bei der Division durch 2 (in Python: zahl%2) gleich Null ist (in Python ==0), also formuliert man als Bedingung man den Vergleich zahl%2 == 0.

Bedingungen werden meist mit Hilfe von Vergleichsoperatoren formuliert. Mehrere Bedingungen können mit Hilfe von logischen Operatoren verknüpft werden.

Weitere Beispiele für mögliche Bedingungen:

Bedingung Wirkung
a%3 == 1 Der Wert der Variable a lässt bei der Division durch 3 den Rest 1.
a > 5 and a != 10 Der Wert der Variablen ist größer als 5 und ungleich 10.
eingabe == "Ja" Der Wert der Variablen eingabe ist "Ja".

Erklärvideo

Im folgenden Video werden einige Inhalte dieser Seite nochmal erklärt.


Download Structorizer


Verschachtelte Alternativen

Man kann auch mehrere Alternativen ineinander schachteln. Als Beispiel verändern wir das Beispiel aus dem Video:

Nach Eingabe zweier ganzer Zahlen a und b soll zunächst entschieden werden ob a größer als b ist. In diesem Fall soll ausgegeben werden „a ist größer als b“, anderenfalls soll entschieden werden, ob b größer als a ist. In diesem Fall soll ausgegeben werden „b ist größer als a“, anderenfalls soll ausgegeben werden „a ist gleich groß wie b“.


Darstellung des Algorithmus als Struktogramm:

In den falsch - Zweig der ersten Alternative steht die zweite Alternative.

Python-Programm

verschachtelt.py
a = int(input("a = "))
b = int(input("b = "))
if a > b:
    print("a ist größer als b")
else:
    if a < b:
        print("b ist größer als a")
    else:
        print("a ist gleich groß wie b")

Im else-Zweig der ersten if-Anweisung steht die zweite if-Anweisung. Innerhalb dieser wird der Quelltext um eine weitere Ebene eingerückt. Hier stehen alle Anweisungen die im if- bzw. else-Zweig der inneren Verzweigung ausgeführt werden sollen.

Vertiefung

Im Lehrbuch inf-Schule wird das Thema nochmal vertieft:

Aufgaben

Aufgabe 1

Schreibe ein Programm, welches nach Eingabe einer Note als Zahl das entsprechende Worturteil ausgibt. In verbaler Kurzform könnte man den Algorithmus so formulieren:

Eingabe: Note
WENN Note = 1, DANN Ausgabe „sehr gut“
WENN Note = 2, DANN Ausgabe „gut
WENN Note = 3, DANN Ausgabe „befriedigend“
WENN Note = 4, DANN Ausgabe „ausreichend“
WENN Note = 5, DANN Ausgabe „mangelhaft“
WENN Note = 6, DANN Ausgabe „ungenügend“

Erstelle auch ein Struktogramm!

Zusatzaufgabe: Verändere das Programm so, dass bei Eingabe einer falschen Note ausgegeben wird: „Falsche Eingabe!“.

Aufgabe 2

Schreiben Sie ein Programm, dass nach Eingabe der Längen der drei Seiten ausgibt, ob ein Dreieck vorliegt oder nicht. (Stichwort Dreicksungleichung)


>> Lösungen

>> Mehrfachverzweigungen