03 Wahrheitswerte

Wahrheitswerte revisited #

Tafel mit Wahrheitswerten

Das Ergebnis eines Vergleichs kann »wahr« oder »falsch« sein #

int zahl = 3;
println(zahl == 2);
// false
println(zahl == 3);
// true
  1. Ein wichtiger Unterschied: = nimmt eine Zuweisung vor, == einen Vergleich!
  2. Das Ergebnis eines solchen Vergleichs ist entweder true (wahr) oder false (falsch).
  3. true und false sind Wahrheitswerte. Obwohl es nur diese beiden gibt, haben sie einen eigenen Datentyp: boolean

Wahrheitswertvariablen #

// Die Variable zahl muss noch vorhanden sein!
boolean vergleich = zahl == 3;
  1. Auch Wahrheitswerte lassen sich in Variablen abspeichern, hier in der Variable vergleich.
  2. Wie jede andere Variable hat vergleich einen Datentyp, nämlich boolean.
boolean meinWahrheitswert = true;
  1. Wahrheitswerte lassen sich auch ohne Vergleich direkt einer Variable zuweisen.

Mehr Vergleichsoperatoren #

Hier nehmen wir an, dass a und b ganze Zahlen enthalten.

Operator Bedeutung
a == b Ist a gleich b?
a != b Ist a ungleich b?
a < b Ist a kleiner als b?
a > b Ist a größer als b?
a <= b Ist a kleiner oder gleich b?
a >= b Ist a größer oder gleich b?

Logische Operatoren #

Müsli nur ohne Rosinen und Nüssen

boolean mitRosinen = true;
boolean mitNüssen = false;
println("Im Müsli sind Nüsse und Rosinen.");
println(mitNüssen && mitRosinen);
println("Im Müsli sind Nüsse oder Rosinen.");
println(mitNüssen || mitRosinen);
  1. Sollen mehrere Wahrheitswerte verknüpft werden, ist das möglich.
  2. und überprüft, ob beide Wahrheitswerte wahr sind. Ist das nicht so, ist der ganze Ausdruck falsch. Im Programmcode schreiben wir &&.
  3. oder überprüft, ob einer der beiden Wahrheitswerte wahr ist. Ist das nicht so, ist der ganze Ausdruck falsch. Im Programmcode schreiben wir ||.
Rosinen Nüsse Nüsse && Rosinen Nüsse || Rosinen
true true true true
true false false true
false true false true
false false false false

println("Im Müsli sind keine Rosinen.")
println(!mitRosinen)
  1. ! dreht einen Wahrheitswert um.
  2. Gedanklich können wir !mitRosinen also als nicht mit Rosinen lesen.
Rosinen !Rosinen
true false
false true

Das Ergebnis eines Vergleichs kann »wahr« oder »falsch« sein #

zahl = 3;
print(zahl == 2)
# False
print(zahl == 3)
# True
  1. Ein wichtiger Unterschied: = nimmt eine Zuweisung vor, == einen Vergleich!
  2. Das Ergebnis eines solchen Vergleichs ist entweder True (wahr) oder False (falsch).
  3. True und False sind Wahrheitswerte. Obwohl es nur diese beiden gibt, haben sie einen eigenen Datentyp: bool

Wahrheitswertvariablen #

# Die Variable zahl muss noch vorhanden sein!
vergleich = zahl == 3
  1. Auch Wahrheitswerte lassen sich in Variablen abspeichern, hier in der Variable vergleich.
  2. Wie jede andere Variable hat vergleich einen Datentyp, nämlich bool.
meinWahrheitswert = True
  1. Wahrheitswerte lassen sich auch ohne Vergleich direkt einer Variable zuweisen.

Mehr Vergleichsoperatoren #

Hier nehmen wir an, dass a und b ganze Zahlen enthalten.

Operator Bedeutung
a == b Ist a gleich b?
a != b Ist a ungleich b?
a < b Ist a kleiner als b?
a > b Ist a größer als b?
a <= b Ist a kleiner oder gleich b?
a >= b Ist a größer oder gleich b?

Logische Operatoren #

Müsli nur ohne Rosinen und Nüssen

mit_rosinen = True
mit_nüssen = False
print('Im Müsli sind Nüsse und Rosinen.')
print(mit_nüssen and mit_rosinen)
print('Im Müsli sind Nüsse oder Rosinen.')
print(mitNüssen or mitRosinen)
  1. Sollen mehrere Wahrheitswerte verknüpft werden, ist das möglich.
  2. und überprüft, ob beide Wahrheitswerte wahr sind. Ist das nicht so, ist der ganze Ausdruck falsch. Im Programmcode schreiben wir and.
  3. oder überprüft, ob einer der beiden Wahrheitswerte wahr ist. Ist das nicht so, ist der ganze Ausdruck falsch. Im Programmcode schreiben wir or.
Rosinen Nüsse Nüsse and Rosinen Nüsse or Rosinen
True True True True
True False False True
False True False True
False False False False

print("Im Müsli sind keine Rosinen.")
print(not mit_rosinen)
  1. not dreht einen Wahrheitswert um.
  2. Gedanklich können wir not mitRosinen also als nicht mit Rosinen lesen.
Rosinen not Rosinen
true false
false true

Aufgabe: Wahrheitswertvariable #

Nimm an, du hast eine Variable vergleich, die einen Wahrheitswert enthält. Macht es etwas aus, ob du vergleich oder vergleich == true (Java) bzw. vergleich == True (Python) schreibst?

Schreibe ein Programm, um das auszuprobieren. (Drei Zeilen höchstens…)

Aufgabe: Viele Vergleiche #

Schreibe ein Programm, dass für zwei beliebige ganze Zahlen alle Vergleichsoperatoren ausprobiert.

Die Ausgabe sollte etwa so aussehen:

Gib einen Wert für a ein: 5
Gib einen Wert für b ein: 3
Ist a gleich b?
false
Ist a ungleich b? 
true
Ist a kleiner als b? 
false
Ist a größer als b? 
true
Ist a kleiner oder gleich b?
false
Ist a größer oder gleich b? 
true

Flashcards #

Welcher Datentyp ergibt sich aus dem Ausdruck 5 < 7?
Der Datentyp boolean.
Der Datentyp bool.
Gib einen logischen Ausdruck an, mit dem überprüft wird, ob eine Zahl, die in der Variable zahl abgespeichert ist, zwischen 8 und 13 liegt (jeweils einschließlich).
zahl >= 8 && zahl <=13
zahl >= 8 and zahl <=13
Gib zwei logische Ausdrücke an, mit denen überprüft wird, ob eine Zahl, die in der Variable zahl abgespeichert ist, nicht zwischen 8 und 13 liegt.
!(zahl >= 8 && zahl <=13)
zahl < 8 || zahl > 13
not (zahl >= 8 and zahl <=13)
zahl < 8 or zahl > 13

Gib die Antwort auf diese Frage mit Hilfe eines kleinen Programms.

Ist zwei mal eins plus eins drei oder vier?

boolean antwort = 2 * 1 + 1 == 3 || 2 * 1 + 1 == 4;
println(antwort); // true
antwort = 2 * 1 + 1 == 3 or 2 * 1 + 1 == 4
print(antwort) # True