Seite 1 von 1

Frage zur polnischen Notation bezügl. Schreibweise

Verfasst: 03.08.2007 15:54
von gekkonier
Ausdrücke wie

Code: Alles auswählen

( 1 + 2 ) * ( 4 - 1 )
sehen in polnischer Notation so aus:

Code: Alles auswählen

* + 1 2 - 4 1
Nach umgekehrter polnischer Notation würde es so aussehen:

Code: Alles auswählen

1 2 + 4 1 - *
Nehmen wir mal an, dass ich bei einer Addition mehrere Summanden verwenden will:

Code: Alles auswählen

+ 1 + 2 3
wäre dann äquivalent zu

Code: Alles auswählen

1 + 2 + 3
, nicht? Kann ich da nicht einfach folgendes schreiben?

Code: Alles auswählen

+ 1 2 3
Um veranschaulicher zu machen was ich eigentlich wissen will:
Kann ich folgende Infixnotation

Code: Alles auswählen

( 1 + 2 + 3 ) * ( 4 - 1 )
in folgende polnische Notation umbauen, ohne Unklarheiten in die Notation zu bringen?

Code: Alles auswählen

* + 1 2 3 - 4 1
Gibt es hier vielleicht Stolperfallen, die es zu beachten gäbe?

Verfasst: 03.08.2007 16:19
von ZeHa
Ich kenn mich nicht allzu gut aus, aber ich glaube, das hängt davon ab, wie viele Operanden ein bestimmter Operator sehen will. Ein + verlangt zwei Werte, daher ist es gut möglich, daß es mit drei Werten nicht funktioniert.

Ist aber nur mal ein erster Denkansatz, vielleicht klingelt bei Dir ja irgendwie was, oder Du weißt evtl. wo Du nochmal nachlesen kannst. Ansonsten kann's natürlich auch gut sein, daß das, was ich sage, Unfug ist ;)


EDIT: Wenn man es nämlich mit Funktionsaufrufen nachbauen würde, wäre schnell klar, daß es an der Anzahl der Operanden / Parameter liegt:

Code: Alles auswählen

* + 1 2 - 4 1

mul(add(1, 2), sub(4, 1))
Das wäre hier dann folgendermaßen:

Code: Alles auswählen

* + 1 2 3 - 4 1

mul(add(1, 2), [b]3?![/b]
Dennoch bin ich mir nicht 100% sicher...

Verfasst: 03.08.2007 16:22
von gekkonier
WoNáDo auf http://forum.ruby-portal.de/viewtopic.php?t=5031 hat mich netterweise darauf gebracht:
WoNáDo hat geschrieben:Nimm doch mal (1+2+3)-4 und (1+2)-3-4, die nach Deiner Einsparmethode beide die Darstellung -+1234 hätten.
Offensichtlich bin ich zu kaputt, um eine simple Schlussfolgerung zu ziehen :lol:

Der Thread dort ist schon relativ interessant :lol:

Verfasst: 03.08.2007 19:14
von hardfalcon
Wo wird diese "polnische Notation" (der Begriff kommt mir bekannt vor, aber ich häte ihn jetzt spontan aus dem Bauch raus eher mit Schach asoziert) eigentlich verwendet, und welche Vorteile bietet sie?

Verfasst: 03.08.2007 20:07
von gekkonier
Sobald du in der Shell einen Befehl mit Parametern verwendest, verwendest du ohne es zu wissen polnische Notation.

Beispiele:

dir *.bat
ls a*
cp quellfile zielfile
..
..

Desweiteren ist Lisp-Syntax prinzipiell so aufgebaut, und manchmal wird auch in Interpretern und Compilern aus Infix Postfixnotation in einem Zwischenschritt gemacht, weil es sich damit leichter weiter arbeiten lässt.

Kuck dir das mal an: http://de.wikipedia.org/wiki/Stapelspeicher

Mittels eines Stacks und der Postfixnotation lässt sich relativ einfach ein Taschenrechner basteln ;)

Assembler ist z.B auch Postfix Notation

Verfasst: 03.08.2007 20:15
von Kaeru Gaman
HU... zu dem schell-problem gibts ettliche häßlich witze...
(z.b. witze über lisp... sind die besten)
...aber die UPN... das is , wie mans in die rechenmaschine eingibt,
und das is eigentlich immer aktuell....