Академический Документы
Профессиональный Документы
Культура Документы
Estructuras de Datos
EXPRESIONES
A+B Esta forma de escribir las expresiones: NOTACION INFIJA El operador siempre va en medio de los operandos
A+B*C no es igual que (A+B)*C Cada operador tiene su nivel de precedencia, recordemos:
Parntesis : Potencia : Multiplicacin/divisin: Suma/Resta :
() ^ *,/ +,-*
Mayor prioridad
Menor Prioridad
NOTACIONES
A+B*C
NOTACION PREFIJA(POLACA)
A(BC*)+
+AB Aqu el operador va antes que los operandos AB+ Aqu el operador va despus que los operandos
Remover Parntesis
ABC*+ (A+B)*C
Remover Parntesis
AB+C*
EJERCICIOS EN CLASE
Dadas
AB+C* 7C*
A+B -> 7 7*C -> 35
ABC*+ A20+
B*C -> 20 20+A -> 23
EVALUACION: ALGORITMO
Podra ser un una pila
2 veces Pop
ABC*+
C B C*B A
C * B +A
EN PSEUDOCODIGO
Pila s; PilaVacia(s); while(no hayamos revisados toda la expresion) { simbolo = siguiente elemento if(simbolo es un operando) Push(s,simbolo); else{ operando1 = Pop(s); operando2 = Pop(s); valor = resultado de operacin simbolo entre operando1 y operando2 Push(s,valor); } } return(Pop(s));
EJERCICIO EN CLASE
A+B*C-D
ABC*+D-
A B C *+ D -
Pero aun no operador. podemos continuar. Seguimos Comparado con el de mayor * Es un Si se + es un operador, pero, Aqu terminamos de revisar la comparando hasta el con ahora(el el de mayor *), prioridad prioridad el compara con el ultimo hasta lo mayor que vamos expresin, smbolo por smbolo. hasta ahora, el +. Como elprioridad. no tiene mayor no tiene recordado, el * tiene En la pila, quedan aun revisando, no es el de prioridad que el +, el + ya puede ser aadido Ahora si podemos decir, que el * mayor prioridad. Pero no operadores. mejor, amayor la expresion. Como ya no queda mas en la es el prioridad, operador de mayor sabemos si pila, tiene Todos se sacan y sela aaden a la prioridad guardarlo nueva mayor prioridad de todos El es definitivamente hasta ahora, el de Podemos aadir expresin el *a la nueva As termina la conversin mayor Mejor prioridad, debemos recordarlo aun. guardarlo expresion, y olvidarnos de el
* + -
CONVERSION: ALGORITMO
Se aade a la expresin
Si el smbolo es un operador
El smbolo es evaluado con respecto a su prioridad Si tiene mayor prioridad que el ultimo operador almacenado
EN PSEUDOCODIGO
Pila s; PilaVacia(&s); while(no termine la expresion en infija) { simbolo = siguiente carcter de entrada; if(simbolo es un operando) else{
Y CON PARENTESIS
EJERCICIO EN CLASE