www.wikidata.de-de.nina.az
Als Operatorrangfolge wertigkeit prioritat prazedenz oder einfach nur Prazedenz bezeichnet man in Mathematik Logik und Informatik eine definierte Halbordnung in der die Operatoren eines in Infix Schreibweise vorliegenden Ausdrucks eine implizite Klammerung vorgeben Die Operatorrangfolge ist keine Totalordnung sondern eine Halbordnung weil es keine strikte Reihenfolge zwischen allen Operatoren geben muss Es konnen auch mehrere Operatoren auf demselben Rang stehen Zum Beispiel ist in der Arithmetik der Rang von Multiplikation und Division gleich aber hoher als der Rang von Addition und Subtraktion Punktrechnung vor Strichrechnung Durch die Rangfolge kann man explizite Klammerungen sparen So ist in der Arithmetik a b c displaystyle a b cdot c gleichbedeutend mit a b c displaystyle a b cdot c weil der Multiplikationsoperator einen hoheren Rang hat Fur andere Anwendungen dieser Operatorsymbole konnen jedoch andere Rangordnungen definiert sein Bei nicht kommutativen Operatoren bedarf es noch zusatzlicher Konvention daruber ob gleichrangige Teilausdrucke als implizit linksgeklammert implizit rechtsgeklammert oder keines von beiden gelten soll Inhaltsverzeichnis 1 Rangfolge unterschiedlicher Operatoren 2 Reihenfolge gleichwertiger Operatoren 3 Gliederungszeichen 4 Sonstiges 5 Literatur 6 EinzelnachweiseRangfolge unterschiedlicher Operatoren BearbeitenFur die Standard Rechenoperationen der Mathematik ist in absteigender Prioritat folgende Rangfolge ublich 1 2 3 Potenzierung Multiplikation und Division Punktrechnung Addition und Subtraktion Strichrechnung In Programmiersprachen und Computerprogrammen zur Formelauswertung z B dem Unix Dienstprogramm bc gibt es zusatzliche Kategorien Eine davon ist das Vorzeichen das in der Regel eine noch hohere Prioritat vor der Potenzierung geniesst So wird in mathematischen Formeln der Ausdruck a b displaystyle a b nbsp zwar als a b displaystyle a b nbsp gelesen in den Ausdrucken solcher Auswertungsprogramme aber oft als a b displaystyle a b nbsp In der Logik ist es nicht immer ublich eine Operatorrangfolge zu definieren Wo das geschieht wird meistens in absteigender Prioritat folgende gewahlt Negation logisches NICHT Konjunktion logisches UND Disjunktion logisches ODER Konditional BikonditionalAuch in vielen Programmiersprachen wird fur Boolesche Operatoren diese Rangfolge gewahlt Nach Anwendung der genannten Operatorrangfolgen wird z B der arithmetische Ausdruck 3 4 5 6 displaystyle 3 4 cdot 5 6 nbsp ausgewertet als 3 4 5 6 displaystyle 3 4 cdot 5 6 nbsp der logische Ausdruck P Q R S T displaystyle P leftrightarrow Q rightarrow R lor lnot S land T nbsp als P Q R S T displaystyle P leftrightarrow Q rightarrow R lor lnot S land T nbsp Reihenfolge gleichwertiger Operatoren BearbeitenZusatzlich kann fur Operationen eine Assoziativitat festgelegt werden mit der bestimmt wird in welcher Richtung nebeneinander stehende gleichwertige Operatoren implizite Klammerung vorgeben falls uberhaupt Ein Operator heisst linksassoziativ wenn A op B op C op D wie A op B op C op D gelesen werden soll ein Operator heisst rechtsassoziativ wenn A op B op C op D wie A op B op C op D gelesen werden soll Von den genannten arithmetischen Operatoren wird die Potenzierung als rechtsassoziativ definiert d h a b c d a b c d a b c d displaystyle a b c d a left b left c d right right neq left left a b right c right d nbsp Ebenso der Pfeiloperator a b c a b c a b c displaystyle a uparrow uparrow b uparrow uparrow c a uparrow uparrow left b uparrow uparrow c right neq left a uparrow uparrow b right uparrow uparrow c nbsp Die ubrigen zweistelligen Operatoren werden als linksassoziativ definiert d h zum Beispiel A B C D A B C D displaystyle A B C D A B C D nbsp In der Logik werden Junktoren meistens linksassoziativ definiert es gibt aber durchaus auch Autoren die zumindest das Konditional rechtsassoziativ verwenden Es gibt auch Programmiersprachen wie z B Occam die alle Operatoren auf den gleichen Rang setzen und linksgeklammert interpretieren Gliederungszeichen BearbeitenUm innerhalb eines Ausdrucks die definierte Operatorrangfolge zu verandern und um bei fehlender Definition einer Rangfolge Ausdrucke eindeutig 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 haufig Punktierungen verwendet um die Mehrdeutigkeit von Ausdrucken zu verhindern bzw eine allenfalls definierte Operatorrangfolge zu verandern Ein Punktierungssystem das durch das Grundlagenwerk Principia Mathematica eine gewisse Verbreitung erlangte war bis in die 1970er Jahre in unterschiedlich abgewandelter Form auch in einfuhrenden Logikbuchern haufiger anzutreffen Bei diesem System wird statt der gedachten schliessenden Klammer vor einem Junktor bzw statt der gedachten offnenden Klammer nach einem Junktor ein Punkt gesetzt Zum Beispiel wurde statt A B C D displaystyle A lor B land C lor D nbsp der folgende Ausdruck geschrieben A B C D displaystyle A lor B land C lor D nbsp Treffen mehrere gedachte Klammern aufeinander dann werden statt eines einzigen Punktes zwei oder mehrere Punkte gesetzt sodass zum Beispiel anstelle von A B C D displaystyle A rightarrow B lor C land D nbsp der folgende Ausdruck geschrieben wurde A B C D displaystyle A rightarrow B lor C land D nbsp Ein anderes System gewichtet die in einem Ausdruck vorkommenden Junktoren mit Punkten Je mehr Punkte uber einem Operator stehen desto schwacher ist seine Bindungsstarke das heisst desto niedriger ist seine Prioritat Nach diesem System wurde zum Beispiel eine Konjunktion mit zwei Punkten schwacher binden als eine Konjunktion mit einem Punkt diese wiederum schwacher als eine Konjunktion ohne Punkte Sonstiges BearbeitenIn Programmiersprachen wird oft eine Wertigkeit und Assoziativitat fur alle Operatoren festgelegt damit die Struktur aller Ausdrucke auch dann eindeutig ist wenn keine Klammern verwendet werden Die Operatorrangfolge ist normalerweise nur bei Ausdrucken in Infix Notation von Bedeutung Schreibweisen wie die polnische Notation oder die umgekehrte polnische Notation wurden entwickelt damit die Ausdrucke ohne Rangfolge und klammerfrei eindeutig sind Auch bei der ersten pradikatenlogischen Schreibweise der Begriffsschriftnotation und bei graphischen Schreibweisen wie den Existential Graphs ist die Lesart eines Ausdrucks eindeutig bestimmt und bedarf keiner Gliederungszeichen oder konventionen In Programmiersprachen die Nebenwirkungen side effects in Ausdrucken erlauben ist die Reihenfolge in der Teilausdrucke ausgefuhrt oder wirksam werden von Bedeutung Einige Programmiersprachen legen diese Auswertungsreihenfolge etwa Java strikt fest andere wie z B C oder C lassen die Auswertungsreihenfolge bei den meisten Infix Operanden undefiniert Mit der Operatorrangfolge in Sinne dieses Artikels die eine rein syntaktische Konvention darstellt hat dies aber nichts zu tun Beispiel int f1 void int f2 void int f3 int int g void return f3 f1 f2 Es ist nicht definiert ob zuerst f1 oder f2 ausgefuhrt wird und damit side effects auftreten Dagegen ist festgeschrieben dass f3 erst aufgerufen wird nachdem f1 und f2 mit ihren side effects beendet sind Literatur BearbeitenFlorian Cajori A History of Mathematical Notations Open Court Chicago 1928 1929 Dover New York 1993 ISBN 0 486 67766 4 William Kneale Martha Kneale The Development of Logic Clarendon Press Oxford 1962 ISBN 0 19 824773 7 Einzelnachweise Bearbeiten Taschenbuch der Mathematik Verlag Harri Deutsch und B G Teubner Verlagsgesellschaft 1978 1989 19 24 Ausgabe ISBN 3 87144 492 8 Band 1 S 115 120 Kapitel 2 4 1 1 George Mark Bergman Order of arithmetic operations Education Place The Order of Operations Abgerufen von https de wikipedia org w index php title Operatorrangfolge amp oldid 238354250