Di st i nci n ent r e ( A+B) *C y A+( B*C) Con par nt esi s y or den de pr el aci n.
Not aci n Pol aca ( J an Lukasi ewi t z) ( Not aci n pr ef i j a)
+AB CD *EF / GH
Ej empl o:
( A+B) *C [ +AB] *C *+ABC A+( B*C) A+[ *BC] +A*BC
( A+B) / ( C- D) [ +AB] / [ - CD] / +AB- CD
Not aci n Pol aca I nver sa ( Not aci n Post f i j a) .
AB+ CD- EF* GH/
Tampoco se necesi t an par nt esi s. Un comput ador nor mal ment e convi er t e l a expr esi n i nf i j a en post f i j a y despus cal cul a l a expr esi n. Ej empl o : Cal cul ador a HP ut i l i za oper aci ones post f i j as.
En el pr ogr ama pondr emos un val or cent i nel a par a saber cuando acaba l a expr esi n. Por ej empl o un par nt esi s der echo.
ALGORI TMO: Encuent r a el VALOR de una expr esi n ar i t mt i ca P escr i t a en not aci n post f i j a.
1. Aadi r un par nt esi s der echo ) al f i nal de P ( cent i nel a) . 2. Exami nar P de i zq. A der . Y r epet i r l os pasos 3 y 4 par a cada el ement o de P hast a que se encuent r e el cent i nel a. 3. Si se encuent r a un oper ando, poner l o en PI LA. 4. Si se encuent r a un oper ador ent onces: a. Sacar l os dos oper ador es super i or es de PI LA, donde A es el el ement o super i or y B el si gui ent e. b. Eval uar B A. c. Poner el r esul t ado de ( b. ) en PI LA. 5. Fi n del condi ci onal de 4. 6. Fi n del bucl e de 2. 7. Hacer VALOR i gual al el ement o super i or de PI LA. 8. Sal i r .
5, 6, 2, +, *, 12, 4, / , -
Smbolo examinado Pila 5 5 6 5, 6 2 5, 6, 2 + 5, 8 * 40 12 40, 12 4 40, 12, 4 / 40, 3 - 37 ) Resul t ado Pasar de notacin infija a postfija (O a Prefija en otros casos.
ALGORI TMO: POLACA( Q, P) . Suponemos que Q es una expr esi n ar i t mt i ca escr i t a en not aci n i nf i j a. Est e al gor i t mo encuent r a su expr esi n post f i j a P.
1. - Met er "( " en PI LA y aadi r ") " al f i nal de Q. 2. - Exami nar Q de i zqui er da a der echa y r epet i r l os pasos 3 a 6 par a cada el ement o de Q hast a que l a PI LA est vaci a. 3. - Si se encuent r a un oper ando, aadi r l o a P. 4. - Si se encuent r a par nt esi s i zqui er do, met er l o en PI LA. 5. - Si se encuent r a un oper ador ent onces: ( a) Repet i dament e sacar de PI LA y aadi r a P cada oper ador ( de l a ci ma de PI LA) que t enga l a mi sma pr ecedenci a o mayor que . ( b) Aadi r a PI LA. [ FI N de condi ci onal ] 6. - Si se encuent r a un par nt esi s der echo, ent onces: ( a) Repet i dament e sacar de PI LA y aadi r a P cada oper ador ( de l a ci ma de PI LA) hast a que se encuent r e un par nt esi s i zqui er do. ( b) El i mi nar el par nt esi s i zqui er do ( no aadi r el par nt esi s i zqui er do a P) . [ Fi n de condi ci onal ] [ Fi n del Bucl e del Paso 2] 7. - Sal i r .
Pr obl emas: - Qu se eval a pr i mer o? - > ( par nt esi s) . - Dnde guar damos r esul t ados i nt er medi os? - > En pi l as.
El pr oceso a segui r es t ener dos pi l as, una par a oper andos y ot r a par a oper ador es, par a su r eal i zaci n es necesar i o que est bi en par ent i zado, ya que, consi st e en eval uar l a expr esi n y si encont r amos un par nt esi s i zqui er do no hacemos nada, si es un oper ando l o pasamos a l a pi l a de oper andos y si es un oper ador a l a de oper ador es, de f or ma que cuando encont r emos un par nt esi s der echo, hay que r eal i zar una oper aci n, cuyos oper andos y oper ador se encuent r an en l as pi l as, y as sucesi vament e. Si l a expr esi n no est r eal i zada con par nt esi s hay que t ener r denes de pr el aci n y el al gor i t mo es un poco ms di f ci l ( Ver Est r uct ur as de Dat os en J AVA de Wei ss) .
Ut i l i zamos pi l as por que necesi t amos al ber gar r esul t ados i nt er medi os per o no sabemos cuant os. La sol uci n es ut i l i zar pi l as. ** Copiar una pila en otra.
PROCEDURE Copi a( VAR P1: Pi l a; VAR P2: Pi l a) ; VAR e: Ti poEl ement o; BEGI N I F NOT EsVaci a( P1) THEN BEGI N Ci ma( P1, e) ; Desapi l ar ( P1) ; Copi a( P1, P2) ; Api l ar ( P1, e) ; Api l ar ( P2, e) END ELSE Pi l aVaci a( P2) END;
** Teniendo una pila ponerla al revs.
PROCEDURE I nvi er t e( VAR P1: Pi l a; VAR P2: Pi l a) ; VAR e: Ti poEl ement o; BEGI N I F NOT EsVaci a( P1) THEN BEGI N Ci ma( P1, e) ; Desapi l ar ( P1) ; Api l ar ( P2, e) ; I nvi er t e( P1, P2) ; Api l ar ( P1, e) END END;