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

 

 

INSTRUCCIÓN SEGÚN (CASO) HACER (SELECT CASE)

La sintaxis a emplear con Visual Basic es la que indicamos a continuación. Como se podrá comprobar, mediante esta instrucción establecemos una serie de casos que se podrían cumplir para el valor de una expresión o variable, y en función del valor de la variable se ejecutarán una serie de instrucciones asociadas u otra.

Visual Basic
 

Select Case [expresión]

Case [valor expresión 1]
    Instrucción 1
    Instrucción 2
Case [valor expresión 2]
    Instrucción 3
    Instrucción 4
.
.
.
Case [valor expresión n]
    Instrucción k
Case Else
    Instrucción m

End Select

 

 

Select Case en Visual Basic equivale a la instrucción switch de otros lenguajes.

La expresión a evaluar puede ser un valor numérico o una cadena de texto. Sólo se puede evaluar una expresión y no múltiples expresiones. La evaluación de expresiones puede ser:

a)   De coincidencia: por ejemplo, Case 12 indicaría que si la expresión evaluada vale 12 se ejecutarán las instrucciones anexas.

b)   De intervalo: usando la palabra clave To. Por ejemplo, Case 12 To 14 indicaría que si la expresión evaluada tiene un valor comprendido entre 12 y 14 (incluidos los extremos de los intervalos), se ejecutarán las instrucciones anexas.

c)   De comparación: usando la palabra clave Is. Por ejemplo, Case Is <= 14 indicaría que si la expresión evaluada tiene un valor menor o igual a 14 se ejecutarán las instrucciones anexas.

 

Cuando varios casos son válidos, sólo se ejecutan las instrucciones asociadas al primer caso verificado, siguiendo el flujo del programa por la siguiente instrucción después de End Select. Esto debemos tenerlo muy en cuenta, ya que si pretendemos que cuando se cumplan dos condiciones se ejecuten sendos bloques de instrucciones, convendrá hacerlo a través de la instrucción If en vez de a través de Select Case.

Las instrucciones Select Case se pueden anidar. Cada instrucción Select Case debe tener su correspondiente terminación End Select.

La instrucción Select Case presenta similitudes marcadas con la instrucción If - Then. Por ello, en general podremos conseguir resultados similares con ambas instrucciones y elegir usar una u otra dependerá de nuestro gusto y de cuál se adapte mejor a nuestros intereses, que en general serán ahorrar código y conseguir claridad para cumplir el objetivo. Otras veces será interesante anidar ambas instrucciones.

Prueba el siguiente código:

 

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

Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim A As Integer

Private Sub Form_Load()
A = 12
Select Case A
    Case 12
    MsgBox ("A vale 12")
    Case Is < 14
    MsgBox ("A es menor que 14")
    Case 160 To 200
    MsgBox ("A está comprendida entre 160 y 200")
    Case Else
        MsgBox ("No se ha verificado ninguna de las condiciones previstas")
End Select
End Sub
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On

Public Class Form1
    Dim A As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    A = 12
    Select Case A
        Case 12
        MsgBox("A vale 12")
        Case Is < 14
        MsgBox("A es menor que 14")
        Case 160 To 200
        MsgBox("A está comprendida entre 160 y 200")
        Case Else
        MsgBox("No se ha verificado ninguna de las condiciones previstas")
    End Select
    End Sub
End Class

 

 

El resultado es que se muestra en pantalla "A vale 12". Sin embargo, a pesar de que la hipótesis  A < 14 se cumple, no llega a evaluarse y por tanto las instrucciones asociadas a este caso no se ejecutan.

 

 

EJERCICIO

Transformar en código de Visual Basic el siguiente enunciado: crear un programa que pida al usuario un número de día y un número de mes, evalúe si la entrada es correcta y en caso de que así sea calcule el día del año que es, considerando un año no bisiesto.

 

 

SOLUCIÓN

Crearemos tres labels a los que denominaremos Label1, Label2 y LabelResultado. Label1 servirá para mostrar un mensaje solicitando que se introduzca el número de día, Label2 servirá para mostrar un mensaje solicitando que se introduzca el número de mes y LabelResultado servirá para mostrar el resultado.

Crearemos dos TextBoxes denominados Text1 y Text2. El primero de ellos servirá para que el usuario introduzca el dato de número de día y el segundo el dato de número de mes.

Finalmente tendremos un botón denominado ButtonCalcular que servirá para mostrar los resultados una vez el usuario haya introducido el dato de número de día y número de mes.

 

Código (versionesVB menos recientes) Código (versiones VB más recientes)
Rem Curso Visual Basic aprenderaprogramar.com
Rem [Cálculo del día del año]
Option Explicit
Dim Ndía%, Nmes%, DDA As Integer

Private Sub Form_Load()
Form1.Caption = "Cálculo día del año"
Label1.Caption = "Introduzca aquí el número del día"
Label2.Caption = "Introduzca aquí el número del mes"
ButtonCalcular.Caption = "Determinar día del año"
End Sub

Private Sub ButtonCalcular_Click()
Ndía = Val(Text1)
Nmes = Val(Text2)
LabelResultado.FontSize = 10
LabelResultado.FontBold = True
If Ndía >= 1 And Ndía <= 31 And Nmes >= 1 And Nmes <= 12 Then
    Select Case Nmes
        Case 1
            DDA = Ndía '[DDA es día del año]
        Case 2
            DDA = Ndía + 31
        Case 3
            DDA = Ndía + 59
        Case 4
            DDA = Ndía + 90
        Case 5
            DDA = Ndía + 120
        Case 6
            DDA = Ndía + 151
        Case 7
            DDA = Ndía + 181
        Case 8
            DDA = Ndía + 212
        Case 9
            DDA = Ndía + 243
        Case 10
            DDA = Ndía + 273
        Case 11
            DDA = Ndía + 304
        Case 12
            DDA = Ndía + 334
    End Select
    LabelResultado = "El " & Ndía & " del " & Nmes & " es el día " & DDA & " del año"
Else
    LabelResultado = "Datos proporcionados no válidos"
End If
End Sub
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
    Dim Ndía, Nmes, DDA As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "Cálculo día del año"
        Label1.Text = "Introduzca aquí el número del día"
        Label2.Text = "Introduzca aquí el número del mes"
        ButtonCalcular.Text = "Determinar día del año"
    End Sub

    Private Sub ButtonCalcular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCalcular.Click
        Ndía = Val(Text1.Text)
        Nmes = Val(Text2.Text)
        LabelResultado.Font = New Font("Arial", 10, FontStyle.Bold)
        If Ndía >= 1 And Ndía <= 31 And Nmes >= 1 And Nmes <= 12 Then
            Select Case Nmes
                Case 1
                    DDA = Ndía '[DDA es día del año]
                Case 2
                    DDA = Ndía + 31
                Case 3
                    DDA = Ndía + 59
                Case 4
                    DDA = Ndía + 90
                Case 5
                    DDA = Ndía + 120
                Case 6
                    DDA = Ndía + 151
                Case 7
                    DDA = Ndía + 181
                Case 8
                    DDA = Ndía + 212
                Case 9
                    DDA = Ndía + 243
                Case 10
                    DDA = Ndía + 273
                Case 11
                    DDA = Ndía + 304
                Case 12
                    DDA = Ndía + 334
            End Select
            LabelResultado.Text = "El " & Ndía & " del " & Nmes & " es el día " & DDA & " del año"
        Else
            LabelResultado.Text = "Datos proporcionados no válidos"
        End If
    End Sub
End Class

 

 

Aspecto gráfico:

calcular dia del año 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: