Asesoría y capacitación en informática

Caso Desarrollado (Clase Stack)

Implemente una aplicación que permita ingresar valores numéricos a una pila y controle su ingreso por medio de empilado, quitando el elemento de una pila, mostrando el valor devuelto por una pila y listar en forma de pila. Use la clase Stack.

 

Tener en cuenta:

  • Valide el numero ingresado, en caso hubiera algún error muestre el siguiente mensaje.
  • Al ingresar un numero valido deberá empilar el valor ingresado
  • También se debe implementar un botón que permita mostrar el ultimo valor de la pila sin eliminarlo.
  • Use una lista para mostrar los elementos ingresados y otra mostrar el orden de los valores en la pila.
  • Implemente un procedimiento para poder eliminar un elemento de la pila
  • Implemente un procedimiento para listar los valores de la pila; en caso la pila no tenga que mostrar emita un mensaje como se muestra a continuación:

Solución:

1. Archivo > Nuevo Proyecto. Seleccione Aplicación de Windows Forms desde la plantilla Visual Basic y finalmente asigne el nombre pjPila.

2. Diseñe el formulario propuesto en la Figura y asigne las siguientes propiedades:

Form1(Archivo)(Name)      frmPila
Form1(Objeto)      Text      CONTROL DE PILAS       Size       567,505
Label1      Text      INGRESE NÚMERO
Button1(Name)      btnEnpilar       Text      ENPILAR
Button2(Name)      btnUltimo       Text      ULTIMO VALOR
Button3(Name)      btnQuitar       Text      QUITAR ELEMENTO
Button4(Name)      btnListar       Text       LISTAR
TextBox1(Name)      txtN
ListBox1(Name)      lstR
ListBox2(Name)      lstPila

3. Ahora veremos el código fuente del formulario.

Explicación

En el punto uno se declara el objeto miPila de la clase Stack (Pila)

En el punto dos se implementa la función getNumero que permite capturar el valor ingresado por el usuario en la caja de texto txtN. La función CInt permite convertir el valor de tipo texto a numérico entero.

En el punto tres se valida el valor ingresado desde la caja de texto txtN.

Si todo es correcto se verificar que el número ingresado no se encuentre en la pila ya que la aplicación exige valores no repetidos en caso sea así enviar un mensaje del número ya fue registrado…!!!, además de limpiar la caja y devolver el foco allí mismo Para un nuevo ingreso.

Finalmente, si ya se validé y comprobó que el valor es único entonces se Procede a enviar el valor a la pila por medio de la función Push, también se le agrega a la lista de elementos IstR, se limpia la caja y se devuelve el foco a la caja de texto para un nuevo ingreso de número.

En el punto cuatro se envían los valores a la lista IstPila pero antes se comprueba que la pila tenga valores que mostrar para esto se condiciona la cantidad de elementos de la pila con la propiedad Count, en caso sea cero se envía un mensaje al usuario de Pila vacía.

Caso contrario la pila si contenga valores entonces se recorre todos esos elementos por medio de un For Each y se envía los valores a la lista IstPila.

En el punto cinco se limpian los elementos mostrados en la pila para mostrar el elemento que puede ser accesible el usuario por la estructura de una pila LIFO, es decir, solo se podrá mostrar el último elemento, para recuperarlo tiene que usar la propiedad Peek que tiene por misión devolver dicho elemento pero sin eliminarlo.

En el punto seis se elimina el elemento de la pila accesible por el método Pop() que tiene por misión eliminar el elemento que entro al final de la pila, tenga en cuenta que la propiedad Peek solo lo devuelve, pero no lo elimina.