Labor – Wahrheitstabellen, Boolsche Ausdrücke
1. Wahrheitstabellen
Erstelle eine Klasse Wahrheitstabellen (logische Ausdrücke).
Diese enthält Methoden zur Ausgabe der Wahrheitstabellen für folgende logische Ausrücke:
-
a ˅ b
-
a ˄ b
-
¬ a
-
¬ (a ˅ b) ˄ ¬c
Die ersten beiden verknüpfen 2 Aussagen → Ergebnis 4 Zeilen,
Nr. 3 eine Aussage → 2 Zeilen
Nr. 4 verknüpft 3 Aussagen → 8 Zeilen
Die Ausgabe für die Wahrheitstabelle der Konjunktion (logisches UND) könnte so aussehen:
Wahrheitstabelle für: a UND b ------------------------------- a=false b=false a&&b=false OK a=false b=true a&&b=false OK a=true b=false a&&b=false OK a=true b=true a&&b=true OK oder a b a && b OK/ERR -------------------------------- false false false OK false true false OK true false false OK true true true OK
Es ist jeweils eine Methode für die Erstellung einer Tabellenzeile zu implementieren, die als Parameter 1, 2 oder 3 Wahrheitswerte hat und durch Berechnung der Verknüpfung mit Java-Mitteln das Ergebnis generiert.
Die Methodennamen könnten z.B. sein:
-
printZeile_A_oder_B(boolean a, boolean b, boolean erwartet)
-
printZeile_A_und_B(boolean a, boolean b, boolean erwartet)
-
printZeile_not_A(boolean a, boolean erwartet)
-
printZeile not_A_oder_B_undNot_C(boolean a, boolean b, boolean c, boolean erwartet)
Diese Zeilen-Ausgabe-Methoden werden für jede der 2 4 oder 8 Zeilen der Wahrheitstabelle hintereinander aufgerufen, um so alle Zeilen anzuzeigen. Davor wird die Titelzeile als simpler Text ausgegeben.
Die Reihenfolge der Wahrheit-Muster wird so gewählt, dass aufsteigend die Zahlen im Binärsystem gebildet werden, wenn man false als 0 und true als 1 interpretiert – z.B.:
0/0 → false/false, 0/1 → false/true, 1/0 → true/false, 1/1 → true/true
Wenn die Berechnungsmethode als weiteren Parameter den erwarteten Ergebniswert enthält, kann bei Übereinstimmung daneben 'OK' oder 'ERR' ausgegeben werden.
2. Boolsche Ausdrücke
Schreibe neben jedem println(…) als Kommentar das Ergebnis!
Siehe erste Lösung!
Abgabe im README.TXT des BlueJ-Projekts.
public class OperatorUebungen {
public void ausgabeRelationaleOperatoren1() {
boolean b1 = true;
System.out.println("b1 hat den Wert: " + b1);
// Relationale Operatoren
b1 = 2 > 4;
System.out.println("b1 = " + b1); // b1 = false
b1 = 5 > 4;
System.out.println("b1 = " + b1); // jeweils Erwartungswert hier!
b1 = 4 >= 4;
System.out.println("b1 = " + b1);
b1 = 4 <= 3;
System.out.println("b1 = " + b1);
b1 = 3 <= 4;
System.out.println("b1 = " + b1);
b1 = 3 == 4;
System.out.println("b1 = " + b1);
b1 = 4 == 4;
System.out.println("b1 = " + b1);
b1 = 4 == (16 % 4);
System.out.println("b1 = " + b1);
b1 = 4 == (16 / 4);
System.out.println("b1 = " + b1);
b1 = 3 != 4;
System.out.println("b1 = " + b1);
b1 = 4 != 4;
System.out.println("b1 = " + b1);
b1 = 4 < 4 + 3;
System.out.println("b1 = " + b1);
}
public void ausgabeUND1() {
boolean b1 = true;
System.out.println("b1 = " + b1);
// UND Operatoren
b1 = true && true;
System.out.println("b1 = " + b1);
b1 = true && false;
System.out.println("b1 = " + b1);
b1 = true && false && true;
System.out.println("b1 = " + b1);
b1 = true && 3 > 5;
System.out.println("b1 = " + b1);
b1 = true && 3 < 5;
System.out.println("b1 = " + b1);
b1 = true || false || true;
System.out.println("b1 = " + b1);
b1 = true && 3 <= 5 && 4 >= 3;
System.out.println("b1 = " + b1);
b1 = !(true && 3 != 5);
System.out.println("b1 = " + b1);
}
public void ausgabeODER1() {
boolean b1 = true;
System.out.println("b1 = " + b1);
// ODER Operatoren
b1 = true || true;
System.out.println("b1 = " + b1);
b1 = true || false;
System.out.println("b1 = " + b1);
b1 = true || false || false;
System.out.println("b1 = " + b1);
b1 = true || 3 < 5;
System.out.println("b1 = " + b1);
b1 = true || 3 < 5;
System.out.println("b1 = " + b1);
b1 = true || false || true;
System.out.println("b1 = " + b1);
b1 = false || 3 > 5;
System.out.println("b1 = " + b1);
b1 = true || !(true || 3 <= 5);
System.out.println("b1 = " + b1);
}
public void ausgabeUndOder1() {
boolean b1 = true && false || true;
System.out.println("b1 = " + b1);
b1 = true && false || false;
System.out.println("b1 = " + b1);
b1 = true || true && (false || true);
System.out.println("b1 = " + b1);
b1 = false || true && (false || true);
System.out.println("b1 = " + b1);
b1 = !(false || true && !(false || true));
System.out.println("b1 = " + b1);
}
}