7

Click here to load reader

Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

Embed Size (px)

Citation preview

Page 1: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik
Page 2: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

5

Kapitel 5 Aussagenlogik

Eine wichtige mathematische Grundlage für die Formulierung von Programmen ist die Aussagenlo-gik. Sie ermöglicht das „Rechnen“ mit Wahrheitswerten. Die grundlegenden Aspekte der Aussagen-logik werden in diesem Kapitel erläutert.

5.1 Aussagen

Eine Aussage – auch boolescher Ausdruck genannt – ist ein Satz, dem unmittelbar und eindeutigeiner der Wahrheitswerte wahr (true, T) oder falsch (false, F) zugeordnet werden kann.

Bspw. bildet der Satz „Ein Tisch ist ein Möbelstück“ eine wahre Aussage, während es sich bei demSatz „Geh nach Hause“ um keine Aussage handelt, da dem Satz kein Wahrheitswert zugeordnetwerden kann.

5.2 Operationen auf Aussagen

Mit Hilfe sogenannter logischer oder boolescher Operatoren lassen sich die Wahrheitswerte vonAussagen verändern bzw. es lassen sich mehrere Aussagen miteinander verknüpfen. In der Program-mierung sind dabei als boolesche Operatoren insbesondere die Negation (logische Verneinung), dieKonjunktion (logisches „und“) und die Disjunktion (logisches „oder“) von Bedeutung.

5.2.1 Negation

Die Negation – im Folgenden durch das Zeichen „!“ repräsentiert – ist ein monadischer oder unärerOperator, d.h. sie besitzt nur einen Operanden (eine Aussage). Sie bewirkt eine Veränderung ihresOperanden derart, dass sich sein Wahrheitswert ändert. D.h. gegeben eine Aussage P. Besitzt P denWahrheitswert T, dann besitzt die Aussage !P den Wahrheitswert F. Und entsprechend, besitzt Pden Wahrheitswert F, dann besitzt die Aussage !P den Wahrheitswert T. !P ist selbst wieder eineAussage, eine sogenannte zusammengesetzte Aussage.

5.2.2 Konjunktion

Die Konjunktion – im Folgenden durch die Zeichenfolge „&&“ ausgedrückt – ist ein dyadischer oderbinärer Operator, d.h. sie benötigt zwei Operanden (Aussagen). Sie verknüpft ihre beiden Operandenderart, dass die konjugierte zusammengesetzte Aussage genau dann den Wahrheitswert T besitzt,wenn beide Operanden den Wahrheitswert T besitzen. Besitzt einer der beiden Operanden – oderauch beide – den Wahrheitswert F, so besitzt auch die konjugierte Aussage den Wahrheitswert F.

D. Boles, Programmieren spielend gelernt mit dem Java-Hamster-Modell,DOI 10.1007/978-3-8348-2039-6_5, © Springer Fachmedien Wiesbaden 2013

Page 3: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

42 Kapitel 5. Aussagenlogik

5.2.3 Disjunktion

Die Disjunktion – im Folgenden durch die Zeichenfolge „||“ ausgedrückt – ist wie die Konjunktionein dyadischer Operator. Sie verknüpft ihre beiden Operanden (Aussagen) derart, dass die disjun-gierte zusammengesetzte Aussage genau dann den Wahrheitswert F besitzt, wenn beide Operandenden Wahrheitswert F besitzen. Besitzt einer der beiden Operanden – oder auch beide – den Wahr-heitswert T, so besitzt auch die konjugierte Aussage den Wahrheitswert T.

5.2.4 Wahrheitstafeln

Die Auswirkungen von booleschen Operatoren auf Aussagen können in sogenannten Wahrheits-tafeln übersichtlich dargestellt werden. Dabei müssen immer alle Kombinationsmöglichkeiten fürWahrheitswerte ins Auge gefasst werden. Abbildung 5.1 enthält die Wahrheitstafeln für die Negati-on, die Konjunktion und die Disjunktion. Dabei stehen P und Q in der Abbildung als Platzhalter fürbeliebige Aussagen.

P Q P && Q

TF

TFTF

TFFF

P Q P || Q

TTFF

TFTF

TTTF

!P

FT

P

TTFF

Abbildung 5.1: Wahrheitstafeln für Negation, Konjunktion und Disjunktion

5.3 Syntax von Aussagen

Aus Aussagen können nun wiederum mit Hilfe der Operatoren immer komplexere zusammengesetz-te Aussagen gebildet werden, in denen einfache oder zusammengesetzte Aussagen die Operandenbilden. Mit Hilfe von runden Klammern ist eine Schachtelung möglich. In Klammern gesetzte Aus-sagen werden dabei immer zuerst ausgewertet. Das Syntaxdiagramm in Abbildung 5.2 definiert, wie(komplexe) Aussagen bzw. boolesche Ausdrücke gebildet werden dürfen.

Gegeben seien die einfachen Aussagen P, Q und R. Dann sind bspw. folgende Zeichenfolgen syntak-tisch korrekte boolesche Ausdrücke:

• P

• !P

• P && Q

• P || (!Q)

Page 4: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

5.4 Äquivalenz von Aussagen 43

boolescherAusdruck

