2.2.1.7. Boolesche Logik

Nächste Seite

Die so genannte mathematische Logik wird verwendet, um die Strukturen der mathematischen Sprache auf die natürliche Sprache zu übertragen. Dabei werden Möglichkeiten untersucht, mit denen einfache Aussagen kombiniert werden können.
Gottfried Leibnitz verwendete bereits im 18. Jahrhundert die Algebra als Sprachmodell zur Untersuchung von logischen Beziehungen.

Die Boolesche Algebra, auf der heute die Funktionsweise aller Computer- und Programmiersprachen beruht, ist der Arbeit des britischen Mathematikers George Boole (1815-1864) zu verdanken. Die Boolesche (oder logische) Algebra beruht auf der Grundlage binärer logischer Operationen und bildet somit eine mathematische Struktur, die lediglich auf den Zahlen  "0" und "1" beruht.
Diese beiden Zahlen repräsentieren die Wahrheitswerte "TRUE" (1) und "FALSE" (0), welche man "Boolesche Konstanten" nennt.

Unter einer einfachen Aussage versteht man einen Satz (eine Aussage), die entweder wahr oder falsch ist, jedoch nie beide Wahrheitswerte gleichzeitig annehmen kann. Mit diesen einfachen Aussagen lassen sich verschiedene Verknüpfungen ausführen mit den so gennanten "Booleschen Operatoren". Zu diesen Operatoren zählen die Konjunktion "and", die Disjunktion "or" und die Negation "not".
Mit "
and" verknüpfte Aussagen können nur den Wert "wahr" annehmen, wenn sowohl das erste, als auch das zweite Argument die Bedingung erfüllt (oder 1 ist). "Or"- Verknüpfungen sind wahr, wenn mindestens eines der Argumente wahr ist. Die Funktion "not" dagegen bildet grundsätzlich das Gegenteil eines gegebenen Argumentes, d.h. wahe Aussagen werden falsch und falsche Aussagen als wahr angesehen.
Um feststellen zu können, ob die verknüpften Aussagen wahr oder falsch sind, verwendet man die s.g. Wahrheitstabellen. Indem jedem Teil einer Aussage alle Werte zugeordnet werden, die er annehmen kann, erhält man den Wert jeder einzelnen möglichen Kombination. Eine Aussage, deren Wahrheitstabelle nur den Wert "wahr" enthält, bezeichnet man als logisch wahr, im Gegensatz dazu nennt man eine Aussage, der nur negative Werte zugeordnet werden logisch falsch.

Der Programminterpreter des TI-85 überprüft die verknüpften Bedingungen so lange, bis der Wert des Gesamtausdrucks feststeht. In einer mit "or" verknüpften Kette von Bedingungen bricht er beispielsweise nach der Überprüfung der ersten Bedingung ab, wenn die bereits den Wert "wahr" ergibt und somit der Wert des gesamten Ausdrucks bereits "wahr" ist.

Wahrheitstabellen:

x1 x0 AND
0 0 0
0 1 0
1 0 0
1 1 1
x1 x0 OR
0 0 0
0 1 1
1 0 1
1 1 1
x NOT
0 1
1 0

Abgeleitet aus den Grundfunktionen "and", "or" und "not" wurden die Funktionen "nor", "nand" und "xor".
"
Nor" und "nand" haben das gleiche Ergebnis, wie ein zusammen angewendetes "not" und "or" bzw. "not" und "and" , d.h. das Ergebnis wird umgekehrt . "Xor" bezeichnet man als "exklusives oder", d.h. wie bei "or" muss entweder das eine oder das andere Argument wahr sein, nicht jedoch beide gleichzeitig.
Die zugehörigen Wahrheitstabellen sehen folgendermaßen aus:

x1 x0 NAND
0 0 1
0 1 1
1 0 1
1 1 0
x1 x0 NOR
0 0 1
0 1 0
1 0 0
1 1 0
x1 x0 XOR
0 0 0
0 1 1
1 0 1
1 1 0

Die technische Bedeutung der Booleschen Algebra

Die heutige Bedeutung der Booleschen Algebra besteht vor allem darin, dass die als mathematisches Modell für die logische Darstellung der Schalter in elektrischen Schaltkreisen diente. Diese werden in der Stromversorgung und vor allem in Computern verwendet.
Schalter und alle anderen elektronischen Geräte kennen grundsätzlich nur zwei Zustände geöffnet (kein Strom fliesst) oder geschlossen (Strom fliesst). Der geschlossene Zustand entspricht der Booleschen Konstante "wahr", ein geöffneter Schalter steht für "falsch".
Der einfachste Stromkreis besteht aus einer Stromquelle, Draht, einem Schalter und einer Glühbirne, die zwischen Schalter und Stromquelle geschalten wird:

offen - Strom fliesst nicht geschlossen - Strom fliesst
offen.gif (771 Byte) geschlossen.gif (761 Byte)

Dieser Stromkreis wird komplexer, wenn man einen zweiten Schalter einbringt, der entweder parallel oder in Serie geschalten wird. Zwei in Serie geschaltete Schalter bilden eine AND- Verknüpfung. Nur wenn beide Schalter geschlossen sind fliesst Strom und die Bedingung ist erfüllt. Die Parallelschaltung dagegen beruht auf einer einfachen OR- Verknüpfung: wenn mindestens einer der beiden Schalter geschlossen ist, fliesst der Strom. Die brennende Glühlampe steht für eine erfüllte Bedingung.

Parallelschaltung von zwei Schaltern, einer davon geöffnet
Strom fliesst
Reihenschaltung von zwei Schaltern, einer ist geöffnet
Strom fliesst nicht
parallel.gif (1072 Byte) serie.gif (947 Byte)

Bedeutung der Booleschen Algebra in TI-85 BASIC

In TI-85 BASIC gibt es nicht, wie in anderen HLL (z.B. Pascal) den Datentyp "Boolean", dennoch findet die Boolesche Logik ihre Anwendung:
In bedingten Anweisungen (Kapitel 2.3.2.5.) werden Bedingungen formuliert. Ist eine Bedingung erfüllt, so nimmt der gesamte Ausdruck der Bedingung den Wert "wahr" an (somit die Zahl 1). Ist die Bedingung nicht erfüllt, so ist der Wert des formulierten Ausdrucks "falsch" ("0").
Bedingungen können mit den Booleschen Operatoren verknüpft werden. In TI-85 BASIC stehen dazu die Operatoren "
and", "or", "not" und "xor" zur Verfügung.
Die mit den Booleschen Operatoren verknüpften Ausdrücke (Bedingungen) müssen in der If- Anweisung in Klammern stehen.

Beispiele zur Anwendung der Booleschen Operatoren:

Operator Beispiel Erläuterung Wert des Ausdrucks
and :If (3==3) and (32==9)
:Disp "Beide Bedinungen sind wahr!"
"Beide Bedinungen sind wahr!" wird ausgegeben, da sowohl die erste, als auch die zweite Bedingung erfüllt ist. wahr / 1
or :If (3<4) or (3==4)
:Disp "3 ist nicht größer als 4!"
Die erste Bedingung ist erfüllt und somit die Gesamtbedingung wahr. Ob die zweite Bedingung auch erfüllt ist, ist für den Wert des Gesamtausdruckes unwichtig. wahr / 1
xor :"an"®SCHALTER1 :"an"®SCHALTER2"
:If (SCHALTER1=="an") xor (SCHALTER2"=="an")
:Disp "Ein Schalter ist aus!"
2 Strings mit den Namen Schalter1 und Schalter2 wird die Zeichenkette "an" zugewiesen. Sowohl die erste, als auch die zweite Bedingung sind somit erfüllt. Der Wert des Gesamtausdruckes beträgt somit "falsch", da nur genau eine Bedingung erfüllt sein darf. falsch / 0
not* :4®B
:If not -(B==0)
:Disp "B ist ungleich 0"
Die Variable ist ungleich 0, die Bedingung in Klammern also nicht erfüllt. "Not" kehrt den Wert der in Klammern stehenden Bedingung um, und damit ergibt der Gesamtausdruck den Wert "wahr". wahr / 1

* Bei der Benutzung von "not" gilt zu beachten, dass er zusammen mit dem Negationszeichen "-" verwendet werden muss, um das gewünschte Ergebnis zu erreichen. Prinzipiell kann jedes "not" auch durch die Verwendung des Ungleichzeichens "¹" in der Bedingung ersetzt werden. Diese Schreibweise ist nicht nur übersichtlicher, sondern auch verständlicher und sollte deshalb vorgezogen werden.
Beispiel:

Mit Verwendung von "not" :If not -(A==0) :Then :[Anweisungen] : End
Ohne "not" :If (A¹0) :Then :[Anweisungen] :End