Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

7Bedingte Verzweigung

Neben den Schleifen ist die Bedingte Verzweigungen die wichtigste Kontrollstruktur in jeder Programmiersprache. Du hast sie im aktuellen Programm schon benutzt. Der Aufbau ist immer der Gleiche.

Bild

Wenn die Bedingung wahr ist, dann soll etwas passieren und wenn sie nicht wahr ist, dann soll etwas anderes passieren.

if «Bedingung»
    «tu was»
else
    «tu was anderes»
Bild

Der else-Teil kann auch weggelassen werden.

if «Bedingung»
    «tu was»

True und False

Wir wollen hier noch einmal kurz auf die beiden Wahrheitswerte True und False, die du schon bei der while-Schleife im letzten Kurs kennengelernt hast, zurückkommen.

In der booleschen Algebra - keine Angst, es ist ganz einfach - beschäftigt man sich mit Aussagen, entweder wahr (True) oder Falsch (False) sein können. Entscheide selbst, welche der folgenden Aussage wahr (True) und welche nicht wahr (False) ist. Zwei Gleichheitszeichen sind gleichbedeutend mit "ist gleich"

11 + 1 == 2
22 + 5 == 6
34 < 4
45 >= 5
5button.value == True
6tempsensor.value > 10

Wie du siehst, es gibt Aussagen, die immer wahr sind und solche, die sowohl wahr als auch falsch sein können. Wenn der Taster gerade gedrückt ist, dann ist wäre die Aussage 5 wahr, sonst nicht. Und wenn die Temperatur größer als 10 ist, kann wahr oder falsch sein. Eine Aussage, die immer wahr ist, kann man einfach durch True ersetzen, wie du es von der Endlosschleife schon kannst. Solche Aussagen sind langweilig.

Probiere man ob, du in der while-Schleife anstelle von True auch 1+1==2 schreiben kannst. Was geht noch?

Fällt dir auch ein Beispiel ein, welches du anstelle von False schreiben könntest?

Betrachte noch einmal die Zeile 5. Wenn der Taster gedrückt ist, dann steht doch dort True == True. Nur Anfänger schreiben solche Bedingungen. Es ist nämlich vollkommen ausreichend, wenn du einfach button.value schreibt - so wie im letzten Programm in Zeile 18. Man sagt: value ist eine Variable vom Typ boolean.

Man kann noch viel mehr Sachen mit booleschen Variablen anfangen. Du kannst dir diesen Artikel auf Serlo dazu anschauen.

Das Programm auf der vorherigen Seite ist ein sehr gutes Beispiel dafür, dass man manchmal gar keine Bedingte Verzweigung braucht. Schauen wir uns die 8 Zeilen noch einmal an:

Bild
while True:
    if button.value:
        led_green.value = True
    else:
        led_green.value = False

    if door.value:
        led_red.value = True
    else:
        led_red.value = False

Überlege dir, wie du aus den acht Zeilen im Schleifenrumpf zwei machen kannst. Wenn der Taster gedrückt ist, dann ist der Wert von button.value True und so soll auch die LED leuchten - also True sein. Bei der zweiten Verzweigung genauso.

Kurzgesagt: led.value soll den Wert haben, den button.value hat.

Schreibe den Schleifenrumpf so um, dass er nur aus zwei Zeilen besteht und schaue dir erst danach die Lösung an.

Negation (not)

Du kannst eine Bedingung übrigens auch umkehren, indem du das Keyword not vor eine Bedingung stellst. Der folgende Code tut das Gleiche, wie der obige:

if not button.value:
    led_green.value = False
else:
    led_green.value = True

Auf der folgenden Seite in diesem Kurs lernst du, wie man Programme visualisieren kann. Denn je komplexer Programme versteht man besser, wenn man sie auf eine elegante Art graphisch darstellen kann.


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?