Resumen: Entrega nº53 del curso Aprender a programar en Visual Basic desde cero.
Codificación aprenderaprogramar.com: CU00354A
EJERCICIO
Se ha desarrollado un programa (programa R02) cuyo pseudocódigo se indica a continuación. Este programa consta de dos subprogramas llamados GeneraDato y Raíz. A través de GeneraDato se solicita un número entre 1 y 20 al usuario, mientras que Raíz devuelve la raíz cuadrada de ese número entero.
Se desea crear un programa R03 con Visual Basic que realice lo previsto para el programa R02 y que además introduzca un procedimiento para gestión de errores basado en On Error que impida la parada de este programa en caso de que el usuario no introduzca el tipo de dato correcto (por ejemplo que introduzca una letra en lugar de un número). Si el usuario introduce un dato incorrecto, el programa deberá recuperarse, mostrar un mensaje informativo indicando que se ha producido un error, mostrar que la raíz de cero es cero y terminar.
Nota: usaremos inputBox para solicitar datos en Visual Basic y msgBox para mostrar mensajes de aviso o de resultados.
PROGRAMA R02 - Curso Visual Basic aprenderaprogramar.com Variables Enteras: Dato 1. Inicio 2. Llamar Generadato 3. Llamar Raiz(Dato) 4. Fin
Módulo Generadato 1. Mientras Dato < 1 ó Dato > 20 Mostrar “Introduzca un número entero entre 1 y 20” Pedir Dato [Aquí puede originarse el error] Repetir FinMódulo
Módulo Raiz(Numero: Enteros) Variables Reales: Resultado 1. Resultado = SQR(Numero) 2. Mostrar “La raíz de”, Numero, “es”, Resultado FinMódulo |
SOLUCIÓN
Código (versiones VB menos recientes) | Código (versiones VB más recientes) |
‘Curso VB aprenderaprogramar.com ‘[Programa R03] Option Explicit Dim Dato As Integer Private Sub Form_Load() On Error GoTo ErrorControl Call Generadato Call Raíz(Dato) ErrorControl: If Err.Number <> 0 Then Call GestiónError Resume Next End If End Sub Private Sub Generadato() Do While Dato < 1 Or Dato > 20 Dato = InputBox("Introduzca un entero entre 1 y 20") Loop End Sub Private Sub Raíz(Número As Integer) Dim Resultado As Single Resultado = Sqr(Número) MsgBox("La raíz de " & Número & " es " & Resultado) End Sub Private Sub GestiónError() MsgBox("Se ha producido un error. Es posible que los datos que usted proporciona no se ajusten a lo solicitado. Compruébelo por favor") Dato = 0 End Sub |
REM Curso Visual Basic aprenderaprogramar.com Option Explicit On Public Class Form1 Dim Dato As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load On Error GoTo ErrorControl Call Generadato() Call Raíz(Dato) ErrorControl: If Err.Number <> 0 Then Call GestiónError() Resume Next End If End Sub Private Sub Generadato() Do While Dato < 1 Or Dato > 20 Dato = InputBox("Introduzca un entero entre 1 y 20") Loop End Sub Private Sub Raíz(ByVal Número As Integer) Dim Resultado As Single Resultado = Math.Sqrt(Número) MsgBox("La raíz de " & Número & " es " & Resultado) End Sub Private Sub GestiónError() MsgBox("Se ha producido un error. Es posible que los datos que usted proporciona no se ajusten a lo solicitado. Compruébelo por favor") Dato = 0 End Sub End Class |