Resumen: Entrega nº45 del curso Aprender a programar en Visual Basic desde cero.

Codificación aprenderaprogramar.com: CU00346A

EJERCICIO RESUELTO

Generar el código en Visual Basic correspondiente al siguiente pseudocódigo, relativo a un algoritmo para el manejo de una lista de datos sobre la que se desea tener opción a añadir un dato, borrar un dato, conocer el total de datos, visualizar la lista de datos o finalizar.

Visual Basic

Pseudocódigo:

PROGRAMA DATOS01 [Curso Visual Basic aprenderaprogramar.com]

Variables
Enteras: E
Reales: Dato()

1. Inicio
2. Mientras E <> 5 Hacer
2.1 Si E = 1 Entonces
Llamar Añadir
FinSi
2.2 Si E = 2 Entonces
Llamar Borrar
FinSi
2.3 Si E = 3 Entonces
Mostrar “El número de datos actualmente en la lista es de”, Limitesuperior(Dato)
FinSi
2.4 Si E = 4 Entonces
Llamar Listar
FinSi
2.5 Mostrar “Elija una opción. 1. Añadir dato.
2. Borrar dato.
3. Conocer el total de datos.
4. Mostrar Lista.
5. Salir.”
2.6 Pedir E
Repetir
3. Fin

Módulo Añadir
1. Redimensionar Dato(Limitesuperior(Dato) + 1)
2. Mostrar “Introduzca valor a añadir”
3. Pedir Dato(Limitesuperior(Dato))
FinMódulo

Módulo Borrar
Variables
Enteras: i, Numborrar
1. Si Limitesuperior(Dato) <> 0 Entonces
1.1 Numborrar = 0
1.2 Mientras Numborrar < 1 ó Numborrar > Limitesuperior(Dato) Hacer
Mostrar “Introduzca el nº de dato a borrar”
Pedir Numborrar
Repetir
1.3 Si Numborrar < Limitesuperior(Dato) Entonces
Desde i = Numborrar hasta Limitesuperior(Dato) – 1
Dato(i) = Dato(i + 1)
Siguiente
FinSi
1.4 Redimensionar Dato(Limitesuperior(Dato) – 1)
1.5 Mostrar “Dato borrado”
FinSi
2. Si Limitesuperior(Dato) = 0 Entonces
Mostrar “La lista está vacía”
FinSi
FinMódulo

Módulo Listar
Variables
Enteras: i
1. Desde i = 1 hasta Limitesuperior(Dato) Hacer
Mostrar Dato(i)
Siguiente
FinMódulo

SOLUCIÓN

Código (versiones VB menos recientes) Código (versiones VB más recientes)

'Curso Visual Basic aprenderaprogramar.com
'[PROGRAMA DATOS01]

Option Explicit
Dim Dato() As Single

Private Sub Form_Load()
Form1.Caption = "Datos01"
LabelResultado.Alignment = 2
LabelResultado.FontBold = True
LabelLista.Alignment = 2
LabelLista.FontBold = True
ReDim Dato(0)
Command1.Caption = "Añadir dato"
Command2.Caption = "Borrar dato"
Command3.Caption = "Conocer total de datos"
Command4.Caption = "Mostrar lista"
Command5.Caption = "Salir"
End Sub

Private Sub Command1_Click()
Call Añadir
End Sub

Private Sub Command2_Click()
Call Borrar
End Sub

Private Sub Command3_Click()
LabelResultado = "El número de datos actualmente en la lista es de " & UBound(Dato)
End Sub

Private Sub Command4_Click()
Call Listar
End Sub

Private Sub Command5_Click()
Unload Form1
End
End Sub

Private Sub Añadir()
LabelResultado = " "
LabelLista = " "
ReDim Preserve Dato(UBound(Dato) + 1)
Dato(UBound(Dato)) = Val(InputBox("Introduzca valor a añadir", "Dato"))
End Sub

Private Sub Borrar()
Dim i%, Numborrar As Integer
LabelLista = " "
If UBound(Dato) <> 0 Then
Numborrar = 0
Do While Numborrar < 1 Or Numborrar > UBound(Dato)
Numborrar = InputBox("Introduzca el número de dato a borrar", "Borrar")
Loop
If Numborrar < UBound(Dato) Then
For i = Numborrar To UBound(Dato) - 1
Dato(i) = Dato(i + 1)
Next i
End If
ReDim Preserve Dato(UBound(Dato) - 1)
LabelResultado = "Dato borrado"
End If
If UBound(Dato) = 0 Then
LabelResultado = "La lista está vacía"
End If
End Sub

Private Sub Listar()
Dim i As Integer
LabelLista = "Lista" & vbCrLf
For i = 1 To UBound(Dato)
LabelLista = LabelLista & vbCrLf & Dato(i)
Next i
End Sub
REM Curso Visual Basic aprenderaprogramar.com
'[PROGRAMA DATOS01]
Option Explicit On

Public Class Form1
Dim Dato() As Single

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "Datos01"
LabelResultado.Font = New Font("Arial", 12, FontStyle.Bold)
LabelResultado.TextAlign = ContentAlignment.MiddleCenter
LabelLista.Font = New Font("Arial", 12, FontStyle.Bold)
LabelLista.TextAlign = ContentAlignment.MiddleCenter
ReDim Dato(0)
Button1.Text = "Añadir dato"
Button2.Text = "Borrar dato"
Button3.Text = "Conocer total de datos"
Button4.Text = "Mostrar lista"
Button5.Text = "Salir"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call Añadir()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Call Borrar()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
LabelResultado.Text = "El número de datos actualmente en la lista es de " & UBound(Dato)
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Call Listar()
End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Me.Close()
End
End Sub

Private Sub Añadir()
LabelResultado.Text = " "
LabelLista.Text = " "
ReDim Preserve Dato(UBound(Dato) + 1)
Dato(UBound(Dato)) = Val(InputBox("Introduzca valor a añadir", "Dato"))
End Sub

Private Sub Borrar()
Dim i, Numborrar As Integer
LabelLista.Text = " "
If UBound(Dato) <> 0 Then
Numborrar = 0
Do While Numborrar < 1 Or Numborrar > UBound(Dato)
Numborrar = InputBox("Introduzca el número de dato a borrar", "Borrar")
Loop
If Numborrar < UBound(Dato) Then
For i = Numborrar To UBound(Dato) - 1
Dato(i) = Dato(i + 1)
Next i
End If
ReDim Preserve Dato(UBound(Dato) - 1)
LabelResultado.Text = "Dato borrado"
End If
If UBound(Dato) = 0 Then
LabelResultado.Text = "La lista está vacía"
End If
End Sub

Private Sub Listar()
Dim i As Integer
LabelLista.Text = "Lista" & vbCrLf
For i = 1 To UBound(Dato)
LabelLista.Text = LabelLista.Text & vbCrLf & Dato(i)
Next i
End Sub
End Class

Aspecto gráfico del programa:

visual basic listas datos

Comentarios: Visual Basic no admite pedir el límite superior de una matriz cuyo número de dimensiones no ha sido definido. Por ello introducimos la línea ReDim Dato(0) cuando se carga el programa. De este modo, con el primer dato a añadir ya podemos dar la orden de que se amplíe el límite superior del vector Dato en una unidad, asignándose el primer valor introducido a Dato(1). ¿Qué ocurre con Dato(0)? Simplemente se trata de un elemento auxiliar de un array que facilita la programación, sin otra funcionalidad. Se trata de una decisión que adoptamos como programadores, aunque podríamos haber usado el elemento de índice cero si hubiéramos querido.

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Descargar archivo: