Verzweigungen

Häufig ist es notwendig, die Ausführung eines Algorithmus in Abhängigkeit von bestimmten Bedingungen zu verzweigen. Dazu verwendet man Alternativen bzw. Verzweigungen. Diese werden hier vorgestellt.

Einfache Verzweigung mit und ohne Alternative

Bei einfachen Verzweigungen steht am Anfang immer eine Frage, die mit ja oder nein beantwortet werden kann. Diese Frage wird auch Bedingung genannt, die wahr (entspricht ja) oder falsch (entspricht nein) sein kann. In Ahängikeit von der Beantwortung der Frage werden nun die Anweisungen des Algorithmus ausgeführt.

Verzweigung ohne Alternative

Bei der Verzweigung ohne Alternative (, auch einseitige Verzweigung oder einseitige Alternative genannt,) werden Anweisungen nur ausgeführt, wenn die Frage mit ja beantwortet wird bzw. wenn diie Bedingung wahr ist.

Im Satz könnte man formulieren:

Wenn die Bedingung wahr ist, dann führe Anweisungen aus.

Im Struktogramm kann man sie wie folgt darstellen:

Das Struktogramm für eine einfache Alternative besteht zunächst aus einem Rechteck mit drei Dreiecken. Im zentralen Dreieck wird die Frage oder die Bedingung formuliert, im linken Dreieck steht dann wahr oder ja, im rechten Dreieck steht falsch oder nein. Unter dem linken Dreieck erscheint dann ein Rechteck mit einer oder mehreren Anweisungen, die ausgeführt werden, wenn die Bedingung erfüllt ist oder die Frage mit ja beantwortet wird. Bei der Verzweigung ohne Alternative bleibt das Rechteck unter dem rechten Dreieck leer bzw. man schreibt man das Symbol der leeren Menge $\emptyset$ hinein.

In Python kann die Verzweigung ohne Alternative (einseitige Verzweigung) mit der if-Anweisung umgesetzt werden:

if Bedingung: ... Anweisungen ...

Hinter dem if steht die Bedingung. Das ist ein Ausdruck mit dem Datentyp bool, also er kann die Werte True oder False annehmen. Danach kommen die Anweisungen, die im Fall True ausgeführt werden sollen. Sie werden um dieselbe Tiefe eingerückt. Um das Programm nach der if-Anweisung fortzusetzen, muss der Quellcode wieder genau so tief eingerückt werden wie das if.

Beispiel 1

Es ist ein Programm zu erstellen, dass nach Eingabe einer ganzen Zahl entscheidet, ob die Zahl negativ ist. Zusätzlich soll der Betrag der Zahl ausgegeben werden.

Stichwortartige Beschreibung des Algorithmus

Eingabe: Ganze Zahl n Wenn n negativ ist:

Ausgabe: Die Zahl ist negativ

Ausgabe: -n

Darstellung des Algorithmus als Struktogramm

Algorithmus als Pythonprogramm

n = int(input("n = ")) if n < 0: print("Die Zahl n ist negativ.") print("Betrag von n:", -n)

Verzweigung mit Alternative

Bei der Verzweigung mit Alternative (, auch zweiseitige Verzweigung oder zweiseitige Alternative genannt,) werden Anweisungen ausgeführt, wenn die Frage mit ja beantwortet wird bzw. wenn diie Bedingung wahr ist. Wenn Frage mit ja beantwortet wird bzw. die Bedingung falsch ist werden andere Anweisungen ausgeführt.

Im Satz könnte man formulieren:

Wenn die Bedingung wahr ist, dann führe Anweisungen aus, anderenfalls führe andere Anweisungen aus.

Im Struktogramm kann man sie wie folgt darstellen:

Das Struktogramm ist zunächst genau so aufgebaut, wie bei der Verzweigung ohne Alternative. Im Unterschied zu Verzweigung ohne Alternative stehen jetzt unter dem rechten Dreieck die Anweisungen, die ausgeführt werden, wenn die Bedingung nicht erfüllt ist bzw. wenn die Frage mit nein beantwortet wird.

In Python kann die Verzweigung mit Alternative (zweiseitige Verzweigung) mit der if-else-Anweisung umgesetzt werden:

if Bedingung: ... Anweisungen ... else: ... Anweisungen ...

Hinter dem if steht die Bedingung. Das ist ein Ausdruck mit dem Datentyp bool, also er kann die Werte True oder False annehmen. Danach kommen die Anweisungen, die im Fall True ausgeführt werden sollen. Sie werden um dieselbe Tiefe eingerückt. Danach erscheint in derselben Einrücktiefe wie das if das else gefolgt von einem Doppelpunkt. Die nach dem else eingerückten Anweisungen werden ausgeführt, wenn die Bedingung nicht erfüllt ist. Um das Programm nach der else-Anweisung fortzusetzen, muss der Quellcode wieder genau so tief eingerückt werden wie das if.

Beispiel 2

s ist ein Programm zu erstellen, dass nach Eingabe einer ganzen Zahl entscheidet, ob die Zahl negativ oder nichtnegativ ist. Zusätzlich soll der Betrag der Zahl ausgegeben werden.

Stichwortartige Beschreibung des Algorithmus

Eingabe: Ganze Zahl n

Wenn n negativ ist:

Ausgabe: Die Zahl ist negativ

Ausgabe: -n

anderenfalls

Ausgabe: „Die Zahl ist nicht negativ.“

Ausgabe: n

Darstellung des Algorithmus als Struktogramm

Algorithmus als Pythonprogramm

n = int(input("n = ")) if n < 0: print("Die Zahl n ist negativ.") print("Betrag von n:", -n) else: print("Die Zahl n ist nicht negativ.") print("Betrag von n:", n)

Verschachtelte Verzweigungen

Wir wollen nun unser Beispiel erweitern. Nachdem wir festgestellt haben, dass die Zahl nicht negativ ist, soll noch festgestellt werden, ob die Zahl Null ist, oder ob die Zahl positiv ist. Im Struktogramm könnte der Algorithmus so aussehen:

Beispiel 3

In diesem Struktogramm befindet sich im else-Zweig eine weitere Verzweigung. Hier rückt man den Quelltext nach dem inneren if bzw. else noch weiter ein.

n = int(input("n = ")) if n < 0: print("Die Zahl n ist negativ.") print("Betrag von n:", -n) else: if n > 0: print("Die Zahl n ist positiv.") else: print("Die Zahl n ist Null.") print("Betrag von n:", n)

Formulierung der Bedingung

Im Abschnitt Grundlegendes zu Python haben wir die folgenden Operatoren kennengelernt:

Arithmetische Operatoren

Operator	Wirkung bei
int	float	str
+	Addition	Addition	Verkettung
-	Subtraktion	Subtraktion
*	Multiplikation	Multiplikation
/	Division	Division
//	ganzzahlige Division	ganzzahlige Division
%	ganzzahliger Rest (Modulo)	Rest
**	Potenzieren	Potenzieren, Radizieren

Vergleichsoperatoren

Operator	Wirkung
>	größer
<	kleiner
>=	größer gleich
<=	kleiner gleich
==	gleich
!=	ungleich

Logische Operatoren

Operator	Wirkung
A and B	ist wahr, wenn A und B wahr sind
A or B	ist wahr, wenn A oder B oder beide wahr sind
not A	ist wahr, wenn A nicht wahr (falsch) ist

Diese Opratoren können benutzt werden um die Bedingung zu formulieren. Die Bedingung muss vom Datentyp bool sein.

Manchmal ist die Bedingung nich offensichtlich und man muss sich etwas einfallen lassen

Beispiel 4

„Die Zahl n ist durch 3 teilbar“ kann man auch formulieren als „Die Zahl n lässt bei der Division durch 3 den Rest 0“ und dass lässt sich in Python ausdrücken als:

n%3 == 0

Mehrfachverzweigung

In Python gibt es auch die Möglichkeit, in eine Verzweigung mehrere Bedingenungen einzugeben. Im Beispiel zu verschachtelten Verweigungen gibt es insgesamt drei Bedingungen:

- n > 0 - n == 0 - n < 0

Wenn noch mehr Bedingungen nötig sind, wird die Verzweigung noch weiter verschachtelt und der Quellcode wird unübersichtlich. Deshalb hat man in Python die if-elif- else-Anweisung eingeführt: