notacion polaca ppt

Upload: julian-gomez

Post on 06-Jul-2015

95 views

Category:

Documents


5 download

TRANSCRIPT

NOTACIN POLACA

1

A + B se dice infija (el operador + est entre los operandos) AB+ postfija (el operador est despus de los operandos) +AB prefija (Operador antes de los operandos)2

Prioridad de ejecucin

Parntesis ^ (Potencia) * / % Multiplicacin, divisin y Mod + Suma y resta

3

Ejemplos de conversin: 1.a) x + z * w 2.b) (x+z) * w / t ^ y-v Pasos 1 XZ + *W/T ^Y - V 2 XZ + *W/ TY ^- V 3 XZ + W*/ TY^- V 4 XZ + W*TY^/-V 5 XZ + W*TY^/ V4

xzw*+

Convierte en notacin polaca: a) 6 - (2+3) * (3 + 8/2)^2 + 3 b) Z / (X + Y * T) ^ W

5

Algoritmo de conversin de una expresin aritmtica Normal a Polaca

6

Expresin sin parntesis 1- pila y aux: dos pilas vacas 2- While not fin de expresin do inicio 1- leer car //un carcter 2- si car es operando entonces push (pila, car) sino // es operador inicio while prioridad (tope (aux)) >= prioridad (car) do inicio c n pop (aux) push (pila, c) fin push (aux, car) fin fin7

3- While aux no est vacia do // revolver a la pila original inicio c n pop (aux) push (pila, c) fin

8

Tarea1. 2. 3. 4. 5. 6. 7. 8. 9. 10. X*Z+W/T-V 5 - 7 / 1 * 5 + 8 - 4 ^ 72 * 1 / 14 Z-W*Y+X ^K 1+9-8 / 7^6-4 R ^ P + O* I - L * E 23 + 9 / 15 - 14 * 13 ^ 5 * 8 E+S-Q*P/J 6 + 8 / 4 - 12 * 9 ^ 7 - 4 / 3 + 1 * 9 ^ 5 Z/X+Y*T^P+E W/X-Z*T-Y^K9

Expresin con parntesis - pila y aux = 2 pilas - while not fin de expresin do inicio 1-leer car 2-si car es operando entonces push (pila, car) 3-si car es operador entonces inicio While prioridad (top (aux)) >= prioridad (car) do inicio c n pop (aux) push (pila, c) fin push (aux, car) fin 4-si car es ( entonces push (aux, marca)10

5-Si car es ) entonces inicio while top (aux) < > marca do inicio c n pop (aux) push (pila, c) fin c n pop (aux) //para quitar la marca fin fin - While aux no est vaca do inicio c n pop (aux) push (pila, c) fin11

Evaluacin de una expresin en posfijo Algoritmo: Se usa una pila donde se almacena los operandos que se encuentran en el tope de la pila. Esto implica sacar dos elementos, aplicar el operador e insertar de nuevo el resultado en la pila.

12

1-Inicializar la pila pila vaca; 2-While hay mas caracteres en la pila de entrada (expresin) do inicio Simb = carcter siguiente de entrada; If simb es un operando push (pila, simb) else //el smbolo es un operador inicio opnd2.= pop (pila); opnd1:= pop (pila); valor:= resultado de la operacin con opnd1 y opnd2; push (pila, valor); fin //termina else fin //termina while 3- resultado = pop (pila)13

Tarea1. (3 * 5 + 2 / (4 ^ 2 8 * 7) + (8 ^ (3 * 5))) 2. 2 1 * (3 / 4 + 2) - (3 * 7 / 5) / 2 ^ 3 ^ 2 3. 5 7 / 8 * 9 + 5 + ((8 / 6 * 2) + (9 4 ^ 3) * (1 + 2 -3 * 6)) 4. (7 * 5) + (3 * (4 * 5) ^ ((7 2 ^ 1) + (4 / 8 + 1))) 5. (4 / 8 * (5 5 + 3)) ^ (3 ^ 2 + (1 * 4)) 6. (7 / 5 * 6 1 + 8) + (3 + 1 ^ 5) - 4 7. (4 - (5 + 2)) * (3 + 5 - (8 * 9) / 6) ^ 2 +1 8. (4 * 7 + 5 - 2) ^ (7 / 8 * 9 - 6) * 2 9. 8+(((8 *4 / 7)^(3 / 4))^(4 /2 *3 - 1)) * 2 - (3 * 5/(7 +1)^ 3+1) 10.(9 - (6 + 5 * (4 / 8))) + 2^(7 / (5 * 6)) + 1 - (2 * 7) 3 + 4+514