Resumen: Entrega nº33-1 del curso Aprender a programar en Visual Basic desde cero.
Codificación aprenderaprogramar.com: CU00334A-1

 

 

EJERCICIOS RESUELTOS VISUAL BASIC

El objetivo de estos ejercicios es aplicar conocimientos sobre "Herramientas básicas para la programación" a un lenguaje como es Visual Basic. Para su realización debemos tener conocimientos básicos sobre algoritmia, uso de bucles o estructuras iterativas y apertura y cierre de archivos.

 

Visual Basic
 

 

EJERCICIO RESUELTO Nº 1 EJEMPLO DE USO DE ARRAYS ESTÁTICOS, DO WHILE … LOOP, IF … THEN, LECTURA DE FICHEROS...

Generar el código que permita solucionar el siguiente problema:

Un fabricante de maquinaria envía un archivo a un almacén donde se encuentran los números de serie (5 dígitos) de una partida de maquinaria enviada, organizados en Dato(1), Dato(2), ..., Dato(n). Informa de lo siguiente: el archivo empieza con palas cargadoras siendo la correspondiente al número de serie 78345 la última, sigue con retroexcavadoras siendo el número de serie 33287 el último, y termina con dumpers siendo el número de serie 63287 el último.

Se quiere desarrollar un programa que muestre el tipo de máquina y todos los números de serie correspondientes.

 

Nota: considerar que la cantidad de datos es igual o inferior a 50, y que se encuentran en el fichero maquinaria.dat, que deberá haber sido creado previamente. Probar un caso supuesto con estos datos:

Dato Nº de inventario
1 11252
2 22541
3 78345
4 47854
5 33287
6 25478
7 63287

 

 

SOLUCIÓN

Cuando no conocemos a priori el número de datos de un array, como es la situación de que tenemos una lista de números de serie delimitados por señaleros (centinelas), sin saber un número exacto, lo más habitual será declarar arrays dinámicos y redimensionarlos a medida que vamos extrayendo paquetes de datos. Esto lo veremos más adelante. En este caso usaremos otra opción: crear un array de rango 50 en el cual usaremos una cantidad de elementos del array igual o inferior al rango. Puede ocurrir que la mayor parte de los elementos del array queden sin ser ocupados. Consideremos un fichero que contiene los siete datos indicados en el enunciado, creado previamente.

Necesitaremos un label para mostrar los resultados, al que denominaremos Labelfinal. Consideraremos que el código se ejecuta nada más abrir el programa, sin necesidad de pulsar un botón. También debemos conocer la ruta en que se ubica el archivo de datos y escribirla correctamente.

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

'Curso Visual Basic aprenderaprogramar.com
'[Maquinaria]

Option Explicit
Dim Canal As Integer
Dim i As Integer
Dim Dato(50) As Single

Private Sub Form_Load()
Show
Form1.Caption = "Maquinaria"
Labelfinal.Alignment = 2
Labelfinal.FontBold = True
i = 1
Canal = FreeFile
Open "C:\maquinaria.dat" For Input As Canal
Input #Canal, Dato(i)
Labelfinal = "Números de serie de palas cargadoras" & vbCrLf & vbCrLf
Do While Dato(i) <> 63287
    Labelfinal = Labelfinal & Dato(i) & vbCrLf
    If Dato(i) = 78345 Then
        Labelfinal = Labelfinal & vbCrLf & "Números de serie de retroexcavadoras" & vbCrLf & vbCrLf
    End If
    If Dato(i) = 33287 Then
        Labelfinal = Labelfinal & vbCrLf & "Números de serie de dumpers" & vbCrLf & vbCrLf
    End If
    i = i + 1
    Input #Canal, Dato(i)
Loop
Close
Labelfinal = Labelfinal & Dato(i) & vbCrLf
Labelfinal = Labelfinal & vbCrLf & "Finalizada la extracción el total de máquinas es" & i
End Sub
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        Dim Dato(50) As Single
        Me.Text = "Maquinaria"
Labelfinal.TextAlign = ContentAlignment.MiddleCenter
Labelfinal.Font = New Font("Arial", 10, FontStyle.Bold)
Labelfinal.Text = ""
i = 1
Dim myFileToRead As New System.IO.StreamReader("C:\Users\Toshiba\Desktop\maquinaria.dat", False)
Dato(i) = myFileToRead.ReadLine()
Labelfinal.Text = "Números de serie de palas cargadoras" & vbCrLf & vbCrLf
Do While Dato(i) <> 63287
Labelfinal.Text = Labelfinal.Text & Dato(i) & vbCrLf
If Dato(i) = 78345 Then
Labelfinal.Text = Labelfinal.Text & vbCrLf & "Números de serie de retroexcavadoras" & vbCrLf & vbCrLf
End If
If Dato(i) = 33287 Then
Labelfinal.Text = Labelfinal.Text & vbCrLf & "Números de serie de dumpers" & vbCrLf & vbCrLf
End If
i = i + 1
Dato(i) = myFileToRead.ReadLine()
Loop
Labelfinal.Text = Labelfinal.Text & Dato(i) & vbCrLf
Labelfinal.Text = Labelfinal.Text & vbCrLf & "Finalizada la extracción el total de máquinas es" & i
myFileToRead.Close()
End Sub
End Class

 


El resultado gráfico con los datos de prueba indicados será este:

ejemplo programa visual basic

 

 

 

EJERCICIO RESUELTO Nº 2 EJEMPLO DE USO DE FOR … NEXT, CONSTANTES vbYes Y vbNo, MSGBOX, Y DO WHILE … LOOP

Generar un programa que resuelva el siguiente problema: calcular el sumatorio de los 10 primeros números enteros positivos y según decida el usuario calcular o no la suma de los 20, 30, 40..., n – 10, n enteros positivos.

 

 

SOLUCIÓN

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

‘Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim i%, j As Integer
Dim Respuesta As Integer
Dim Suma As Integer
Private Sub Form_Load()
Show
j = 1
Respuesta = vbYes
Do While Respuesta = vbYes
    For i = j To j + 9
        Suma = Suma + i
    Next i
    j = j + 10
    Respuesta = MsgBox("La suma de los " & j - 1 & " primeros números da " & Suma & vbCrLf & _
    "¿Quiere continuar?", vbYesNo, "¿Continuar?")
Loop
End Sub
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i, j As Integer
        Dim Respuesta As Integer
        Dim Suma As Integer
        j = 1
        Respuesta = vbYes
Do While Respuesta = vbYes
For i = j To j + 9
         Suma = Suma + i
Next i
j = j + 10
Respuesta = MsgBox("La suma de los " & j - 1 & " primeros números da " & Suma & vbCrLf & _
"¿Quiere continuar?", vbYesNo, "¿Continuar?")
        Loop
    End Sub
End Class

 

En vez de usar una variable string para almacenar la respuesta, usamos los botones predeterminados de Visual Basic y las constantes vbYes (sí) y vbNo (no).

Gráficamente el resultado será similar a este:

msgbox visual basic

 

 

 

 

 

 

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: