www.wikidata.de-de.nina.az
Ein Logischer Operator ist eine Funktion die einen Wahrheitswert liefert Bei der zweiwertigen booleschen Logik liefert er also wahr oder falsch bei einer mehrwertigen Logik konnen auch entsprechend andere Werte geliefert werden Logische Operatoren konnen eine beliebige Anzahl an Operanden haben Ein typisches Beispiel fur einen booleschen logischen Operator ist die Und Verknupfung Sie liefert immer dann wahr wenn alle Operanden ebenfalls wahr sind Von besonderer Bedeutung sind die logischen Operatoren in der praktischen Anwendung in Programmiersprachen und in digitalen Schaltungen In Programmiersprachen stehen mit Ausnahme des NOT Operators mit nur einem Operanden meist nur Operatoren mit zwei Operanden zur Verfugung Dafur gehoren neben den booleschen Operatoren auch Vergleichsoperatoren zum Standardrepertoire von hoheren Programmiersprachen In der Schaltungstechnik sind dagegen UND ODER Verknupfungen mit mehreren Operanden gangig die durch Logikgatter oder Reihen bzw Parallelschaltung von Schaltern oder Relais realisiert werden Inhaltsverzeichnis 1 Logische Operatoren in Programmiersprachen 1 1 Beispiele fur logische Operatoren 1 2 Beispiele fur logische Ausdrucke 1 3 Auswertungsreihenfolge Kommutativitat und Nebeneffekte 2 Beispiel fur einen Logischen Operator in mehrwertiger Logik 3 Siehe auchLogische Operatoren in Programmiersprachen BearbeitenDurch logische Verknupfung meist zweier logischer Ausdrucke entsteht ein komplexerer logischer Ausdruck Je nach Art des Verknupfungsoperators ist der zusammengesetzte Ausdruck zum Beispiel genau dann wahr wenn beide verknupften Ausdrucke wahr sind Und Verknupfung oder wenn mindestens einer der verknupften Ausdrucke wahr ist Oder Verknupfung Von den Junktoren in der Aussagenlogik unterscheiden sich die logischen Operatoren der Programmiersprachen unter Umstanden in der Auswertungsreihenfolge oder in mit zu berucksichtigenden Nebeneffekten Hinsichtlich der Art Anzahl und Schreibweise der logischen Operatoren unterscheiden sich die einzelnen Programmiersprachen teilweise sehr stark voneinander siehe Tabelle Unterschiede gibt es auch hinsichtlich der internen Darstellung der Wahrheitswerte In den meisten Programmiersprachen wird der Wahrheitswert falsch als die Zahl 0 dargestellt Der Wahrheitswert wahr wird oft als die Zahl 1 dargestellt vielfach wird aber auch jeder von 0 verschiedene Wert als wahr interpretiert Eine bemerkenswerte Ausnahme bilden viele Kommandointerpreter darunter die verschiedenen Unix Shells in denen der Erfolg eines ausgefuhrten Befehls durch den Ruckgabewert 0 der Misserfolg durch einen von 0 verschiedenen Wert angezeigt wird der die Art des aufgetretenen Fehlers aufzeigt In Verallgemeinerung dessen wird in den logischen Ausdrucken dieser Kommandointerpreter der Wert 0 kein Fehler als wahr interpretiert und jeder von 0 verschiedene Wert Fehler als falsch Vergleichsoperatoren stellen zwei Werte etwa numerische Grossen einander gegenuber und liefern in Abhangigkeit vom Ausgang des Vergleichs grosser kleiner usw einen Wahrheitswert Beispiele fur logische Operatoren Bearbeiten Operator Mathematik Python Fortran Delphi Pascal Visual Basic C C C Java PHP Perl BatchVergleiche grosser gt displaystyle gt gt GT gt gt gt gt gt GTRkleiner lt displaystyle lt lt LT lt lt lt lt lt LSSgrosser oder gleich displaystyle geq gt GE gt gt gt gt ge GEQkleiner oder gleich displaystyle leq lt LE lt lt lt lt le LEQgleich displaystyle is EQ eq EQU ungleich displaystyle neq lt gt 1 is not NE lt gt lt gt ne NEQVerknupfungen Und Konjunktion displaystyle wedge amp and all AND AND And AndAlso2 amp amp amp amp amp amp and n a Oder Disjunktion displaystyle vee or any OR OR Or OrElse2 or n a Nicht Negation displaystyle neg not NOT NOT Not not NOT1 in Python 2 inzwischen veraltet 2 Neu in NET VersionenBeispiele fur logische Ausdrucke Bearbeiten IF a gt b THEN Anweisungen ENDIF In diesem Fall wird bewertet ob a grosser ist als b Ist die Aussage wahr werden die Anweisungen ausgefuhrt die mit THEN eingeleitet werden Andernfalls werden die Anweisungen ubersprungen IF i AND j THEN Anweisungen ENDIF In diesem Fall wird bewertet ob i wahr ist und j wahr ist Sind i und j wahr werden die Anweisungen ausgefuhrt die mit THEN eingeleitet werden Ist einer der Werte falsch oder beide werden die Anweisungen ubersprungen Auswertungsreihenfolge Kommutativitat und Nebeneffekte Bearbeiten Die logischen Operatoren einer Programmiersprache sind keine exakte Entsprechung der Junktoren in der Aussagenlogik weil bei der Bewertung von Junktoren keine Nebeneffekte auftreten konnen In einer Programmiersprache kann das sehr wohl der Fall sein wenn z B innerhalb des logischen Ausdrucks Funktionen mit Nebeneffekten aufgerufen werden In diesem Fall spielt die Auswertungsreihenfolge eine Rolle d h das Gesetz der Kommutativitat z B fur die Konjunktion a b b a gilt dann nicht wenn a oder b nicht nur einen Wert sondern auch eine Wirkung haben Aus diesem Grund definieren die meisten Programmiersprachen eine feste Auswertungsreihenfolge fur logische Ausdrucke Wenn man eine Konjunktion a b von links nach rechts auswertet und dabei feststellt dass schon a falsch ist weiss man bereits an dieser Stelle und ohne b naher betrachten zu mussen dass die ganze Konjunktion falsch sein wird Dieses Wissen kann man zur Optimierung der Laufzeit benutzen indem man in diesem Fall ganzlich auf die Auswertung von b verzichtet Lazy Evaluation allerdings um den Preis dass dann ein eventueller Effekt von b ausbleibt Aus diesem Grund ist die unkritische Ausdrucksoptimierung ein Problem Es gibt zwei Moglichkeiten damit umzugehen Ausdrucke bzw Ausdrucksteile mit Nebeneffekten konnen von der Optimierung ausgenommen d h stets ausgewertet werden oder aber das fruhzeitige Abbrechen der Auswertung logischer Ausdrucke kann exakt in die Sprachspezifikation aufgenommen werden sodass der Programmierer zumindest genau vorhersagen kann welche Nebeneffekte in welcher Situation auftreten und welche nicht Letzteres ist in Programmiersprachen wie C C oder Java der Fall Hier ist spezifiziert dass bei der Auswertung einer Konjunktion a b in der Schreibweise dieser Sprachen a amp amp b die Auswertung von b unterbleibt wenn bereits a falsch ist und dass bei der Auswertung der Disjunktion a b in der Schreibweise dieser Sprachen a b die Auswertung von b unterbleibt wenn bereits a wahr ist Dies stellt keinen grundsatzlichen Unterschied zu den jeweiligen aussagenlogischen Junktoren dar wenn die auszuwertenden Teilausdrucke wirkungsfrei sind Andere Programmiersprachen wie Ada oder C bieten sowohl Konjunktionen und Disjunktionen im aussagenlogischen Sinn an AND und OR als auch Operatoren wie das amp amp bzw in C in Ada AND THEN bzw OR ELSE genannt Beispiel fur einen Logischen Operator in mehrwertiger Logik BearbeitenFolgendes Beispiel aus der Elektrotechnik entspricht einem logischen Operator mit 10 Operanden in einer 4 wertigen Logik An einem Bus sind 10 Gerate angeschlossen die jeweils die Wahrheitswerte high 5 Volt low 0 Volt und Z hochohmig liefern konnen Der Zustand des Busses lasst sich durch folgenden logischen Operator beschreiben O Gerat1 Gerat2 Gerat10 Kurzschluss wenn mindestens ein Gerat high liefert und mindestens ein Gerat low high wenn mindestens ein Gerat high liefert und kein Gerat low low wenn mindestens ein Gerat low liefert und kein Gerat high hochohmig wenn alle Gerate hochohmig liefern Siehe auch Mehrwertige LogikSiehe auch Bearbeitenregularer Ausdruck Mehrwertige Logik Abgerufen von https de wikipedia org w index php title Logischer Operator amp oldid 222600335