====== Logische Verknüpfungen ====== Unter der Vielzahl an [[https://de.wikipedia.org/wiki/Logischer_Operator|logischen Operatoren]] spielen die logischen Verknüpfungsoperatoren eine besondere Rolle. Um in der Informatik komplexe Zusammenhänge bei Bedingungen ausdrücken zu können, werden logische Verknüpfungen verwendet. Ähnlich wie mit **arithmetischen Operatoren**, also Plus, Minus, Mal, Geteilt, usw. Zahlen miteinander verknüpft werden können, kann man Wahrheitswerte (boolesche Werte) mit **logischen Operatoren** verknüpfen. Anders als Zahlen können **Wahrheitswerte** nur zwei verschiedene Werte annehmen: ''wahr'' oder ''falsch'', oft auch mit ''0'' oder ''1'' dargestellt. Hier ein einfaches Beispiel anhand einer Aussage: //Ich gehe ins Freibad, wenn es über 25 Grad warm ist und die Sonne scheint.// Diese Aussage besteht aus 2 Teilbedingungen. * Die erste Bedingung bezieht sich auf die Temperatur und ist ''wahr'', wenn die Temperatur über 25 Grad liegt. * Die zweite Bedingung bezieht sich auf das Wetter und ist ''wahr'', wenn die Sonne scheint. Ins Freibad gehe ich aber nur, wenn beide Teile der Bedingung wahr sind. Eine davon reicht nicht. Dies wird dadurch ausgedrückt, indem ein **und** dazwischen steht. Wäre eine der beiden Teilbedingungen ausreichend, d. h. * ich würde auch ins Freibad gehen, wenn es bei Regen warm genug ist oder * ich würde auch ins Freibad gehen, wenn bei winterlichen Temperaturen die Sonne scheint, dann würde man die Aussage mit einem **oder** formulieren. Genau das ist mit Bedingungen in der Informatik durch logische Operatoren möglich. ===== Überblick über die logischen Verknüpfungsoperatoren ===== Im Beispiel hast du bereits die Operatoren **und** und **oder** kennengelernt. In der Informatik werden diese meist durch ihre englischsprachigen Begriffe ''AND'' und ''OR'' ausgedrückt. Hinzu kommt noch der **nicht**-Operator, also ''NOT''. ==== Schreibweise ==== Je nach (Programmier-)Sprache, in der die Operatoren verwendet werden, haben sich unterschiedliche Schreibweisen durchgesetzt. Gebräuchlich sind * ''AND'' oder ''&&'' * ''OR'' oder ''||'' * ''NOT'' oder ''!'' Beispiele * ''True AND False'' oder ''True && False'' * ''True OR False'' oder ''True || False'' * ''NOT True'' oder ''! True'' ==== Wahrheitstabellen ==== Um zu sehen, zu welchem Ergebnis die Verknüpfung zweier Wahrheitswerte mit einem Operator kommt, kann man diese in einer sogenannten Wahrheitstabelle niederschreiben. Dort werden alle verschiedenen Kombinationsmöglichkeiten mit ihren Ergebnissen dargestellt. ^ AND ^^^ ^ OR ^^^ ^ Wert 1 ^ Wert 2 ^ //Ergebnis// ^ ^ Wert 1 ^ Wert 2 ^ //Ergebnis// ^ | False | False | //False// | | False | False | //False// | | False | True | //False// | | False | True | //True// | | True | False | //False// | | True | False | //True// | | True | True | //True// | | True | True | //True// | Wie man sieht, müssen bei der ''AND''-Verknüpfung beide Parameter wahr sein, damit ein wahres Ergebnis herauskommt. Einmal wahr alleine reicht nicht. Bei der ''OR''-Verknüpfung reicht bereits ein wahrer Parameter um das ganze Ergebnis wahr werden zu lassen. Auch beide dürfen wahr sein, damit das so bleibt. Bei ''NOT'' gibt es nur einen Parameter. Deshalb sieht es dort wesentlich übersichtlicher aus: * ''NOT True = False'' * ''Not False = True'' ===== Komplexe Kombinationen von Verknüpfungen ===== In der Informatik werden logische Vergleichsoperatoren häufig genutzt um den Wert von Variablen zu überprüfen, zum Beispiel so: ''$var < 50'' Wenn der Wert der Variable ''$var'' kleiner ist als 50, dann ergibt dieser Ausdruck ''True'', ansonsten ergibt er ''False''. Wenn nun verschiedene Bedingungen zusammen überprüft werden müssen und eine Entscheidung im Programm von vielen solchen Überprüfungen abhängt, dann benötigt man logische Verknüpfungsoperatoren um diese wie gewünscht miteinander zu verbinden. Damit klar ist, in welcher Reihenfolge sie zusammengehören, werden meist **Klammern** eingesetzt. ==== Beispiel ==== Im folgenden Beispiel wird ein solcher Ausdruck Schritt für Schritt aufgelöst. Dazu nehmen wir an, dass die Variable ''$v'' den Wert von ''42'' hat. ( ($v > 50) AND (300 != $v) ) OR ( ($v < 10) OR ($v < 100) ) ( ( False ) AND ( True ) ) OR ( ( False ) OR ( True ) ) ( False ) OR ( True ) True In dem hier dargestellten Beispiel wird in jedem Schritt anhand der oben abgebildten Wahrheitstabellen eine Ebene von logischen Verknüpfungen zu einem einzigen Wahrheitswert reduziert. Diese Schritte wiederholen sich so lange, bis das Endergebnis feststeht.