Wikipedia · einfach zusammengefasst · Stand
Logischer Operator
Ein Logischer Operator ist eine Funktion, die einen Wahrheitswert liefert. Bei der zweiwertigen, booleschen Logik liefert er also wahr oder falsch, …
Inhalt5 Abschnitte
Definition und Bedeutung
Ein logischer Operator ist eine Funktion, die einen Wahrheitswert liefert. In der zweiwertigen booleschen Logik ist das Ergebnis entweder wahr oder falsch; in einer mehrwertigen Logik sind weitere Werte möglich. Logische Operatoren können eine beliebige Anzahl von Operanden verarbeiten. Operanden sind die Werte oder Ausdrücke, auf die der Operator angewendet wird.
Ein typisches Beispiel ist die Und-Verknüpfung: Sie liefert genau dann wahr, wenn alle ihre Operanden wahr sind. Logische Operatoren sind besonders für Programmiersprachen und digitale Schaltungen wichtig. In Programmiersprachen besitzen sie meistens zwei Operanden; eine wichtige Ausnahme ist der NOT-Operator mit nur einem Operanden. Höhere Programmiersprachen enthalten außerdem Vergleichsoperatoren. In der Schaltungstechnik sind UND- und ODER-Verknüpfungen mit mehreren Operanden üblich. Sie werden durch Logikgatter oder durch Reihen- beziehungsweise Parallelschaltungen von Schaltern oder Relais realisiert.
Operatoren in Programmiersprachen
Durch die logische Verknüpfung meist zweier logischer Ausdrücke entsteht ein komplexerer logischer Ausdruck. Bei der Und-Verknüpfung, auch Konjunktion genannt, ist der Gesamtausdruck genau dann wahr, wenn beide Teilausdrücke wahr sind. Bei der Oder-Verknüpfung, auch Disjunktion genannt, genügt es, dass mindestens einer der Teilausdrücke wahr ist. Die Nicht-Verknüpfung oder Negation kehrt einen Wahrheitswert um.
Programmiersprachen unterscheiden sich deutlich in Art, Anzahl und Schreibweise ihrer Operatoren. Für Vergleiche werden beispielsweise größer (>), kleiner (<), größer oder gleich (≥ beziehungsweise >=), kleiner oder gleich (≤ beziehungsweise <=), gleich (= oder häufig ==) und ungleich (≠, != oder <>) verwendet. Für logische Verknüpfungen sind je nach Sprache etwa AND, && oder and für Und, OR, || oder or für Oder sowie NOT, ! oder not für Nicht gebräuchlich.
Vergleichsoperatoren stellen zwei Werte, beispielsweise numerische Größen, einander gegenüber. Je nach Ergebnis des Vergleichs liefern sie einen Wahrheitswert.
Auch die interne Darstellung der Wahrheitswerte ist nicht einheitlich. In den meisten Programmiersprachen wird falsch durch die Zahl 0 dargestellt. Wahr wird häufig durch 1 dargestellt; vielfach gilt aber jeder von 0 verschiedene Wert als wahr. Viele Kommandointerpreter, darunter verschiedene Unix-Shells, verwenden die umgekehrte Deutung: Der Rückgabewert 0 zeigt den Erfolg eines Befehls an, während ein von 0 verschiedener Wert einen Misserfolg und häufig die Art des Fehlers kennzeichnet. Daher wird dort 0 als wahr und jeder von 0 verschiedene Wert als falsch interpretiert.
Typische logische Ausdrücke
Ein Vergleich kann die Ausführung von Anweisungen steuern:
IF a > b THEN Anweisungen ENDIF
Dabei wird geprüft, ob a größer als b ist. Ist der Vergleich wahr, werden die nach THEN stehenden Anweisungen ausgeführt. Andernfalls werden sie übersprungen.
Eine Und-Verknüpfung kann zwei Wahrheitswerte gemeinsam prüfen:
IF i AND j THEN Anweisungen ENDIF
Hier werden die Anweisungen nur ausgeführt, wenn sowohl i als auch j wahr sind. Ist mindestens einer der beiden Werte falsch, werden die Anweisungen übersprungen.
Reihenfolge, Abbruch und Nebeneffekte
Logische Operatoren in Programmiersprachen entsprechen nicht immer exakt den Junktoren der Aussagenlogik. Ein Junktor ist eine logische Verknüpfung von Aussagen. Bei seiner rein logischen Betrachtung treten keine Nebeneffekte auf. In Programmen können Teilausdrücke dagegen beispielsweise Funktionen aufrufen, die neben der Berechnung eines Wertes auch einen Zustand verändern. Solche zusätzlichen Wirkungen heißen Nebeneffekte.
Deshalb kann die Auswertungsreihenfolge wichtig sein. Das Kommutativitätsgesetz der Konjunktion a ∧ b = b ∧ a gilt hinsichtlich des Wahrheitswertes, aber nicht unbedingt hinsichtlich der Wirkungen, wenn a oder b Nebeneffekte auslösen. Die meisten Programmiersprachen legen daher eine feste Auswertungsreihenfolge fest.
Bei der Auswertung von a ∧ b von links nach rechts steht das Gesamtergebnis bereits als falsch fest, sobald a falsch ist. Die Auswertung von b kann dann entfallen. Dieses vorzeitige Beenden heißt Lazy Evaluation und kann die Laufzeit verbessern. Es kann jedoch bewirken, dass ein Nebeneffekt von b nicht eintritt. Programmiersprachen können deshalb entweder Ausdrücke mit Nebeneffekten stets auswerten oder den vorzeitigen Abbruch eindeutig in ihrer Spezifikation festlegen.
In C, C++ und Java wird bei a && b der Ausdruck b nicht ausgewertet, wenn a bereits falsch ist. Bei a || b unterbleibt die Auswertung von b, wenn a bereits wahr ist. Sind die Teilausdrücke frei von Nebeneffekten, besteht dadurch kein grundsätzlicher Unterschied zu den entsprechenden aussagenlogischen Junktoren. Andere Sprachen wie Ada oder C# stellen sowohl Verknüpfungen im aussagenlogischen Sinn als auch ausdrücklich vorzeitig abbrechende Operatoren bereit. In Ada heißen Letztere AND THEN und OR ELSE.
Mehrwertige Logik am Beispiel eines Busses
Ein elektrotechnisches Beispiel beschreibt einen logischen Operator mit 10 Operanden in einer 4-wertigen Logik. An einem Bus sind 10 Geräte angeschlossen. Jedes Gerät kann „high“ (5 Volt), „low“ (0 Volt) oder „Z“ (hochohmig) liefern. Der Operator O (Gerät1, Gerät2, …, Gerät10) bestimmt daraus einen von vier Zuständen des gesamten Busses:
• „Kurzschluss“, wenn mindestens ein Gerät „high“ und mindestens ein Gerät „low“ liefert.
• „high“, wenn mindestens ein Gerät „high“ und kein Gerät „low“ liefert.
• „low“, wenn mindestens ein Gerät „low“ und kein Gerät „high“ liefert.
• „hochohmig“, wenn alle Geräte „hochohmig“ liefern.
Das Beispiel zeigt, dass die Zahl der möglichen Ergebniswerte nicht mit der Zahl der möglichen Eingangswerte jedes einzelnen Operanden übereinstimmen muss: Die Geräte liefern jeweils drei mögliche Werte, während der daraus gebildete logische Operator vier mögliche Buszustände unterscheidet.
Lernvideos zu Logischer Operator
5:18
Negation, Konjunktion, Disjunktion – Aussagenlogik 1
Mathe - simpleclub · 236.817 Aufrufe
4:37
So funktionieren logische Grundgatter! Und-, Oder- und Nicht-Gatter
Technik einfach erklärt · 11.913 Aufrufe
5:22
Boolesche Algebra Wahrheitstabelle | UND, ODER & NICHT Verknüpfungen | logischen Operatoren
lernflix · 12.471 Aufrufe
15:41
Bool'sche Algebra: Informatik
bleeptrack · 124.799 Aufrufe