Pilas

Anuncio
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
Formato para prácticas de laboratorio
CARRERA
PLAN DE
ESTUDIO
Ingeniero en
Computación
PRÁCTICA
No.
2
CLAVE DE
UNIDAD DE
APRENDIZAJE
NOMBRE DE LA UNIDAD DE APRENDIZAJE
12098
Algoritmos y Estructura de Datos
2009-1
LABORATORIO
DE
NOMBRE DE LA
PRÁCTICA
Algoritmos y Estructura de Datos
DURACIÓN
(HORAS)
Pilas
2
1. INTRODUCCIÓN
Las pilas son de estructuras de datos que son utilizadas por programas de aplicación, como por ejemplo
un almacenar temporalmente datos. Es importante comprender el funcionamiento de las pilas para
comprender el funcionamiento interno de otras aplicaciones que hacen uso de ellas.
2. OBJETIVO (COMPETENCIA)
Elaborar un programa que utilice pilas en la solución de un problema mostrando creatividad para en la
propuesta de la solución.
3. FUNDAMENTO
La pila es una estructura lineal que recibe datos por un extremo y los retira por el mismo extremo,
siguiendo la regla último elemento en entrar, primero en salir, conocida como LIFO (Last-IN FirstOUT).
El comportamiento de una pila en estructura de datos es similar al comportamiento de una pila en el
mundo cotidiano. Esto es, si se tiene una pila de diez libros, y se desea remover el quinto libro, se
deben remover primero aquellos que se encuentran sobre el libro deseado. De lo contrario, la pila de
libros corre el riesgo de derrumbarse. De manera similar, si se desea agregar un libro, esto se hace
colocando el libro nuevo sobre el último libro que se agregó.
El paquete java.util incluye una clase Stack la cual extiende a la clase Vector con cinco operaciones
que permiten que un Vector se comporte como pila. Estas operaciones se implementan en los
métodos: push(), pop(), empty(), peek() y search().
En el siguiente programa se muestra una forma de utilizar un Stack. Se crea un Stack y se guardan
datos ahí con el método push(). Posteriormente, se extraen estos datos con el método pop().
Otra forma de declarar un Stack es como se muestra en el siguiente listado en la línea 8, esto es una
clase parametrizada, quiere decir que sólo aceptará objetos del tipo de la clase que se especifica en la
declaración del objeto Stack . Esta forma tiene la ventaja de que el compilador verifica que el tipo de
los objetos que se guardan en pila sean de tipo Integer como se indicó en la declaración. Por esta
razón, la línea 13 la señala como error NetBeans en este listado mientras que en el listado anterior, la
misma línea es correcta.
La descripción completa de la clase Stack se puede consultar en la liga de la referencia [1].
4. PROCEDIMIENTO (DESCRIPCIÓN)
A) EQUIPO NECESARIO
MATERIAL
Para realizar esta práctica se necesitará tener NetBeans instalado en la computadora, el compilador de
Java y acceso a la Web.
B) DESARROLLO DE LA PRÁCTICA
1. Se desea controlar la ejecución de un programa de manera que se tenga un reporte exhaustivo
de las ejecuciones de los procesos que contiene el programa. De estas ejecuciones, se requiere
el nombre del proceso. En caso de que exista un error, se debería informar con propiedad en
qué parte ocurrió el error y todo el camino que ha afectado. Por ejemplo, si se tiene el siguiente
programa:
prog1
proc1
proc2
proc4
proc2
proc5
proc8
fin prog1
La ejecución correcta del mismo debería generar un reporte así :
prog1 iniciado
proc1 iniciado
proc2 iniciado
proc2 terminado
proc1 terminado
proc4 iniciado
proc2 iniciado
proc2 terminado
proc5 iniciado
proc5 terminado
proc4 terminado
proc8 iniciado
proc8 terminado
prog1 terminado
Y salida: SUCCESSFULL
Pero para una ejecución fallida, por ejemplo si el proc2 falla en la segunda llamada, el reporte
del seguimiento deberá ser así:
prog1 iniciado
proc1 iniciado
proc2 iniciado
proc2 terminado
proc1 terminado
proc4 iniciado
proc2 iniciado
proc2 fallado
proc4 fallado
prog1 fallado
Y salida: ABORT ERROR prog1:proc4:proc2
Escribir un programa que utilizando pilas simule la ejecución y falla de los procesos de un
programa así como los reportes de ejecución. El programa generará hasta 8 procesos diferentes
y dentro de cada uno de los procesos generará hasta 3 más. De forma aleatoria fallará o no
alguno de los procesos, a partir de ahí todo fallará. El programa:
a) Primero deberá mostrar la secuencia en la que se ejecutarán los procesos. Deberá
indicar cuando los procesos se ejecutan dentro de otro proceso.
b) Después deberá mostrar la ejecución y término o fallo de los procesos, indicando el
anidamiento de los procesos como se mostró en el ejemplo.
c) Finalmente deberá mostrar el reporte de seguimiento del programa. En caso de
fracaso, el reporte deberá mostrar en orden los procesos que quedaron inclusos como se mostró
en el ejemplo.
2. Escribir un programa en el que :
a. Se acepten expresiones aritméticas en notación infijo.
b. Se conviertan expresiones aritméticas de notación infijo a notación postfijo utilizando la
clase Stack de Java.
c. Se calcule el valor de la expresión utilizando la clase Stack de Java.
d. Se muestre la expresión original, la expresión convertida y su resultado.
Escribir
un programa en el que :
3.
a. Se acepten expresiones aritméticas en notación infijo.
b. Se conviertan expresiones aritméticas de notación infijo a notación prefijo utilizando la
clase Stack de Java.
c. Se calcule el valor de la expresión utilizando la clase Stack de Java.
d. Se muestre la expresión original, la expresión convertida y su resultado.
4. Escribir un programa en el que :
a. Se acepten expresiones aritméticas en notación postfijo.
b. Se conviertan expresiones aritméticas de notación postfijo a notación infijo utilizando la
clase Stack de Java.
c. Se calcule el valor de la expresión utilizando la clase Stack de Java.
d. Se muestre la expresión original, la expresión convertida y su resultado.
5. Escribir un programa en el que :
a. Se acepten expresiones aritméticas en notación prefijo.
b. Se conviertan expresiones aritméticas de notación prefijo a notación infijo utilizando la
clase Stack de Java.
c. Se calcule el valor de la expresión utilizando la clase Stack de Java.
d. Se muestre la expresión original, la expresión convertida y su resultado.
C) CÁLCULOS Y REPORTE
5. RESULTADOS Y CONCLUSIONES
6. ANEXOS
7. REFERENCIAS
[1] Java Stack class http://download.oracle.com/javase/6/docs/api/java/util/Stack.html
[2] Notación de infijo http://es.wikipedia.org/wiki/Notaci%C3%B3n_de_infijo
[3] Notación de postfijo http://es.wikipedia.org/wiki/Notaci%C3%B3n_de_postfijo
[4] Notación de prefijo http://es.wikipedia.org/wiki/Notaci%C3%B3n_de_prefijo
[5] Pilas http://es.wikipedia.org/wiki/Pila_(inform%C3%A1tica)
Formuló
Cecilia Curlango
Rosas Gloria Chávez
Valenzuela
María Luisa González
Ramírez
Revisó
Gloria Chávez
Valenzuela
Aprobó
Autorizó
Maximiliano de las
Fuentes Lara
Nombre y Firma del
Maestro
Nombre y Firma del
Responsable de
Programa Educativo
Nombre y Firma del
Responsable de
Gestión de Calidad
Nombre y Firma del
Director de la Facultad
Descargar