Resumen: Entrega nº35 del curso Aprender a programar en Visual Basic desde cero.
Codificación aprenderaprogramar.com: CU00336A

 

 

MODIFICACIÓN DIRECTA DEL FLUJO DE PROGRAMAS CON VISUAL BASIC.

Las recomendaciones para el uso de instrucciones de control directo del flujo de programas se resumen en una palabra: prudencia. Si no tienes cuidado con el uso de instrucciones que modifican el curso natural de los programas,  puedes ocasionar el mal funcionamiento de los mismos o comprobar que has generado un código de poca calidad y difícil seguimiento.

Visual Basic
 

 

INSTRUCCIÓN FINALIZAR. END, UNLOAD, CLOSE.ME, EXIT SUB.

Con Visual Basic disponemos de distintas variantes relacionadas con Finalizar.

a) End: instrucción que da lugar a la detención instantánea de un programa. No se recomienda cerrar un programa directamente a través de End, ya que hay instrucciones previstas para un cierre normal. Podríamos considerar que End supone "apagar" el programa como si hubiera un corte de energía eléctrica, mientras que la descarga del programa equivale al cierre de un sistema operativo a través de la opción "Cerrar". Para la finalización normal de un programa de Visual Basic debemos descargar todos los formularios con que estemos trabajando (lo cual supone que se produzcan los eventos QueryUnload y Unload) antes de disponer la instrucción End.

b) Unload ó Close (según versiones): instrucción que da lugar a la descarga de la memoria de formularios o controles, lo cual no necesariamente significa que el programa acabe, ya que el código asociado al módulo del formulario permanece en memoria y pueden mostrarse otro tipo de ventanas o incluso volver a cargarse el formulario si así está establecido en el código.

c) Exit Sub: da lugar a que se salga del procedimiento que se está ejecutando, continuando el flujo del programa como si se hubiera llegado al final del procedimiento.

 

Veamos ejemplos de código:

a)    Código asociado a un botón que da lugar al cierre del programa.

Código (versiones VB menos recientes) Código (versiones VB más recientes)
'Curso VB aprenderaprogramar.com
Private Sub ButtonCerrar_Click()         
MsgBox("Se va a cerrar el formulario y el programa")
Unload Form1                                    
End
End Sub                                                               
REM Curso VB aprenderaprogramar.com
Public Class Form1
Private Sub ButtonCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     MsgBox("Se va a cerrar el formulario y el programa")
     Me.Close()
     End
    End Sub
End Class

 

 

b) Código que da lugar a la salida de un procedimiento

Código (versiones VB menos recientes) Código (versiones VB más recientes)
‘Curso VB aprenderaprogramar.com‘
Private Sub ButtonCerrar_Click()        
Dim condición As Integer
condición = MsgBox("¿Desea continuar?", vbYesNo)                
If condición = vbNo Then Exit Sub
MsgBox("Ha elegido continuar")
End Sub
REM Curso VB aprenderaprogramar.com
Public Class Form1
Private Sub ButtonCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim condición As Integer
        condición = MsgBox("¿Desea continuar?", vbYesNo)
        If condición = vbNo Then Exit Sub
        MsgBox("Ha elegido continuar")
    End Sub
End Class

 

 

En el primer ejemplo, se muestra un mensaje y se cierra el programa. En el segundo código, si el usuario elige que desea continuar se muestra el mensaje "Ha elegido continuar" y prosigue la ejecución del módulo. Si elige que no desea continuar se ejecuta Exit Sub. Se produce el salto a la última línea del procedimiento (End Sub) y el flujo del programa continua por donde proceda.

 

 

EJERCICIO

Crear un programa en Visual Basic a partir del siguiente pseudocódigo, que constituye un ejemplo de aplicación de la Instrucción Finalizar.

1. Inicio [Finaliza si hay problemas. Curso Visual Basic aprenderaprogramar.com]

2. Mientras Numero < 100 ó Numero > 200 Hacer

Mostrar “Por favor, introduzca un número comprendido entre 100 y 200”

Pedir Numero

i = i + 1

Si i > 19 Entonces

Mostrar “Hay un problema para continuar y el programa se va a cerrar. Motivo: 20 procesos nulos. Consulte el manual del programa”

Finalizar

FinSi

Repetir

3. Mostrar “Gracias por introducir una entrada válida”

4. [Aquí continuaría el programa con diferentes procesos]

5. Fin

 

 

 

SOLUCIÓN

Código (versiones VB menos recientes) Código (versiones VB más recientes)
'[Curso VB aprenderaprogramar.com]
Option Explicit
Dim i As Integer
Dim Número As Single
Private Sub Form_Load()
Show
Form1.Caption = "Ejemplo Finalizar"
Do While Número < 100 Or Número > 200
    Número = InputBox("Introduzca un número comprendido entre 100 y 200")
    i = i + 1
    If i > 19 Then
        MsgBox("Hay un problema para continuar y el programa se va a cerrar. Motivo: 20 procesos nulos. Consulte el manual del programa")
        Unload Form1
        End
    End If
Loop
Label1 = "Gracias por introducir una entrada válida"
'[Aquí continuaría el programa con diferentes procesos]
End Sub
REM Curso VB 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 Número As Single
        Me.Text = "Ejemplo Finalizar"
        Do While Número < 100 Or Número > 200
            Número = InputBox("Introduzca un número comprendido entre 100 y 200")
            i = i + 1
            If i > 19 Then
                MsgBox("Hay un problema para continuar y el programa se va a cerrar. Motivo: 20 procesos nulos. Consulte el manual del programa")
                Me.Close()
                End
            End If
        Loop
        Label1.Text = "Gracias por introducir una entrada válida"
        '[Aquí continuaría el programa con diferentes procesos]
    End Sub
End Class

 

 

 

 

 

 

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: