Taller 4
Evaluación de Expresiones Postfijas e Infijas

Fecha de Entrega: Miércoles, Septiembre 24, 2003

Expresiones Postfijas

Nosotros generalmente usamos expresiones como la siguiente:

\begin{displaymath}
a+b\end{displaymath}

Este tipo de notación es llamado notación infija, puesto que el operador se encuentra entre los dos operandos. Dependiendo en la posición del operador se pueden tener otros dos tipos de notación:

Por ejemplo, la siguiente expresión infija,

\begin{displaymath}
(((5+9)\times2)+(6\times5)),\end{displaymath}

se puede escribir usando notación postfija de la siguiente forma:

\begin{displaymath}
5\,9\,+\,2\,\times\,6\,5\,\times\,+\end{displaymath}

Una interesante propiedad de la notación postfija (y prefija) es que no necesita de paréntesis para expresar el orden de aplicación de los operadores. Una expresión postfija se puede evaluar con la ayuda de una pila usando el siguiente procedimiento:

La siguiente figura ilustra el proceso:

Image /Users/fabio/Documents/courses/POO//EvalPostfijo.gif

  1. Implementar una programa que:

    1. Reciba en la línea de comando una expresión postfija que puede incluir: números complejos (con el mismo formato usado en el Taller 2), operadores de suma, resta, multiplicación y división (+, -, *, /). Cada término de la expresión debe estar separado por un espacio.
    2. Evalúe la expresión e imprima el resultado.
  2. Ejemplos:

Conversión de expresiones infijas a postfijas

El siguiente algoritmo permite pasar una expresión infija a postfija:

  1. Realice el seguimiento del anterior algoritmo para la siguiente expresión, mostrando en cada paso el contenido de la pila y los datos impresos en la salida:

    \begin{displaymath}
(((5+9)\times2)+(6\times5))\end{displaymath}

  2. Implemente un programa en Java que reciba en la línea de comandos una expresión infija (totalmente parentizada) e imprima la expresión convertida a postfijo. La expresión puede incluir: números complejos, operadores (+, -, *, /) y paréntesis: '(', ')'. Cada término de la expresión, incluidos los paréntesis, deben estar separados por espacios.

  3. Implemente un programa en java que reciba en la línea de comandos una expresión infija (con las mismas características del punto anterior) e imprima el resultado de evaluar la expresión.