Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
1
Facultad: Ingeniería
Escuela: Computación
Asignatura: Programación III
Tema: “PILAS”.
Objetivos Específicos
• Diseñar una clase pila que permita verificar su funcionamiento y aplicación.
• Implemente una pila utilizando los objetos de colección de Visual C# .NET.
• Reforzar habilidades en el entorno gráfico de C#
Introducción Teórica
PILA
Una pila (stack) es una lista ordenada de elementos en la que todas las inserciones y
supresiones se realizan por un mismo extremo de la lista. A una pila se le pueden añadir y
retirar nuevos nodos únicamente de su parte superior, la cima de la pila. Por esta razón, se
conoce una pila como una estructura de datos LIFO por last-in, firstout, es decir último en entrar
primero en salir.
Cuando se dice que la pila está ordenada, se quiere decir que hay un elemento al que se puede
acceder primero (el que está encima de la pila), otro elemento al que se puede acceder en
segundo lugar (justo el elemento que está debajo de la cima), un tercero, etc. No se requiere
que las entradas se puedan comparar utilizando el operador “menor que” y pueden ser de
cualquier tipo.
Materiales y Equipo
• Guía de Laboratorio Nº 5.
• Computadora con programa:
o Visual Studio C#
• Dispositivo de Almacenamiento (USB).
Procedimiento
EJERCICIO 1
Cree un proyecto modo consola en Visual C# y agregue el siguiente código dentro de la
clase program.
class nodo
{
public char info;
//sgte es un objeto que simula el puntero
public nodo sgte;
}
class pila
{
public nodo tope;
public pila()
{
tope = null;
}
//PARTE 2
//SE INGRESA UNA CADENA Y SE INGRESAN TODOS LOS
//CARACTERES DE DICHA CADENA
Console.WriteLine("\t\t---PARTE II---");
Console.Write("Ingrese la palabra: ");
cadena = Console.ReadLine();
EJERCICIO 2.
En este ejercicio se utilizaran funciones de pilas ya creadas en Visual C# pero se utilizan objetos
por lo que habrá que hacer las conversiones necesarias.
• Dentro del método static void Main(string[] args) ingrese el siguiente código:
do{
Console.Clear();//se limpia consola
switch (opcion)
{
case 1:
agregar(ref miPila);
break;
case 2:
eliminar(ref miPila);
break;
case 3:
limpiar( ref miPila);
break;
case 4:
imprimir(miPila);
break;
case 5: break; //salir
default:
mensaje("ERROR: la opción no es valida. Intente de nuevo.");
break;
}
}
while(opcion!=5);
EJERCICIO 3.
En este ejercicio se verá una representación gráfica de cómo funcionan las pilas, sin embargo
realmente no se llegan a implementar propiamente las pilas, pues cada nodo (representado
por los textbox) es independiente de los otros. La idea principal de las pilas es que pueda
conocerse qué nodo está después del nuestro para poder realizar sus recorridos.
Elementos
2 botones ---agregar y eliminar
6 textbox --- 5 para simular los nodos y
1 para contabilizar elementos
1 label – para indicar mensaje de total
elementos
Consideraciones
a. El form debe llamarse Pila para que su constructor pueda ser nombrado de la misma
forma
Programación III. Guía 5. 8
8
b. No olvidar cambiar propiedad de nombre a los textbox y a los button acordes a lo que se
requiera (en este caso se ha usado txt1, txt2, txt3, txt4,txt5,txt6 y btnagragrar,
btneliminar)
c. En la propiedad de Visible de los textbox se ha establecido en FALSE para que no
aparezcan a inicio de la simulación
d. Los valores de texto establecidos al inicio son de 0 para los seis textbox
e. Modifique los colores de la forma en que le parezca más conveniente.
f. Debe respetar el orden de los textbox de forma que el txt2 quedé hasta la parte inferior
de la pantalla, el txt2 sobre este, txt3 sobre txt 2 y así sucesivamente. Se ha dejado una
distancia de 50 entre cada textbox en eje y y la misma posición en el eje x.
Dentro del código digite lo siguiente: (no olvide dar doble click a los botones para activar sus
eventos)
}
}
Programación III. Guía 5. 10
10
Análisis de Resultados
Utilizando pilas
• Ejercicio 1. Crear un programa que solicite una expresión matemática y que revise si
los paréntesis están balanceados
• Ejercicio 2. Crear un programa que lea una palabra e imprima un mensaje indicando si
es palíndromo o no. Una palabra es palíndromo cuando se lee igual hacia adelante que
hacia atrás. Ejemplo: oso, radar, reconocer, rotor, seres, somos, etc.
Investigación complementaria.
Ejercicio 1.
Modifique el ejemplo 3 de forma que trabaje con un timer y cuando agregue un nodo se
desplace desde la parte superior de la pantalla hasta llegar a la posición que le corresponde.
Ejercicio 2.
Investigue de qué forma podría realizarse una representación gráfica que incluya realmente
una pila en la cual sus nodos pueden ir conectados y que cumpla con todo lo necesario para
simular un TAD.
Ejercicio 3.
Un almacén tiene capacidad para apilar n contenedores. Cada contenedor tiene un número
de identificación. Cuando se desea retirar un contenedor específico, deben retirarse primero
los contenedores que están encima de él y colocarlos en otra pila, efectuar el retiro y
regresarlos.
Almacén
5
4
3
Programación III. Guía 5. 11
11
2
1
Paso 1. Se retiran los contenedores que están encima de él y se colocan en otra pila
Pila 1 pila 2
3 4
2 5
1
Pila 1 Pila 2
Pila 1
Paso 3. Regresarlos
Pila 1 pila 2
2 4
5
1