Informatik

Vorfahrtsregeln

In der Mathematik gilt „Punkt vor Strich". Bei logischen Verknüpfungen gibt es ebenfalls Vorfahrtsregeln:

  1. not bindet am stärksten – es geht immer vor.
  2. Danach gilt and vor or.
  3. Klammern kannst du wie in mathematischen Termen verwenden. Sie haben immer Vorrang.

Ein Beispiel:

not True and False or True

wird von Python gelesen als

((not True) and False) or True

Aufgabe 1: Werte bestimmen

Ermittle zuerst selbst, welchen Wert die folgenden Ausdrücke jeweils haben. Notiere deine Ergebnisse hinter den Kommentaren.

Kontrolliere sie danach mit Python.


      
    
print(not True and False) # Ergebnis: print(not (True and False)) # Ergebnis: print(not False or not True) # Ergebnis: print(False and True or False) # Ergebnis: print(False and (True or False)) # Ergebnis: print(not False and (True or False)) # Ergebnis:
Tipp: Schrittweise auflösen

Gehe wie beim Rechnen vor und ersetze immer den innersten bzw. am stärksten bindenden Teil:

not True and False
  (not True) and False
  False and False
  False
Lösungen. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 2: Das Eis-Programm reparieren

In der letzten Lektion ist dir vielleicht schon aufgefallen, dass mit dem Eis-Programm etwas nicht stimmt.

a) Setze im Programm unten mehr_als_zehn_euro = True und probiere alle Kombinationen der beiden anderen Variablen durch. Was stellst du fest?

b) Erkläre mithilfe der Vorfahrtsregeln, warum das so ist.

c) Setze eine Klammer so, dass die Regel lautet: „Es gibt Eis, wenn nicht Montag ist und außerdem entweder die Sonne scheint oder ich mehr als zehn Euro dabeihabe."


      
    
heute_ist_montag = False die_sonne_scheint = False mehr_als_zehn_euro = True eis_essen = not heute_ist_montag and die_sonne_scheint or mehr_als_zehn_euro if eis_essen: print("Ich gehe ein Eis essen!") else: print("Heute gibt es kein Eis!")
Tipp zu b)

Weil and vor or geht, liest Python die Zeile so:

((not heute_ist_montag) and die_sonne_scheint) or mehr_als_zehn_euro

Bei einem or reicht eine wahre Seite. Ist also mehr_als_zehn_euro wahr, ist das Gesamtergebnis wahr – der Rest der Bedingung spielt keine Rolle mehr.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe 3: Eine Bedingung in Worte fassen

Beschreibe in einem Satz, wann die folgende Bedingung wahr ist:

not (regen or schnee) and temperatur > 15

Formuliere anschließend eine Bedingung für: „Der Ausflug findet statt, wenn es weder regnet noch schneit und wenn entweder der Bus fährt oder genug Fahrräder da sind."

Auflösung zum ersten Teil

Die Bedingung ist wahr, wenn es weder regnet noch schneit und die Temperatur gleichzeitig über 15 Grad liegt.

Auflösung zum zweiten Teil
ausflug = not (regen or schnee) and (bus_faehrt or genug_fahrraeder)

Beide Klammern sind nötig: die erste, damit sich das not auf beides bezieht, die zweite, damit sich das or nicht über das and hinweg durchsetzt.

Ein Tipp aus der Praxis: Auch erfahrene Programmiererinnen und Programmierer setzen häufig Klammern, obwohl die Vorfahrtsregeln sie nicht erzwingen.

Der Grund ist nicht, dass sie die Regeln nicht kennen – sondern dass Klammern die Absicht sichtbar machen. Wer den Code später liest, muss dann nicht raten.


Selbsttest

Vorfahrtsregeln

Teilbare URL erstellen

Abschnitte auswählen