boolescherAusdruck

boolescherAusdruck

&&

boolescherAusdruck

boolescherAusdruck

||

boolescherAusdruck

!

boolescherAusdruck

( )

„einfache Aussage“

Abbildung 5.2: Syntaxdiagramm für boolesche Ausdrücke

• (P || (!P && Q))

• P || Q || R

• P || !(Q && !R)

5.4 Äquivalenz von Aussagen

Um boolesche Ausdrücke vergleichen zu können, wird der Begriff der Äquivalenz von booleschenAusdrücken eingeführt. Es gilt: Zwei boolesche Ausdrücke sind äquivalent genau dann, wenn siegleiche Wahrheitstafeln besitzen. Die Äquivalenz zweier boolescher Ausdrücke wird durch das Sym-bol <=> ausgedrückt. Seien P und Q Aussagen, dann sind bspw. die beiden booleschen Ausdrücke(!P) && (!Q) und !(P || Q) äquivalent, wie die Wahrheitstafel in Abbildung 5.3 beweist.

Page 5: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

44 Kapitel 5. Aussagenlogik

Q

TFTF

P

TTFF

!P !Q (!P)&&(!Q)

FFTT

FTFT

FFFT

TTTF

P||Q !(P||Q)

FFFT

Abbildung 5.3: Äquivalente Aussagen

5.5 Algebraische Eigenschaften von booleschen Operatoren

5.5.1 Kommutativ- und Assoziativgesetz

Genauso wie bei den arithmetischen Operatoren der Addition und Multiplikation gilt auch bei denbooleschen Operatoren && und || das Kommutativ- und das Assoziativgesetz, wie die Wahrheitsta-feln in den Abbildungen 5.4 und 5.5 beweisen.

Q

TFTF

P

TTFF

P&&Q Q&&P P||Q

TFFF

TFFF

TTTF

TTTF

Q||P

Abbildung 5.4: Kommutativgesetz für boolesche Ausdrücke

5.5.2 Distributivgesetz

Des Weiteren gelten für die beiden Operatoren die folgenden Distributivgesetze (P, Q und R seienAussagen):

• P && (Q || R) <=> (P && Q) || (P && R)

• P || (Q && R) <=> (P || Q) && (P || R)

Die Gültigkeit dieser Distributivgesetze geht aus den Wahrheitstafeln in Abbildung 5.6 hervor.

Page 6: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

5.5 Algebraische Eigenschaften von booleschen Operatoren 45

Q

TTFFTTFF

P

TTTTFFFF

P&&Q Q&&R (P&&Q)&&R

TTFFFFFF

TFFFTFFF

TFFFFFFF

P&&(Q&&R)R

TFTFTFTF

TFFFFFFF

Q

TTFFTTFF

P

TTTTFFFF

P||Q Q||R (P||Q)||R

TTTTTTFF

TTTFTTTF

TTTTTTTF

P||(Q||R)R

TFTFTFTF

TTTTTTTF

Abbildung 5.5: Assoziativgesetz für boolesche Ausdrücke

Q

TTFFTTFF

P

TTTTFFFF

Q||R

TTTFFFFF

R

TFTFTFTF

P&&(Q||R) P&&Q P&&R (P&&Q)||(P&&R)

TTTFTTTF

TTFFFFFF

TFTFFFFF

TTTFFFFF

Q

TTFFTTFF

P

TTTTFFFF

Q&&R

TTTTTFFF

R

TFTFTFTF

P||(Q&&R) P||Q P||R (P||Q)&&(P||R)

TFFFTFFF

TTTTTTFF

TTTTTFTF

TTTTTFFF

Abbildung 5.6: Distributivgesetze für boolesche Ausdrücke

Page 7: Programmieren spielend gelernt mit dem Java-Hamster-Modell || Aussagenlogik

46 Kapitel 5. Aussagenlogik

5.5.3 Priorität

Aus der Schule kennen Sie sicher die Regel „Punkt vor Strichrechnung“, die besagt, dass beim Rech-nen die Multiplikation und Division eine höhere Priorität besitzen als die Addition und Subtraktion.Eine derartige Regel gibt es auch für die booleschen Operatoren. Der Operator ! besitzt die höchste,der Operator && die zweithöchste und der Operator || die niedrigste Priorität. Prioritäten kann mandurch Klammersetzung beeinflussen. Das bedeutet bspw. für die vier Aussagen P, Q, R und S:

• !P && Q <=> (!P) && Q

• P || Q && R <=> P || (Q && R)

• P || Q && !R || S <=> (P || (Q && (!R))) || S

5.5.4 Tautologie und Widerspruch

Ein boolescher Ausdruck, der unabhängig vom Wahrheitswert der einzelnen Operanden immer denWert T liefert, wird Tautologie genannt. Liefert ein boolescher Ausdruck immer den Wert F, so nenntman ihn Widerspruch. Wie Abbildung 5.7 zeigt, ist bspw. für eine Aussage P der boolesche AusdruckP && (!P) ein Widerspruch und P || (!P) ist eine Tautologie.

P

TF

!P

FT

P&&(!P)

FF

P||(!P)

TT

Abbildung 5.7: Tautologie und Widerspruch