Notice: Unexpected clearActionName after getActionName already called in /var/www/html/includes/context/RequestContext.php on line 338
Operatorassoziativität – Wikipedia Zum Inhalt springen

Operatorassoziativität

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Linksassoziativer Operator)

Operatorassoziativität bezeichnet vor allem in der Informatik, aber auch Mathematik und Logik die Festlegung, wie komplexere Ausdrücke mit infix-Operatoren, die für zweistellige Operationen stehen, die nicht unbedingt assoziativ sind, zu lesen sind.

Zum Beispiel sind in der Mathematik die Addition und Multiplikation, die üblicherweise mit <math>+</math> bzw. <math>\cdot</math> notiert werden, assoziative Operationen, es gilt also <math>(a+b)+c=a+(b+c)</math> bzw. <math>(a \cdot b)\cdot c=a \cdot (b \cdot c)</math>, ebenso wie in der Logik die Konjunktion <math>(\land)</math> und Disjunktion <math>(\lor)</math>. Hier ist es gleichgültig, ob <math>a+b+c</math> als <math>(a+b)+c</math> oder als <math>a+(b+c)</math> interpretiert wird.

Bei nicht assoziativen Operationen, wie etwa der Subtraktion (infix notiert durch „–“), gilt <math>a-(b-c) = (a-b)-c</math> nicht allgemein, und daher muss festgelegt werden, ob Ausdrücke wie <math>a-b-c</math> überhaupt erlaubt sind, und, falls sie erlaubt sind, welche Klammerung implizit vorliegen soll. Wird festgelegt, dass „–“ linksassoziativ ist, ist <math>a-b-c</math> wie <math>(a-b)-c</math> zu interpretieren. Soll „–“ dagegen rechtsassoziativ sein, wäre <math>a-b-c</math> wie <math>a-(b-c)</math> zu interpretieren.

Linksassoziative Operatoren

Bei linksassoziativen Operatoren wird implizite Linksklammerung vereinbart<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20170905152546

      | {{#ifeq: 20170905152546 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Order of operations. | {{#invoke:WLink|getEscapedTitle|Order of operations.}} | {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20170905152546}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Order of operations. | {{#invoke:WLink|getEscapedTitle|Order of operations.}} | {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20170905152546}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Order of operations. | {{#invoke:WLink|getEscapedTitle|Order of operations.}} | {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Order of operations. | {{#invoke:WLink|getEscapedTitle|Order of operations.}} | {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Order of operations. | {{#invoke:WLink|getEscapedTitle|Order of operations.}} | {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Order of operations. | {{#invoke:WLink|getEscapedTitle|Order of operations.}} | {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20170905152546|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf}}
    || {{#if:  || }}
  }}{{#if: Order of operations.
    | {{#if: {{#invoke:WLink|isBracketedLink|Order of operations.}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|https://www.rit.edu/studentaffairs/asc/sites/rit.edu.studentaffairs.asc/files/docs/services/resources/handouts/A3_OrderofOperations_BP_9_22_14.pdf }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} (PDF; 265 kB) Rochester Institute of Technology</ref><ref>The Order of Operations. Education Place</ref><ref>The Order of Operations. Khan Academy (Video, ab 05:40)</ref><ref>Using Order of Operations and Exploring Properties. (PDF; 268 kB) Absatz 9, Virginia Department of Education</ref><ref>Vorrangregeln und Assoziativität. Technische Universität Chemnitz</ref>

– ein binärer Operator <math>*</math> gilt somit als linksassoziativ, wenn die Ausdrücke

<math>a*b*c </math> <math>:= (a*b)*c</math>
<math>a*b*c*d </math> <math>:= \bigl((a*b)*c\bigr)*d</math>
etc.

wie gezeigt zu lesen sind. Beispiele für linksassoziative Operatoren sind:

<math>a-b-c </math> <math>= (a-b)-c</math>
<math>a:b:c </math> <math>= (a:b):c</math>
<math>a\div b\div c </math> <math>= (a\div b)\div c</math>
<math>a/b/c </math> <math>= (a/b)/c</math>
      Jedoch: Bei waagerechten Bruchstrichen bindet der kürzere Bruchstrich stärker:
<math>\frac{a}{\frac{b}{c}} </math> <math>= \frac{a}{\bigl(\frac{b}{c}\bigr)} = \frac{a \cdot c}{b} </math>
<math>\frac{\frac{a}{b}}{c} </math> <math>= \frac{\bigl(\frac{a}{b}\bigr)}{c} = \frac{a}{b \cdot c} </math>
  • Funktionsanwendung durch Juxtaposition in vielen Programmiersprachen, u. a. Haskell:
f x y z = ((f x) y) z.

Rechtsassoziative Operatoren

Umgekehrt liegt bei rechtsassoziativen Operatoren <math>*</math> implizite Rechtsklammerung vor, so dass gilt:

<math>x*y*z</math> <math>:=</math> <math>x*(y*z)</math>
<math>w*x*y*z</math> <math>:=</math> <math>w*(x*(y*z)) </math>
etc.

Beispiele für rechtsassoziative Operatoren sind:<ref>Rules for Exponents and the Reasons for Them. (PDF; 344 kB) Western Michigan University</ref>

  • Die Potenzierung: <math>x^{y^z} := x^{(y^z)}</math>, denn <math>(x^y)^z</math> wäre einfach <math>x^{y z}</math>.
    Achtung: Taschenrechner werten Eingaben der Form x ^ y ^ z gleichwohl in der Regel linksassoziativ, also so aus, als ob sie in der Form (x ^ y) ^ z eingegeben worden wären – bei Ausdrücken dieser Form muss daher die Rechtsassoziativität der Potenzierung stets mittels eigener Klammersetzung erzwungen werden: x ^ (y ^ z).
  • Die Subjunktion in der Logik wird von den meisten Autoren rechtssassoziativ verwendet, das heißt, dass <math>P \rightarrow Q \rightarrow R</math> als <math>P \rightarrow (Q \rightarrow R)</math> zu lesen ist.
  • Der Zuweisungsoperator einiger Programmiersprachen, wie C: x = y = z ist gleichbedeutend mit x = (y = z), das heißt, der Variablen y wird zunächst der Wert von z zugewiesen und erst danach das Ergebnis dieser Zuweisung (also der zugewiesene Wert z) der Variablen x zugewiesen.
  • Funktionsanwendung durch infix-$ in Haskell:
f $ g $ h $ x = f $ (g $ (h $ x)).

Weder, noch

Es kann auch sein, dass Ausdrücke wie <math>a\bullet b \bullet c</math> einfach verboten werden, selbst dann, wenn die Operation, für die der Operator <math>\bullet</math> steht, assoziativ ist. So ist zum Beispiel in Haskell der Vergleichsoperator ==, wie auch <=,> usw., in diesem Sinne „nicht-assoziativ“, obwohl die Vergleichsoperation zwischen Booleschen Werten etwa (als Funktion <math>2 \times 2 \to 2</math>) assoziativ ist.

Siehe auch

Einzelnachweise

<references />