Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Logische Variablen und logische Terme

Pasch beim Würfeln

Wir betrachten noch einmal das folgende Pasch-Würfel-Problem:

Pasch

Wie lange dauert es, bis man einen 3er-Pasch (bzw. 4er-Pasch, 5er-Pasch usw.) erhält?

Logische Variablen

Logische Variablen sind Variablen, die ein Datenobjekt vom Typ bool verwalten. Das folgende Programm benutzt die logische Variable paschGefunden, um zu erfassen, ob bereits ein 3er-Pasch vorliegt.

from random import randint
# Verarbeitung
paschGefunden = False
versuche = 0
while not paschGefunden:
    w1 = randint(1, 6)
    w2 = randint(1, 6)
    w3 = randint(1, 6)
    versuche = versuche + 1
    if w1 == w2 and w1 == w3:
        paschGefunden = True
# Ausgabe
print(versuche)

Aufgabe 1

(a) Erkläre die Verwendung der Variablen paschGefunden. Teste das Programm.

(b) Ändere das Programm so ab, dass man mit dem Programm die Anzahl der Versuche bis zu einem 4er-Pasch ermitteln kann.

Logische Terme

Logische Terme sind Terme, die bei der Auswertung einen Wahrheitswert als Ergebnis liefern. Logische Terme werden aus einfachen Bedingungen (wie z.B. Vergleichen), den logischen Werten True und False, logischen Variablen und logischen Operatoren (sowie logischen Funktionen) aufgebaut.

Logische Terme werden benutzt, wenn man komplexere Bedingungen beschreibt.

Logischen Terme können - wie im folgenden Programm - aber auch bei Zuweisungen an logische Variablen benutzt werden.

from random import randint
# Verarbeitung
paschGefunden = False
versuche = 0
while not paschGefunden:
    w1 = randint(1, 6)
    w2 = randint(1, 6)
    w3 = randint(1, 6)
    versuche = versuche + 1
    paschGefunden = (w1 == w2 and w1 == w3)
# Ausgabe
print(versuche)

Das Zusammenspiel von logischen Variablen und logischen Operatoren liefert oft kurze und verständliche Programme.

from random import randint
# Initialisierung
n = 5
# Verabeitung
paschGefunden = False
versuche = 0
while not paschGefunden:
    versuche = versuche + 1
    w1 = randint(1, 6)
    zaehler = 1
    istPasch = True
    while zaehler < n:
        w = randint(1, 6)
        zaehler = zaehler + 1
        istPasch = istPasch and (w == w1)        
    if istPasch:
        paschGefunden = True
# Ausgabe
print(versuche)

Aufgabe 2

Was leistet das Programm? Erkläre seine Funktionsweise.

Quellen

X

Fehler melden

X

Suche