Wahrheitswerte Flashcards
Boolesche Funktionen; der Typ 𝚋𝚘𝚘𝚕; logische und relationale Operatoren; Kurzschlussauswertung
Was repräsentiert der Typ 𝚋𝚘𝚘𝚕 und was ist sein Wertebereich?
Der Typ 𝚋𝚘𝚘𝚕 repräsentiert Wahrheitswerte. Sein Wertebereich ist {𝚏𝚊𝚕𝚜𝚎, 𝚝𝚛𝚞𝚎} bzw. {0, 𝟷}.
Was sind relationale Operatoren, was für Werte geben sie aus und welche Operatoren gibt es?
Relationale Operatoren vergleichen verschiedene R-Werte und geben einen R-Wert des Typs 𝚋𝚘𝚘𝚕 zurück. Es gibt: (In Klammer jeweils: Stelligkeit, Präzedenz, Ass.)
- kleiner < (2, 11, l)
- grösser > (2, 11, l)
- kleiner gleich <= (2, 11, l)
- grösser gleich >= (2, 11, l)
- gleich == (2, 10, l)
- ungleich != (2, 10, l)
Was ist eine Boolesche Funktion?
Eine Funktion f: {0, 1}² → {0, 1}, die für logische Operationen einen Wahrheitswert ausgibt.
Welche logischen Operatoren existieren und welches ist ihre C++-Syntax?
Es gibt: (In Klammer jeweils: Stelligkeit, Präzedenz, Ass.) - Logisches “Und”: 𝚊 && 𝚋 (2, 6, l)
- Logisches “Oder”: 𝚊 || 𝚋 (2, 5, l)
- Logisches “Nicht”: !𝚋 (1, 16, r)
Wie werden logische, arithmetische und relationale Operatoren gebunden in Anbetracht ihrer Präzedenzen?
- Unäre logische Operatoren (z.B. “nicht”)
- Binäre arithmetische Operatoren (z.B. “5 + b”)
- Relationale Operatoren (z.B. “kleiner als”)
- Binäre logische Operatoren (z.B. “oder”)
Wie wird der folgende Ausdruck geklammert?
𝟽 + 𝚡 < 𝚢 && 𝚢 != 𝟹 * 𝚣 || !𝚋
(((𝟽 + 𝚡) < 𝚢) && (𝚢 != (𝟹 * 𝚣))) || (!𝚋)
Es gibt auch logische Operationen, die aus den drei grundlegenden Booleschen Funktionen kombiniert werden können, z.B. das “exklusive Oder”. Wie wird es konstruiert?
XOR(x, y) = UND(ODER(x, y), NICHT(UND(x, y))).
oder in C++:
𝚡 || 𝚢) && !(𝚡 && 𝚢
Wie werden die Typen 𝚋𝚘𝚘𝚕 und 𝚒𝚗𝚝 jeweils in den anderen Typen kombiniert?
Von 𝚋𝚘𝚘𝚕 → 𝚒𝚗𝚝:
𝚝𝚛𝚞𝚎 → 𝟷
𝚏𝚊𝚕𝚜𝚎 → 0
Von 𝚒𝚗𝚝 → 𝚋𝚘𝚘𝚕:
≠0 → 𝚝𝚛𝚞𝚎
0 → 𝚏𝚊𝚕𝚜𝚎
Welches sind die beiden DeMorganschen Regeln?
(1) !(𝚊 && 𝚋) == (!𝚊 || !𝚋)
2) !(𝚊 || 𝚋) == (!𝚊 && !𝚋
Was bedeutet die sogenannte Kurzschlussauswertung?
Falls Aufgrund der Linkspräzedenz der beiden binären logischen Operatoren das Ergebnis schon feststeht, wird der rechte Teil nicht mehr ausgewertet.
Zum Beispiel für 𝚡 == 𝟹 ist der Ausdruck
𝚡 != 𝟹 && 𝚡 / 𝟹 > (𝚢 || 𝚣) schon nach 𝚡 != 𝟹 falsch und der rechte Teil wird übersprungen.