el orden que se debera seguir, segn la prioridad de los operadores
(que se especificarn ms adelante) y el uso de los parntesis, sera el indicado con las flechas. Esto implica una dificultad que ya se coment en la introduccin. Para eliminar esta dificultad, se hace una traduccin preliminar de las expresiones aritmticas que se llama notacin de cadena polaca (denominada as en honor del matemtico polaco Lukasiewicsz, que la origin). Esta notacin tiene la ventaja de que las operaciones aparecen en el orden en que se efectan realmente la evaluacin. La idea bsica detrs de la notacin de cadenas polacas es que los operadores se escriben al final y no en medio de las expresiones. De manera que A + B se escribira 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 ms complejo podra ser:
La clave de la traduccin de notacin infija a posfija es la
prioridad de los operadores. A continuacin se muestra la prioridad de los operadores utilizados as como el de las funciones que tambin se consideran operadores, adems de los pasos a seguir para realizar la traduccin, para ello recorreremos la expr. aritmtica 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 expresin posfija que se est creando. Log, Exp, Sqrt 6 2. Cuando el elemento localizado - (unario) 5 es un operador o funcin, se ^ 4 coloca en el extremo superior *, / de una pila siempre y cuando 3 la prioridad de este sea menor +, - 2 que el que est en la cima de ( 1 la pila. En caso contrario se quitar dicho operador de la ) 0 pila y se colocar en la parte derecha de la expresin posfija y a continuacin 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 expresin posfija hasta llegar a un (. Llegado a este punto, este par de parntesis de eliminan.
Evaluacin de una expresin aritmtica en notacin polaca
Para su evaluacin nos apoyaremos en una pila, donde dejaremos tanto los resultados intermedios como el final. Se recorrer la expr. aritmtica 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 expresin infija haz o Si el carcter es: 1. PARENTESIS IZQUIERDO. Colocarlo en la pila 2. PARENTESIS DERECHO. Extraer y desplegar los valores hasta encontrar parntesis izquierdo. Pero NO desplegarlo. 3. UN OPERADOR. Si la pila esta vaca o el carcter tiene ms alta prioridad que el elemento del tope de la pila insertar el carcter en la pila. En caso contrario extraer y desplegar el elemento del tope de la pila y repetir la comparacin con el nuevo tope. 4. OPERANDO. Desplegarlo. 4. Al final de la expresin extraer y desplegar los elementos de la pila hasta que se vace.
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 expresin RPN.