You are on page 1of 7

FACULTAD DE INGENIERIA DE TELECOMUNICACIONES Y TELEMATICA

CURSO DOCENTE TURNO CICLO AULA FECHA PERIODO ACADMICO

: : : : : : :

Algoritmo y Estructura de Datos II Ing. Elizabeth Castillo Elescano Noche IV AO308 26/12/2011 2011-III

TEMA: Pilas (Parte I)


1. Concepto de Pila Una pila, es la estructura de datos de entradas ordenadas de forma qu slo se pueden introducir y eliminar por un extremo, llamado cima. Es decir, es una estructura de datos en la cual solo se pueden hacer 2 operaciones: colocar un elemento al final, o quitar un elemento del final, ya que si se quita un objeto de abajo o del centro(lo mismo que si se intenta aadir uno), la pila colapsara. Como cultura general, en ingls a la pila se le llama stack, a la operacin de poner un elemento en la parte superior se le llama push, y la de quitar un elemento se le llama pop. Asi mismo, si la pila sobrepasa su tamao mximo, el error devuelto es stack overflow o desbordamiento de pila(ahora ya sabemos qu quieren decir algunos errores comunes que saturan el monitor en pantallas azules). Propiedad:

ltimo en entrar primero en salir LIFO (Last- in, first-out)

Secuencia de operaciones:

Ejemplos: Pila de platos

Pila de discos Pila de llamadas a funciones Pila de recursin Pila de resultados parciales de frmulas aritmticas, etc.

Representacin de pilas (Exp.. Algebraicas)


1. Calculando con gramticas Definiciones previas Semntica Operacional: La semntica operacional se usa para describir cmo se ejecutara un programa escrito en un lenguaje de programacin sobre una mquina dada. Notaciones: Prefijo, sufijo e infijo Tipos de notacin Notacin infijo: Es la notacin matemtica habitual: A+B Ejm.: A + B, A 1, E/F, A * C , A ^ B , A + B + C, A+B-C Notacin posfijo: Es la ms prctica para operar y evaluar expresiones: AB+ Ejm.: AB+, A1-, EF/, AC*, AB^, AB+C+, AB+C Notacin prefijo: Usada en ensamblador: +AB Ejm.: + AB, - A1, /EF, *AC, ^AB, +AB+C, +AB-C

Ejemplo 4. A partir de las expresiones siguientes, escribir de Infijo a Posfijo: (a + b) * (e+f) (a + b) * (c-d)*e*f (a+b) * (c/(d-e)+f) g Ejemplo 5.: Sea la expresin: x + y ( 1+2)-(1*2)=1 En infijo ser:

x*y

(xy+)-(xy*) Xy+xy*Ahora, si x= 1 ; y = 2 Su tabla de evaluacin sera:

PILA

EXPRESIN

ACCIN

Xy+xy*1 12 12+12*2+12*+12*-

Empilar (1) Empilar (2) + Se sacan los dos operandos de la pila, se suman y el resultado se mete en la pila. Empilar(3) Empilar (1) Empilar (2) * Se sacan los dos operandos (2)(1)de la pila, se multiplica y el resultado se mete en la pila . Empilar(2) - Se sacan los dos operandos (2)(3)de la pila, se resta y el resultado se mete en la pila . Empilar(-1)

3 31 312

12*2**-

32

-1
Ejemplo 6: Evaluar la expresin 12+34-*

1 Es un operando, se mete en el stack. STACK[ 1 ] 2 Es un operando, se mete en el stack. STACK[ 21 ] + Es un operador, como + es un operador binario (necesita dos elementos) se sacan del stack y se realiza la operacin (1 + 2) y el resultado se mete en el stack. STACK[ 3 ]

3 Es un operando, se mete en el stack. STACK[ 33 ]

4 Es un operando, se mete en el stack. STACK[ 433 ] - Es un operador binario, se sacan dos elementos del stack y se realiza la operacin (3 4) y el resultado se mete en el stack. STACK[ (-1)3 ]

* Es un operador binario, se sacan dos elementos del stack y se realiza la operacin (3 * (-1)) y el resultado se mete en el stack. STACK[ (-3) ]

Resultado final: -3

Prctica dirigida 1. Dada la siguiente expresin en POSFIJO: ab + ab - * , si a = 4 , b = 5.


Complete la tabla con cabecera Pila / expresin / Accin, mediante el uso de cdigos intermedios.

2. Convertir de PREFIJO a INFIJO a) ***+p q r s t u = (p+ q) *(r- s)* t* u b) - * + a b + / c d e f g = ((a+b)*((c/(d-e))+f))-g c) + - x y z = (x-y)+z d) - + m n * m n = (m+n)-(m*n)

3. Evaluar las siguientes expresiones: a) + - 35 64 = (3-5)+(6-4) b) ^ - * + 123 - 83 63 = (((1+2)*3) - (8-3)) ^ (6-3) c) 28 41 - * = (2-8)*(4-1) d) 10 64 823^ * / - = (10-(64/(8*(2^3))))

4. Dada la siguiente expresin: x + y x * y expresarla en POSFIJO y realizar


un programa mediante el uso de PILA, para x = 1 e y = 2, mostrando en pantalla el resultado final. Reutilice el siguiente cdigo.

Ejercicios de extensin Convertir a prefijo las siguientes expresiones infijo: (a) (b) PILA 1 12 A + B - C; (A + B) * (C - D); A=1, B=2, C= -1 , D=4 EXPRESION 12+(-1)4-* 2+(-1)4-* +(-1)4-* ACCION Empilar (1) Empilar (2)

+ Se sacan los dos operandos de la pila, se suman (2) y (1) y el resultado se mete en la pila. Empilar (3)
Empilar (-1) Empilar (4)

3 3 (-1) 3 (-1) 4

(-1)4-* 4-* -*

3 (-5)

- Se sacan los dos operandos de la pila, se restan (4) y (-1) y el resultado se mete en la pila(-1-4) Empilar (-5) * Se sacan los dos operandos de la pila, se multiplican (-5) y (3) y el resultado se mete en la pila. Empilar (-15)

(-15) (c) (d) (e) PILA A ^ B * C - D + E / F / (G + H); ((A + B) * C - (D - E)) ^ (F + G); A - B / (C * D ^ E). A=6, B=2, C= 3 , D=1 , E=3 EXPRESIN 62-313^*/ ACCIN

Evaluar mediante pilas las siguientes expresiones sufijo: (a) (b) (c) 5 4 3 2 1 * + 1 2 3 * / 2 * 1 / 2 + - + *; 1 2 * 4 2 / 3 4 + 5 * - +; 2 1 / 4 2 * + 6 5 - 8 2 / + +;