Está en la página 1de 3

NOTACION POLACA (POSFIJA)

Para evaluar la siguiente expresión aritmética:

el orden que se debería seguir, según la prioridad de los operadores (que se


especificarán más adelante) y el uso de los paréntesis, sería el indicado con las
flechas. Esto implica una dificultad que ya se comentó en la introducción.
Para eliminar esta dificultad, se hace una traducción preliminar de las
expresiones aritméticas que se llama notación de cadena polaca (denominada así
en honor del matemático polaco Lukasiewicsz, que la originó). Esta notación
tiene la ventaja de que las operaciones aparecen en el orden en que se efectúan
realmente la evaluación.
La idea básica detrás de la notación de cadenas polacas es que los
operadores se escriben al final y no en medio de las expresiones. De manera que
A + B se escribiría como A B +. En esta forma, el operador + se considera como
una orden para sumar los valores de las dos variables que lo preceden
inmediatamente. Un ejemplo un poco más complejo podría ser:

La clave de la traducción de notación infija a posfija es la prioridad de los


operadores. A continuación se muestra la prioridad de los operadores utilizados
así como el de las funciones que también se consideran operadores, además de
los pasos a seguir para realizar la traducción, para ello recorreremos la expr.
aritmética infija desde la izquierda hasta el final:

1. Cuando el elemento localizado es


una variable, se coloca
inmediatamente en el extremo Operadores Prioridad
derecho de la expresión posfija que
se está creando. Log, Exp, Sqrt 6

2. Cuando el elemento localizado es - (unario) 5


un operador o función, se coloca ^ 4
en el extremo superior de una pila *, / 3
siempre y cuando la prioridad de
este sea menor que el que está en +, - 2
la cima de la pila. En caso ( 1
contrario se quitará dicho
) 0
operador de la pila y se colocará en
la parte derecha de la expresión
posfija y a continuación se vuelve
a intentar colocar el operador en la
pila.
3. Cuando el elemento es un ‘(‘ se
coloca directamente en la cima de
la pila.
4. Cuando el elemento es un ‘)’, los
operadores de la pila se transfieren
uno a uno, al extremo derecho de
la expresión posfija hasta llegar a
un ‘(‘. Llegado a este punto, este
par de paréntesis de eliminan.

Evaluación de una expresión aritmética en notación polaca


Para su evaluación nos apoyaremos en una pila, donde dejaremos tanto
los resultados intermedios como el final. Se recorrerá la expr. aritmética de
izquierda a derecha, de forma que cuando nos encontremos un operando
(variable o constante) se incluirá en la pila y si nos encontramos un operador
podremos hacer dos cosas:
a) a) Si el operador es unario (-, log, exp o sqrt) solo se aplicará sobre
primer operando de la pila.
b) b) Si el operador es binario (+, -, *, / y ^) se aplicará sobre los dos
primeros operandos de la pila.
Tanto en un caso como en el otro, el resultado se dejará en la cima de la
pila.

ALGORITMO PARA CONVERTIR EXPRESIONES INFIJAS EN


POSTFIJAS (RPN)
1. Incrementar la pila
2. Inicializar el conjunto de operaciones
3. Mientras no ocurra error y no sea fin de la expresión infija haz
o Si el carácter es:
1. PARENTESIS IZQUIERDO. Colocarlo en la pila
2. PARENTESIS DERECHO. Extraer y desplegar los valores hasta
encontrar paréntesis izquierdo. Pero NO desplegarlo.
3. UN OPERADOR.
 Si la pila esta vacía o el carácter tiene más alta prioridad
que el elemento del tope de la pila insertar el carácter en la
pila.
 En caso contrario extraer y desplegar el elemento del tope
de la pila y repetir la comparación con el nuevo tope.
4. OPERANDO. Desplegarlo.
4. Al final de la expresión extraer y desplegar los elementos de la pila hasta que se
vacíe.

ALGORITMO PARA EVALUAR UNA EXPRESION RPN


1. Incrementar la pila
2. Repetir
o Tomar un caracter.
o Si el caracter es un operando colocarlo en la pila.
o Si el caracter es un operador entonces tomar los dos valores del tope de la
pila, aplicar el operador y colocar el resultado en el nuevo tope de la pila.
(Se produce un error en caso de no tener los 2 valores)
3. Hasta encontrar el fin de la expresión RPN.

También podría gustarte