Codificación aprenderaprogramar.com: CU00332A
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. En algunos casos, propondremos la solución a un ejercicio con distintas estructuras de programación.
EJERCICIO EJEMPLO USO DE FORMS, LABELS, INPUTBOX, MSGBOX
Desarrollar el código que dé respuesta al siguiente problema:
Una central distribuye cal hacia diferentes almacenes sucursales. Disponen de un muelle de carga a donde van llegando sacas de cal de entre 3000 y 9000 Kgs, con pesos variables en función de las circunstancias de la producción. La empresa dispone de una flota de camiones con capacidades de carga de entre 18000 y 28000 Kgs.
Se pretende establecer un protocolo consistente en cargar 20 camiones diarios. Cada camión se quiere cargar como máximo a su límite de capacidad debiendo partir si con la siguiente saca en la línea de producción se fuera a exceder su capacidad.
La empresa quiere desarrollar un programa que le pida al operario encargado de carga la capacidad del camión y el peso de las sacas, indicándole si debe cargar la saca o despachar el camión para comenzar a cargar otro, y que emita un aviso cuando se complete la carga de 20 camiones.
SOLUCIÓN
Código para versiones menos recientes de Visual Basic:
Rem Curso Visual Basic aprenderaprogramar.com Option Explicit Dim i%, j% Dim Capacidad%, Pesosaca%, Cargado As Integer Private Sub Form_Load() Show Form1.Caption = "Distribución de cal" For i = 1 To 20 Capacidad = InputBox("Introduzca la capacidad del camión nº " & i & " en kgs", "Dato capacidad") Do While(Cargado + Pesosaca) <= Capacidad If Pesosaca > 0 Then MsgBox("Cargue la saca nº " & j) Cargado = Cargado + Pesosaca End If j = j + 1 Pesosaca = InputBox("Introduzca el peso de la saca nº " & j & " en kgs", "Dato saca") Loop If i < 20 Then MsgBox("No cargue todavía. Despache el camión nº " & i & " y ponga" & _ " a cargar el camión nº " & i + 1) Cargado = 0 Next i Labelfinal.Alignment = 2 Labelfinal.FontBold = True Labelfinal = "No cargue esta saca. Despache el camión " & i - 1 & vbCrLf & "FINALIZADA" & _ " LA CARGA DEL DÍA" End Sub |
Antes de ejecutar el código habremos incorporado al formulario en la vista de diseño un Label al que hemos denominado Labelfinal. El resultado gráfico se muestra más abajo.
Código para versiones más recientes de Visual Basic:
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 Capacidad, Pesosaca, Cargado As Integer Me.Text = "Distribución de cal" For i = 1 To 20 Capacidad = InputBox("Introduzca la capacidad del camión nº " & i & " en kgs", "Dato capacidad") Do While (Cargado + Pesosaca) <= Capacidad If Pesosaca > 0 Then MsgBox("Cargue la saca nº " & j) Cargado = Cargado + Pesosaca End If j = j + 1 Pesosaca = InputBox("Introduzca el peso de la saca nº " & j & " en kgs", "Dato saca") Loop If i < 20 Then MsgBox("No cargue todavía. Despache el camión nº " & i & " y ponga" & _ " a cargar el camión nº " & i + 1) Cargado = 0 Next i Labelfinal.Font = New Font("Arial", 10, FontStyle.Bold) Labelfinal.TextAlign = ContentAlignment.MiddleCenter Labelfinal.Text = "No cargue esta saca. Despache el camión " & i - 1 &vbCrLf& "FINALIZADA" & _ " LA CARGA DEL DÍA" End Sub End Class |
Comentarios: el programa podría mejorarse creando restricciones para que no se puedan introducir pesos de sacas o capacidad de carga de camiones fuera de los rangos permitidos.
El aspecto gráfico es el siguiente:
EJERCICIO EJEMPLO USO DO WHILE … LOOP, LABELS, INPUTBOX
Desarrollar el código que resuelva el siguiente problema: una ONG tiene puntos de reparto de vacunas que se pretende funcionen de la siguiente manera. Cada día, empezar con 1000 vacunas disponibles y a través de un programa que controla las entregas avisar si el inventario baja de 200 unidades. El programa debe partir de que existen 1000 vacunas e ir pidiendo al usuario las cantidades de vacunas entregadas hasta avisar cuando el inventario baje de 200 unidades.
SOLUCIÓN
Código para versiones menos recientes de Visual Basic:
Rem Curso Visual Basic aprenderaprogramar.com [Control de vacunas] Option Explicit Dim Existencias%, Entregadas% Private Sub Form_Load() Show Form1.Caption = "Control de vacunas" Existencias = 1000 Do While Existencias >= 200 Entregadas = InputBox("Introduzca el número de uds entregadas", "Dato entrega") Existencias = Existencias - Entregadas Loop Labelfinal.Alignment = 2 Labelfinal.FontBold = True Labelfinal = vbCrLf & "El inventario ha bajado de 200 uds" & vbCrLf & "Debe comunicarlo" End Sub |
Antes de ejecutar el código habremos incorporado al formulario en la vista de diseño un Label al que hemos denominado Labelfinal. El resultado gráfico se muestra más abajo.
Código para versiones más recientes de Visual Basic:
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 Existencias, Entregadas As Integer Me.Text = "Control de vacunas" Existencias = 1000 Do While Existencias >= 200 Entregadas = InputBox("Introduzca el número de uds entregadas", "Dato entrega") Existencias = Existencias - Entregadas Loop Labelfinal.Font = New Font("Arial", 10, FontStyle.Bold) Labelfinal.TextAlign = ContentAlignment.MiddleCenter Labelfinal.Text = vbCrLf & "El inventario ha bajado de 200 uds" & vbCrLf & "Debe comunicarlo" End Sub End Class |
El resultado gráfico: