Rückblick
Logik ist der Teil der Programmierung, der sich am ehesten wie Mathematik anfühlt – und der am seltensten ausprobiert wird. Dabei lässt sich jede Behauptung über einen logischen Ausdruck in Sekunden prüfen: einfach ausgeben lassen.
Das kann ich jetzt
- Ich kann
and,orundnotanwenden und ihre Bedeutung erklären. (3.1) - Ich weiß, dass ein Vergleich einen Wahrheitswert liefert, und kann mit
TrueundFalsearbeiten. (3.2) - Ich kann eine Wahrheitstafel aufstellen. (3.2)
- Ich kenne die Vorfahrtsregeln:
notvorandvoror. (3.3) - Ich kann einen logischen Ausdruck durch Klammern eindeutig machen. (3.3)
Gemischte Aufgaben
Aufgabe 1: Vorfahrt beachten
Bestimme für jeden Ausdruck den Wert. Schreib dazu, in welcher Reihenfolge ausgewertet wird – setz dazu die Klammern, die Python sich denkt.
print(not True and False or True)
print(not (True and False) or False)
print(True or False and False)
print((True or False) and False)
a) Notiere die vier Ergebnisse und die gedachten Klammern.
b) Die dritte und die vierte Zeile unterscheiden sich nur durch die Klammern und liefern trotzdem verschiedene Werte. Erkläre.
c) Prüfe deine Antworten im Übungsbereich.
d) Formuliere die Vorfahrtsregel in einem Satz und vergleiche sie mit der Regel „Punkt vor Strich".
Aufgabe 2: Bedingungen formulieren
Schreib für jede Situation eine Bedingung in Python. Benutze die Variablen alter, hat_ticket, regen und wochentag.
a) Jemand darf hinein, wenn er mindestens 16 ist und ein Ticket hat.
b) Jemand darf hinein, wenn er mindestens 16 ist oder ein Ticket hat.
c) Es wird gespielt, wenn es nicht regnet.
d) Es wird gespielt, wenn es nicht regnet und der Wochentag weder Samstag noch Sonntag ist.
e) Jemand zahlt den ermäßigten Preis, wenn er jünger als 14 oder älter als 64 ist.
f) Schreib zu d) eine zweite, gleichwertige Fassung, bei der das not an einer anderen Stelle steht.
Tipp zu f)
„Nicht Samstag und nicht Sonntag" ist dasselbe wie „nicht (Samstag oder Sonntag)". Probier beide Fassungen mit allen Wochentagen durch – sie liefern immer denselben Wert.
Aufgabe 3: Wahrheitstafel und Turtle
a) Stell die vollständige Wahrheitstafel für a and not b auf. Wie viele Zeilen hat sie?
b) Wie viele Zeilen hätte eine Tafel mit drei Variablen? Begründe.
c) Schreib ein Turtle-Programm, das eine Ampel zeichnet: drei Kreise untereinander. Welche Farbe leuchtet, steuerst du mit zwei Wahrheitswerten frei und warnung:
freiwahr undwarnungfalsch → grün leuchtet,warnungwahr → gelb leuchtet,- sonst → rot leuchtet.
Die nicht leuchtenden Lampen bleiben grau.
Tipp 1: Die Kreise
circle(30) zeichnet einen Kreis mit Radius 30. Damit die drei untereinander sitzen, setzt du die Turtle jeweils mit penup(), goto(...) und pendown() an die richtige Stelle.
Gefüllt wird mit begin_fill() vor und end_fill() nach dem Kreis; die Füllfarbe legt fillcolor("green") fest.
Tipp 2: Die Bedingungen
Leg die drei Farben zuerst in Variablen fest und zeichne erst danach:
farbe_oben = "gray"
farbe_mitte = "gray"
farbe_unten = "gray"
if frei and not warnung:
farbe_unten = "green"
elif warnung:
farbe_mitte = "yellow"
else:
farbe_oben = "red"
So steht die Entscheidung an einer Stelle und das Zeichnen an einer anderen – das ist auch bei größeren Programmen die richtige Aufteilung.