Assoziativitäten / Prioritäten < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 09:51 Di 25.08.2009 | Autor: | itse |
Aufgabe | Der Ausdruck wird folgendermaßen ausgewertet:
3*4 - 5*2 - 1 -> (3*4) - (5*2) - 1 -> 12 - 10 - 1 -> 2 - 1 -> 1
a, angenommen, der Subtraktionsoperator würde von rechts nach links binden, statt wie üblich von links nach rechts. Was wäre der Wert des Ausdrucks?
b, angenommen, der Subtraktionsoperator würde normal von links nach rechts binden, aber stärker als der Multiplikationsoperator. Was wäre der Wert des Ausdrucks?
c, agenommen, der Subtraktions- und Multiplikationsoperator würden beide gleich stark binden und beide normal von links nach rechts binden. Was wäre der Wert des Ausdrucks? |
Hallo Zusammen,
a, 3*4 - 5*2 - 1 -> (3*4) - (5*2) - 1 -> 1 - (5*2) - (3*4) -> 1 - 10 - 12 -> 1 - 22 -> -21
Lann man dies so schreiben, also die Reihenfolge umdrehen, damit man es wie gewöhnt von links nach rechts lesen kann, aber dennoch berücksichtigt, dass der Operator von rechts nach links bindet?
b, 3*4 - 5*2 - 1 -> 3*(4 - 5)*(2 - 1) -> 3*(-1)*(1) -> -3
c, 3*4 - 5*2 - 1 -> {[(3*4) - 5]*2} - 1 -> {[12 - 5]*2} - 1 -> {7*2} - 1 -> 14 -1 -> 13
Stimmen die Ergebnisse?
Gruß
itse
|
|
|
|
Hallo itse!
> Der Ausdruck wird folgendermaßen ausgewertet:
>
> 3*4 - 5*2 - 1 -> (3*4) - (5*2) - 1 -> 12 - 10 - 1 -> 2 - 1
> -> 1
>
> a, angenommen, der Subtraktionsoperator würde von rechts
> nach links binden, statt wie üblich von links nach rechts.
> Was wäre der Wert des Ausdrucks?
>
> b, angenommen, der Subtraktionsoperator würde normal von
> links nach rechts binden, aber stärker als der
> Multiplikationsoperator. Was wäre der Wert des Ausdrucks?
>
> c, agenommen, der Subtraktions- und Multiplikationsoperator
> würden beide gleich stark binden und beide normal von
> links nach rechts binden. Was wäre der Wert des
> Ausdrucks?
> Hallo Zusammen,
>
> a, 3*4 - 5*2 - 1 -> (3*4) - (5*2) - 1 -> 1 - (5*2) - (3*4)
> -> 1 - 10 - 12 -> 1 - 22 -> -21
>
> Lann man dies so schreiben, also die Reihenfolge umdrehen,
> damit man es wie gewöhnt von links nach rechts lesen kann,
> aber dennoch berücksichtigt, dass der Operator von rechts
> nach links bindet?
Nein, das denke ich nicht. Ich bin der Meinung, dass es so aussehen muss:
$3*4-5*2-1 [mm] \to [/mm] (3*4)-[(5*2)-1] [mm] \to [/mm] 12-[10-1] [mm] \to [/mm] 12-9 [mm] \to [/mm] 3$
> b, 3*4 - 5*2 - 1 -> 3*(4 - 5)*(2 - 1) -> 3*(-1)*(1) -> -3
Das erhalte ich auch. Weiß nicht, ob dann zwei Multiplikationen gleichzeitig ausgewertet werden, evtl. müsste man am Ende noch schreiben: $[3*(-1)]*1 [mm] \to [/mm] 3*1 [mm] \to [/mm] 3$.
> c, 3*4 - 5*2 - 1 -> {[(3*4) - 5]*2} - 1 -> {[12 - 5]*2} - 1
> -> {7*2} - 1 -> 14 -1 -> 13
Viele Grüße
Bastiane
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 08:46 Do 27.08.2009 | Autor: | itse |
Hallo,
> > Der Ausdruck wird folgendermaßen ausgewertet:
> >
> > 3*4 - 5*2 - 1 -> (3*4) - (5*2) - 1 -> 12 - 10 - 1 -> 2 - 1
> > -> 1
> >
> > a, angenommen, der Subtraktionsoperator würde von rechts
> > nach links binden, statt wie üblich von links nach rechts.
> > Was wäre der Wert des Ausdrucks?
> >
> > Hallo Zusammen,
> >
> > a, 3*4 - 5*2 - 1 -> (3*4) - (5*2) - 1 -> 1 - (5*2) - (3*4)
> > -> 1 - 10 - 12 -> 1 - 22 -> -21
> >
> > Kann man dies so schreiben, also die Reihenfolge umdrehen,
> > damit man es wie gewöhnt von links nach rechts lesen kann,
> > aber dennoch berücksichtigt, dass der Operator von rechts
> > nach links bindet?
>
> Nein, das denke ich nicht. Ich bin der Meinung, dass es so
> aussehen muss:
>
> [mm]3*4-5*2-1 \to (3*4)-[(5*2)-1] \to 12-[10-1] \to 12-9 \to 3[/mm]
Okay, müsste es dann nicht aber so lauten:
[mm]3*4-5*2-1 \to (3*4)-[(5*2)-1] \to 12-[10-1] \to 12-[-9] \to 12+9 \to 21[/mm] ?
Das Minuszeichen ist nun doch rechts bindend, also
links bindend: 10 (- 1) = 9
rechts bindend: (10 -) 1 = -10 + 1 = -9
3*4 - 5*2 - 1 -> - (3*4) - (5*2) + 1 -> - 12 - 10 + 1 -> - 21
Oder liege ich damit falsch?
Danke für die Antwort.
Gruß
itse
|
|
|
|
|
Hallo itse!
> > Nein, das denke ich nicht. Ich bin der Meinung, dass es so
> > aussehen muss:
> >
> > [mm]3*4-5*2-1 \to (3*4)-[(5*2)-1] \to 12-[10-1] \to 12-9 \to 3[/mm]
>
> Okay, müsste es dann nicht aber so lauten:
>
> [mm]3*4-5*2-1 \to (3*4)-[(5*2)-1] \to 12-[10-1] \to 12-[-9] \to 12+9 \to 21[/mm]
> ?
>
> Das Minuszeichen ist nun doch rechts bindend, also
>
> links bindend: 10 (- 1) = 9
> rechts bindend: (10 -) 1 = -10 + 1 = -9
Ich verstehe unter "rechts bindend", dass einfach das rechte zuerst ausgewertet wird, nicht aber dass man von rechts nach links rechnet. Aber ich kenne keine Definition dazu, deswegen ist es nur eine Vermutung. Habt ihr das vllt irgendwo definiert?
Viele Grüße
Bastiane
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:09 Do 27.08.2009 | Autor: | itse |
Ich habe nur das hier als Definition:
Jeder Operator hat, neben seiner Priorität, acuh eine charakteristische Assoziativität (Bindungsrichtung), die "links" oder "rechts" sein kann. Alle binären arithmetischen Operatoren sind links-assoziativ: Der am weitesten links stehende Operator wird zuerst ausgewertet, erst dann werden die übrigen betrachtet.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:20 Sa 29.08.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|