sábado, 3 de marzo de 2012

Instrucción Select... Case

La instrucción Select... Case es similar al Switch de Java, pero bastante más potente, ya que permite indicar intervalos, expresiones y varios valores en el mismo "Case".

EJEMPLO DE SELECT... CASE

Module Module1

    Sub Main()
        Menu()
        Console.ReadKey()
    End Sub

    Sub Menu()
        Dim opcion As Integer = 1
        While (opcion <> 0)
            Console.Clear()
            Console.WriteLine("Menú")
            Console.WriteLine("====")
            Console.WriteLine("1. Si introduce uno se ejecuta esta opción")
            Console.WriteLine("2-5. Si introduce un número entre 2 y 5 se ejecuta esta")
            Console.WriteLine("6, 9, 10. Si introduce 6, 9 o 10 se ejecuta esta")
            Console.WriteLine("Mayor de 15. Si es mayor de 15 se ejecuta esta")
            Console.WriteLine("0. Salir")
            Console.WriteLine()
            Try
                opcion = CInt(Console.ReadLine())
            Catch ex As InvalidCastException
                ' Sólo se ve desde el Visual Studio
                Debug.WriteLine("Error: " & ex.Message)
                opcion = 7
            Catch e As OverflowException
                ' lo que queramos hacer
            End Try

            Select Case opcion
                Case 1
                    Console.WriteLine("Ha seleccionado la opción 1")
                Case 2 To 5 ' Intervalo
                    Console.WriteLine("Ha seleccionado una opción entre 2 y 5")
                Case 6, 9, 10 ' Varios valores
                    Console.WriteLine("Ha seleccionado 6, 9 o 10")
                Case Is > 15 ' Expresión
                    Console.WriteLine("Ha seleccionado una opción mayor que 15")
                Case 0
                    Console.WriteLine("Ha elegido salir, ¡adiós!")
                Case Else ' Si no entra por las anteriores...
                    Console.WriteLine("Ha elegido una opción incorrecta")
            End Select

            ' vbCrLf -> constante que representa retorno de carro más salto de línea
            Console.WriteLine(vbCrLf & "Pulse ENTER para continuar")
            Console.ReadKey()

        End While
    End Sub

End Module

EJERCICIO
Realizar una aplicación que tenga un menú que permita elegir entre calcular el área de un círculo o un rectángulo. Dependiendo de lo que se elija, se pedirán los datos correspondientes y se mostrará el resultado.

Module Module1

    Sub Main()
        Const PI As Double = 3.14159265
        Dim opcion As Integer
        Dim ancho, alto As Double
        Dim radio As Double

        Do
            Menu()
            Console.Write("Elija una opción: ")
            opcion = Console.ReadLine
            Console.WriteLine()

            Select Case opcion
                Case 1
                    Console.Write("Ancho: ")
                    ancho = Console.ReadLine
                    Console.Write("Alto: ")
                    alto = Console.ReadLine
                    Console.WriteLine("Área del rectángulo: " & (ancho * alto) & " uds cuadradas")
                Case 2
                    Console.Write("Radio: ")
                    radio = Console.ReadLine
                    Console.WriteLine("Área del círculo: " & (PI * (radio ^ 2)) & " uds cuadradas")
                Case 3
                    Console.WriteLine("Ha elegido salir del programa.")
                Case Else
                    Console.WriteLine("Opción incorrecta.")
            End Select

            Console.WriteLine(vbCrLf & "Pulse ENTER para continuar")
            Console.ReadKey()

        Loop While opcion <> 3

    End Sub

    'Procedimiento que muestar el menú
    Sub Menu()
        Console.Clear()
        Console.WriteLine("CALCULAR ÁREA")
        Console.WriteLine()
        Console.WriteLine("1. Rectángulo")
        Console.WriteLine("2. Círculo")
        Console.WriteLine("3. Salir")
    End Sub

End Module

2 comentarios: