Mit Verzweigungen können zwei Anweisungsblöcke alternativ ausgeführt werden. Ein Block für den Fall, dass eine gewisse Bedingung erfüllt ist, und ein anderer Block, wenn diese nicht erfüllt ist.
Inhaltsverzeichnis
Einordnung
Kursblog L8T3: Verzweigungen
Dieser Blog wird vom IAIP gratis zur Verfügung gestellt. Der Blog ist ein Bestandteil des Kurses K103 «Programmieren mit Turtle Graphics» und gehört zur Lektion 8, Themenblock 3 (L8T3).
Der Kurs führt dich durch die einzelnen Blogs, enthält Zusatzmaterialien und Quizze zur Lernkontrolle. Der Kurs hat eine Kursgebühr von CHF 50.- Mit dem Einschreiben zum Kurs hilfst du mit, dass solche Blogs auch zukünftig noch gratis zur Verfügung gestellt werden können.
Rückblick
Im vorletzten Themenblog (siehe K103: bedingte Anweisungen) haben wir bedingte Anweisungen kennengelernt. Bedingte Anweisungen sind Befehle, welche dann ausgeführt werden, wenn eine gewisse Bedingung erfüllt ist. Im letzten Themenblog (siehe K103: Bedingungen und ihre Möglichkeiten) haben wir dann die zu überprüfende «Bedingung» genauer betrachtet. Wir haben dabei gesehen, wie man 2 Sachen (Objekte) mit ==, !=, <, >, <=, >= vergleichen kann (ist der erste Wert gleich, ungleich, grösser, kleiner, etc. als der zweite Wert?). Ebenso, wie sich mehrere Bedingungen miteinander verknüpfen (kombinieren) lassen.
Schwerpunkte
In diesem Blogbeitrag widmen wir uns einer wichtigen Ergänzung: den Verzweigungen. Schwerpunkte sind:
- allgemeine Syntax von Verzweigungen (if-else)
- angepasstes Struktogramm, Darstellung im Flussdiagramm
Ergänzung
Der Blogbeitrag «Bedingte Anweisungen und Verzweigungen in Python» enthält neben der nachfolgenden Theorie weitere, darüber hinausgehende Informationen zum Thema bed. Anweisungen & Verzweigungen.
Verzweigungen mit if und else erstellen
Einführendes Beispiel
Über die if-Anweisung kann man eine Kommandofolge auszuführen, falls eine Bedingung erfüllt ist. Doch was passiert, wenn die Bedingung nicht erfüllt ist?
Nutzt man zusätzlich das Schlüsselwort else, so lässt sich eine Kommandofolge ausführen, wenn die Bedingung «wahr» ist, und eine andere, wenn sie «falsch» ist. Der Begriff «else» ist wiederum Englisch und bedeutet zu Deutsch etwa soviel wie «sonst» oder «anderenfalls».
Hierzu ein Anschauungsbeispiel:
from turtle import * alter = numinput("Alter", "Bitte gib dein Alter ein: ") if alter >= 18: write("Du bis ein Erwachsener.") circle(100, 360, 5) else: write("Du bist noch zu jung für unsere Figur!") exitonclick()
Das Programm fragt unseren User nach seinem Alter. Die Eingabe wird in der Variable alter abgelegt. Ist er 18 Jahre oder älter, so erfolgt die Ausgabe «Du bist ein Erwachsener», zusammen mit einem Fünfeck. Ansonsten schreibt der Computer «Du bist noch zu jung für unsere Figur!».

Syntax von Verzweigungen
Eine Verzweigung (auch Auswahl oder Selektion genannt) besteht aus einer Bedingung und zwei Codeabschnitten. Wieder wird die Bedingung ausgewertet, und falls sie zutrifft, wird anschliessend der erste Codeabschnitt ausgeführt. Neu wird nun aber für den Fall, dass die Bedingung nicht zutrifft, der zweite Codeabschnitt ausgeführt. Die Verzweigung legt fest, welcher von zwei Programmteilen (Alternativen) in Abhängigkeit von einer Bedingung ausgeführt wird.
Die Syntax einer Verzweigung in Python ist wie folgt:
if Bedinung:
Anweisung 1
Anweisung 2
Anweisung 3
else:
Anweisung 4
Anweisung 5
Besonders zu beachten ist:
- Das Schlüsselwort else ist auf derselben Einrückungsebene wie die zugehörige if
- Nach else steht jeweils ein Doppelpunkt (wie auch nach dem Abschluss der if- Kopfzeile). else repräsentiert in diesem Sinne die Kopfzeile des zweiten Teils, wobei dieser keine eigene Bedingung benötigt.
- Die zu else zugehörigen Anweisungen (also jene, welche ausgeführt werden sollen, wenn die Bedingung nicht erfüllt ist) sind wiederum eingerückt. Stilistisch sauber ist, wenn der Einschub gleich gross wie bei den bedingten Anweisungen des ersten Teils ist. Zwingend notwendig ist dies jedoch nicht.
- Löse nun die Aufgaben 1 und 2
Struktogramm und Flussdiagramm (ergänzende Informationen)
Flussdiagramm und Struktogramm bei Verzweigung
Manchmal ist es wie erwähnt hilfreich, die Funktionsweise bedingter Anweisungen oder eben auch von Verzweigungen ganz abstrakt anhand eines sog. Struktogramms oder eines Flussdiagramms darzustellen. Solche Struktogramme und Flussdiagramme haben einen didaktischen Wert, insbesondere wenn es darum geht, die Funktionsweise von Kontrollstrukturen (bedingte Anweisungen, Verzweigungen, Schleifen) zu illustrieren.
Nachfolgend sind die Struktogramme (links) bzw. Flussdiagramme (rechts) bedingten Anweisungen im Vergleich zu einer Verzweigung dargestellt. Sie sind, wie zu erwarten ist, weitgehend identisch. Der einzige Unterschied besteht darin, dass es nun auch eine «ausgefüllte» Box für den Fall gibt, in welchem die Bedingung nicht erfüllt ist.

Zur Illustration ergänzen wir unser Programm «Wie geht es dir heute» um einen else. Das Programm soll wiederum auf den Bildschirm «Das freut mich. Mir geht es auch gut» schreiben, falls der Benutzer «gut» eingegeben hat. Und andernfalls soll er neu «Ich verstehe das Wort nicht.» ausgeben.
from turtle import * zustand = textinput("Zustand", "Wie geht es dir heute?") penup() hideturtle() if zustand == "gut": write("Das freut mich. ", move=True) write("Mir geht es auch gut!") else: write("Ich verstehe das Wort nicht.") goto(0, -20) write("Ende") exitonclick()
Übersetzen wir das Programm, so ergeben sich folgende 2 Diagramme:

- Skizziere nun für die Aufgaben 1 und 2 jeweils ein Flussdiagramm bzw. ein Struktogramm
Übungsaufgaben
Nachfolgend findest Du ein paar Übungsaufgaben.
Aufgabe 1: Sesam öffne dich IV
Geben ist unser Programm aus Aufgabe 1 des vorangehenden Themenblogs, welches den User zur Eingabe eines Passworts aufforderte. Entspricht die Eingabe der Zeichenfolge «Sesam öffne dich», so erfolgt wiederum die Ausgabe «Das Passwort ist korrekt». Gibt er etwas anderes ein, so soll die Ausgabe «Das Passwort ist falsch!» geschrieben werden. Neu wollen dies jedoch mit einer Verzweigung machen (anstelle eines zweiten Blocks mit passwort != «Sesam öffne dich».
Aufgabe 2: Figur nach Wunsch IV
Geben ist unser Programm «Figur nach Wunsch III» aus Aufgabe 2b des vorangehenden Themenblogs .
Der Computer generiert eine Zufallszahl. Diese ist entweder 0 oder 1 (random.randint(0,1)). Falls die Zufallszahl 0 ist, so wird die Figur in roter Farbe gemalt (pencolor(«red»)). Ist die Zahl 1, so wird die Figur in blauer Farbe gemalt (pencolor(«blue»). Erstelle hierzu eine Verzweigung mit if und else.

Lösungen zu den Übungsaufgaben
Lösung zur Aufgabe 1: Sesam öffne dich IV
Nachfolgend findest du das Programmbeispiel:
from turtle import * write("Bitte Passwort eingeben, um die geheime Figur zu sehen") passwort = textinput("Geheime Figur", "Bitte Passwort eingeben") clear() if passwort == "Sesam öffne dich": circle(100) else: write("Das Passwort ist falsch!") exitonclick()
Lösung zur Aufgabe 2: Figur nach Wunsch II
Nachfolgend findest du das Programmbeispiel:
from turtle import * import random fig = textinput("Figur", "Was soll gezeichnet werden") g = numinput("Grösse", "Welche Grösse") if g < 10: g = 10 if g > 200: g = 200 if random.randint(0,1) == 0: pencolor("red") else: pencolor("blue") if fig == "Viereck" or fig == "Quadrat" or fig == "square": forward(g) right(90) forward(g) right(90) forward(g) home() if fig == "Kreis" or fig == "circle": circle(g) exitonclick()
Comments