Equipo 1 Fundamentos De Programacion

BITACORA DEL EQUIPO 1

Saturday, December 02, 2006

4.5.- Priorirdad de operadores, evaluación de expresiones.

A continuación se muestra una pequeña tabla donde se ilustra el orden de prioridad:

OPERADOR

PRIORIDAD

^

Alta

*, /, Div

+, -, Mod

Relaciones

Baja


Nota: sobre todos estos operadores, se encuentran los paréntesis en la maxima prioridad, sin embargo por no considerarse un operador no se incluye en la tabla de prioridades.

En caso de coincidir varios operadores deigual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquiera a derecha.

Cuando se realiza una operación con baja prioridad por adelantado, debe agruparse a los operativos involucrados.
ejemplos:

4 + 12 / 2 = 10 (sin agrupar)

(4 + 12) / 2 = 8 (con agrupador)


*Evaluación de expresiones

las expresiones se clasifican en tres grupos:
  1. expresión fija
  2. expresión postfija
  3. expresión prefija

Expresión postfija:

  • Utilizada para que los compiladores puedan traducir expresiones.
  • Si e es una expresión con operadores y operandos, la forma habitual de escritura se conoce como “infix” porque los operadores van entre (in) los operandos ( los operadores unarios preceden sus operandos).
  • La forma “postfix” consiste en colocar cada operador inmediatamente después de los operandos


Ventajas:

  • No son necesarios los paréntesis
  • La prioridad de los operadores no es relevante
  • La expresión se puede evaluar realizando un recorrido de izquierda a derecha, apilando los operandos y evaluando los operadores utilizando los operandos adecuados extraídos de la pila y apilando el resultado intermedio para repetir el proceso.
    • Este método es más simple que los necesarios cuando se trabaja con la notación “infija”

Conversión postfija - infija

El orden de los operandos es el mismo

1.- Colocar todos los paréntesis de la expresión

2.- Reemplazar los paréntesis derechos con los operadores correspondientes

3.- Eliminar todos los paréntesis

Ejemplo:

A / B - C + D * E - A * C

1.- ( ( ( ( A / B ) - C ) + ( D * E ) ) - (A * C ) )

2.-( ( ( ( AB/C- (DE*+(AC*-

3.- AB/C- DE*+AC*-


Conversión infija - postfija

1.- Pasamos todos los operandos a la salida

2.- Almacenamos los operadores en una pila hasta que se tengan que pasar a la salida

Ejemplos

A + B * C => ABC*+

Siguiente token pila salida

------- vacía ---------

A vacía A

+ + A

B + AB

El algoritmo debe determinar si * ingresa a la pila o si se retira el +.

Como la prioridad de * es mayor se debe almacenar

* +* AB

C +* ABC

La expresión ha finalizado. Se retiran los operadores de la pila: ABC*+




0 Comments:

Post a Comment

<< Home