You are on page 1of 1

Expresii Prefixate / Postfixate

Ele au fost introduse în informatică pentru a facilita evaluarea tuturor expresiilor care pot
apărea în cadrul unui program. DE regulă compilatorul se ocupă de scrierea oricărei expresii
algebrice la una dintre formele pre/post fixate.

Forma pe care o folosim în mod clasic se numește "in" fixată.


Toate aceste prefixe (pre/in/post) se referă la poziția operatorului (operația algebrică) în
funcție de membrii operației.

Ex: 2+3 = operație clasică (forma "in"fix)


această operație tradusă la forma "pre"fix: + 2 3
această operație tradusă la forma "post"fix: 2 3 +

Generalizat, o expresie se scrie la una dintre cele două forme (pre sau post fix) recursiv: se
identifică ultima operație, i se aplică această regulă, apoi regula se propagă în membrul stâng
respectiv drept până când toată expresia este tradusă.
Ex:
(2+3)*(3+(4-3)/2) - forma "in"fix
Transformată la "pre"fix: * + 2 3 + 3 / - 4 3 2
Transformată la "post"fix: 2 3 + 3 4 3 - 2 / + *
Marele avantaj al acestora constă în faptul că NU necesită paranteze.

Pentru o mai ușoară prelucrare a acestor operații / transformări, putem foarte elegant să
formăm arborele asociat expresiei și pe baza arborelui să facem formele prefixată / posfixată.
Acest arbore are în rădăcină ultima operație care se face, în fiul stâng are membrul stâng al
operației, în fiul drept membrul drept.

R=rădăcină, S=stânga, D=dreapta. Parcurgerile se pot schematiza prin aceste 3 litere, ele
fiind recursive (se aplică în același mod subarborilor de pe stânga / dreapta dacă este cazul)
Ca să obținem "pre"fix, parcurgem RSD: * + 2 3 + 3 / - 4 3 2
Ca să obținem "post"fix, parcurgem SDR: 2 3 + 3 4 3 - 2 / + *

You might also like