Operatorrangfolge
aus Wikipedia, der freien Enzyklopädie
Als Operatorrangfolge, -wertigkeit, -priorität oder -präzedenz, auch Auswertungsreihenfolge, bezeichnet man in Mathematik, Logik und Informatik eine festgelegte Reihenfolge, in der die Operatoren eines in Infix-Schreibweise vorliegenden Ausdrucks auszuwerten sind.
Ein Beispiel ist die Rangfolge von Addition und Multiplikation („Punktrechnung vor Strichrechnung“): So ist gleichbedeutend mit , da der Multiplikationsoperator eine höhere Wertigkeit hat.
Da auch durch Klammerung und andere Hilfsmittel (zum Beispiel Punktierungen) die Auswertungsreihenfolge eines Ausdrucks eindeutig bestimmt werden kann, ist das Festlegen einer Rangfolge in der Regel nicht zwingend erforderlich. Oft wird dadurch jedoch die Lesbarkeit der Ausdrücke verbessert, da auf einen Teil der Klammern verzichtet werden kann. Die Reihenfolge selbst ist in jedem Fall willkürlich und lediglich eine Konvention.
Inhaltsverzeichnis |
[Bearbeiten] Rangfolge unterschiedlicher Operatoren
Für die gängigen Rechenoperationen der Mathematik ist (in absteigender Priorität) folgende Rangfolge üblich:
- Potenzierung
- Multiplikation und Division („Punktrechnung“)
- Addition und Subtraktion („Strichrechnung“)
Es werden also zuerst die Potenzierungen ausgeführt, danach Multiplikationen und Divisionen und schließlich Additionen und Subtraktionen.
In Programmiersprachen und Computerprogrammen zur Formelauswertung (z.B. dem Unix-Dienstprogramm bc) gibt es oft als zusätzliche Kategorie das Vorzeichen, das in diesem Fall eine noch höhere Priorität genießt. So wird in mathematischen Formeln der Ausdruck − ab zwar als − (ab) gelesen, in den Ausdrücken solcher Auswertungsprogramme aber als ( − a)b.
In der Logik ist es nicht immer üblich, eine Operatorrangfolge zu definieren. Wo das geschieht, wird meistens (in absteigender Priorität) folgende gewählt:
Nach Anwendung der genannten Operatorrangfolgen wird z. B. der arithmetische Ausdruck 3 + 4 * 5 − 6 ausgewertet als 3 + (4 * (5( − 6))), der logische Ausdruck als .
[Bearbeiten] Reihenfolge gleichwertiger Operatoren
Zusätzlich kann für Operationen eine Assoziativität festgelegt werden, mit der bestimmt wird, in welcher Reihenfolge nebeneinander stehende, gleichwertige Operatoren auszuwerten sind. Ein Operator heißt linksassoziativ, wenn A op B op C op D ausgewertet wird als ((A op B) op C) op D; ein Operator heißt rechtsassoziativ, wenn A op B op C op D ausgewertet wird als A op (B op (C op D)). Von den genannten arithmetischen Operatoren ist die Potenzierung rechtsassoziativ, d.h.:
Die übrigen zweistelligen Operatoren sind linksassoziativ, d.h. zum Beispiel A − B − C − D = ((A − B) − C) − D.
In der Logik werden sind die Junktoren meistens linksassoziativ definiert, es gibt aber durchaus auch Autoren, die zumindest das Konditional rechtsassoziativ verwenden.
[Bearbeiten] Gliederungszeichen
Um innerhalb eines Ausdrucks die definierte Operatorreihenfolge zu verändern bzw. um bei fehlender Definition einer Rangfolge Ausdrücke eindeutig lesbar zu gestalten werden unterschiedliche Formen von Gliederungszeichen verwendet. In der Mathematik und auch in der modernen Logik sind das Klammern.
In der Geschichte der Logik wurden vor allem zu Beginn häufig Punktierungen verwendet, um Ausdrücke zu disambiguieren bzw. eine allenfalls definierte Operatorreihenfolge zu verändern. Ein Punktierungssystem, das durch das Grundlagenwerk Principia Mathematica eine gewisse Verbreitung erlangte, war bis in die 1970-er-Jahre in unterschiedlich abgewandelter Form auch in einführenden Logikbüchern häufiger anzutreffen. Bei diesem System wird statt der gedachten schließenden Klammer vor einem Junktor bzw. statt der gedachten öffnenden Klammer nach einem Junktor ein Punkt gesetzt. Zum Beispiel würde statt
der folgende Ausdruck geschrieben:
Treffen mehrere gedachte Klammern aufeinander, dann werden statt eines einzigen Punktes zwei oder mehrere Punkte gesetzt, sodass zum Beispiel anstelle von
der folgende Ausdruck geschrieben würde:
Ein anderes System gewichtet die in einem Ausdruck vorkommenden Junktoren mit Punkten. Je mehr Punkte über einem Operator stehen, desto schwächer ist seine Bindungsstärke, d.h. desto niedriger ist seine Priorität. Nach diesem System würde zum Beispiel eine Konjunktion mit zwei Punkten schwächer binden als eine Konjunktion mit einem Punkt, diese wiederum schwächer als eine Konjunktion ohne Punkte.
[Bearbeiten] Weiterführendes
In Programmiersprachen wird meist eine Wertigkeit und Assoziativität für alle Operatoren festgelegt, damit das Ergebnis aller Ausdrücke auch dann eindeutig ist, wenn keine Klammern verwendet werden.
Die Operatorrangfolge ist normalerweise nur bei Ausdrücken in Infix-Notation ein Thema. In alternativen Schreibweisen wie der Polnischen Notation oder der Umgekehrten Polnischen Notation sind die Ausdrücke kraft ihrer Syntax eindeutig und bedarf es daher keiner definierten Rangfolge und keiner Klammern. Auch bei der ersten prädikatenlogischen Schreibweise, der Begriffsschriftnotation, und bei graphischen Schreibweisen wie den Existential Graphs ist die Lesart eines Ausdrucks eindeutig bestimmt und bedarf es keiner Gliederungszeichen oder -konventionen.
[Bearbeiten] Literatur
In englischer Sprache:
- Florian Cajori: A History of Mathematical Notations, Chicago: Open Court 1928-1929 und New York: Dover 1993 ISBN 0-486-67766-4
- William Kneale, Martha Kneale: The Development of Logic, Clarendon Press 1962 ISBN 0-19-824773-7