Вы находитесь на странице: 1из 3

Ing. Omar Alejandro Morales Franco.

SEGUNDO PROYECTO
Programacin III
EVALUACIN DE EXPRESIONES ALGEBRAICAS CON VARIABLES (EDEAV)
El proyecto permitir evaluar expresiones escritas en forma infija (el
operador est situado entre los operandos) con parntesis y con operandos
que sern variables (cada vez que deseemos evaluar la expresin pediremos
al usuario que nos d los valores concretos de las variables para esa
evaluacin). Las operaciones vlidas que evaluaremos sern las operaciones
binarias +, -, *, /.

Expresiones vlidas a evaluar sern, por ejemplo:

a + (b - c) / d, (a+b) / (c-d) * e,...

Objetivos

a. Utilizacin del tipo abstracto de datos rbol binario.

b. Reutilizacin de cdigo (reutilizacin de la clase Pila).

c. Trabajo con funciones recursivas.

Una manera adecuada de representar expresiones aritmticas es a travs


de los rboles binarios de expresiones. Esta representacin retiene de manera
natural la precedencia y la asociatividad de los operadores aritmticos.

En un rbol binario de expresiones cada nodo contiene la informacin de


un elemento de la expresin (un operando o un operador) y la propia
estructura del rbol viene determinada por la forma de la expresin aritmtica.

Un ejemplo de esto lo tenemos en los siguientes rboles de expresiones:


Ing. Omar Alejandro Morales Franco.

Se puede ver que dependiendo de la colocacin de los parntesis se fuerza el


cambio de precedencia de los operadores y las expresiones generan rboles distintos.

Tambin es importante resaltar que en el rbol claramente no son


necesarios los parntesis, ya que la precedencia en las operaciones viene dada
por la estructura del rbol.

La evaluacin de las expresiones, es decir, la obtencin de su resultado,


se consigue recorriendo el rbol de expresiones en forma postfija y realizando
para cada nodo que contiene un operador dicha operacin sobre sus hijos. De
hecho, si examinamos el rbol en recorrido post-orden imprimiendo en pantalla
el contenido de cada nodo, obtendremos lo que se denomina la expresin
postfija de la expresin. Las expresiones postfijas de los rboles del ejemplo
son las siguientes:

Para la expresin infija (2+5)*3+1, la expresin postfija es 2 5 + 3 * 1 +

Para la expresin infija 2+5*3+1, la expresin postfija es 2 5 3 * + 1 +

Ntese que la expresin postfija, al igual que ocurra en el rbol, no necesita


utilizar parntesis.

Requerimientos:

El programa deber empezar pidiendo la expresin aritmtica en forma


infija que deseamos evaluar.

Una vez guardada la expresin como salidas de la funcin tenemos cuatro


valores (dos devueltos por referencia, uno como resultado de la funcin y
representacin grfica del rbol generado):

La primera salida (segundo parmetro de la funcin) es la cadena con la


expresin postfija.

La segunda salida (tercer parmetro de la funcin) es un objeto de tipo


TablaSimbolos que es la tabla donde se almacenan los identificadores
correspondientes a los nombres de cada variable.

La tercera salida (valor devuelto por la funcin) es un valor booleano. La


funcin devuelve true si la expresin esta sintcticamente bien formada o
false si haba algn error sintctico en ella de estos dos tipos:
Ing. Omar Alejandro Morales Franco.

Nos hemos dejado algn parntesis sin cerrar

El nmero de operadores o de operandos no es el correcto

La funcin no detecta errores como que el orden entre operandos y operadores


sea incorrecto.

La cuarta salida: genera grficamente el rbol binario resultante de expresin


ingresada.

BONO EXTRA: Si la graficacin del rbol binario generado se realiza paso a


paso tomando en cuenta las decisiones para insertar cada nodo obtendr una
calificacin extra.

Nota: El programa debe ser elaborado con memoria dinmica y ser


entregado el sbado 29 de Abril, el cual debe ser explicado de forma personal
en su funcionamiento, como cdigo fuente. De lo contrario no ser valorado. El
Proyecto es Individual y no se acepta otro da.

Вам также может понравиться