Professional Documents
Culture Documents
Expresii PrefixatePostfixate
Expresii PrefixatePostfixate
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.
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 / + *