Seguimos avanzando en la comprensión de esta fantástica herramienta. Continuaremos analizando en profundidad las sentencias destinadas a controlar el flujo del programa y proporcionando ejemplos que sirvan para su mejor entendimiento. En esta oportunidad, explicaremos cómo sacar provecho a Choose() y Select Case.

Programar con Visual BASIC (IV)
También puedes programar juegos en VB2005.

Como hemos visto, existe un grupo de instrucciones que tienen la capacidad de modificar el orden en que se ejecutan las demás sentencias de nuestro programa. En la entrega anterior aprendimos a utilizar “If…Then”, la instrucción de este tipo que se utiliza con mayor frecuencia. Hoy veremos las dos restantes: Choose() y Select Case.

La función Choose()

Choose() recibe una lista de parámetros, de los cuales el primero se utiliza como índice para determinar cuál de los demás se devuelve al ser evaluada. Esto puede parecer difícil de entender, pero en realidad, como demostraremos con los ejemplos, es muy simple. El formato de Choose() es el siguiente:

Variable1 = Choose(indice, valor1, valor2, valor3, …, valorN)

Al ejecutarse esta sentencia, “Variable1” tomará alguno de los valores de la serie “Valor1” a “ValorN”. El contenido de la variable “indice” será el que determine cuál resulta elegido: si “indice” es igual a 1, Choose() hará que “Variable1” tome el valor de “Valor1”; si “indice” es igual a 2 tomará el de “Valor2”; y así sucesivamente.

Pero un ejemplo nos ayudará aún más a comprender el funcionamiento de Choose(): supongamos que tenemos que elegir un color de una lista, donde el valor 1 está asignado al color rojo, el 2 al verde y el 3 al azul. Y queremos que la variable “Variable1” almacene la palabra “rojo”, “verde” o “azul” en función del valor de la variable “color”. Usando Choose(), se haría de la siguiente forma:

variable1 = Choose(color, "rojo", "verde", "azul")
Programar con Visual BASIC (IV)
El contenido de la variable "indice" determinará la respuesta.

Si hubiésemos querido hacer lo mismo utilizando “If…Then”, el programa sería mucho más extenso (y quizás más confuso):

Dim variable1 As String
Dim color As Integer
color = 2
If color = 1 Then
    variable1 = "rojo"
Else
    If color = 2 Then
        variable1 = "verde"
    Else
        'asumo que si color no es 1 ni 2, es 3.
        variable1 = "azul"
    End If
End If
Programar con Visual BASIC (IV)
Distinto programa, mismo resultado.
Programar con Visual BASIC (IV)
Un plugin permite programar para BlackBerry.

Esta instrucción es ideal para utilizar en aquellas situaciones en que debemos elegir una alternativa de entre muchas. Si bien Choose() hace más o menos esto mismo (“If…Then” también), por lo general “Select Case” resulta más fácil de leer. Particularmente, yo prefiero utilizar “Choose()” cuando quiero que el código (fuente) sea compacto, y “Select Case” cuando hay muchas alternativas, pero cada programador elige la forma que cree más conveniente.

Select Case

Su formato es el siguiente:

Select Case <expresión a evaluar>
    Case <lista de expresiones1>    'Instrucciones a ejecutar
    Case <lista de expresiones2>    'Instrucciones a ejecutar
    Case <lista de expresiones3>    'Instrucciones a ejecutar
    Case <lista de expresionesN>    'Instrucciones a ejecutar
    Case Else 'Instrucciones a ejecutar si no se cumple
               ' ninguna de las listas de expresiones anteriores
End Select

La <expresión a evaluar> puede ser algo tan simple como una variable, o una expresión más compleja que Visual Basic resolverá antes de elegir qué grupo de instrucciones ejecutar. Las <lista de expresiones> que siguen a cada sentencia “Case” se evalúan, y de ser verdaderas (solo debería serlo una de ellas) se ejecutan las sentencias que estén a continuación.

En caso de que ninguna de las <lista de expresiones> sea verdadera, se ejecutan las instrucciones que están a continuación del “Case Else”. Esta sección no es obligatoria. Si no existe “Case Else” y ninguna de las <lista de expresiones> es verdadera, el programa no ejecutará nada de lo que hay dentro de la estructura.

Veamos cómo podríamos resolver el ejemplo de los colores visto antes, usando Select Case:

Select Case color
    Case 1
        variable1 = "rojo"
    Case 2
        variable1 = "verde"
    Case 3
        variable1 = "azul"
End Select
Programar con Visual BASIC (IV)
Seleccionando colores con Select Case.

Si quisiésemos que, cuando “color” tiene un valor distinto de 1, 2 o 3, “Variable1” fuese igual a la palabra “Error”, podemos agregar la sección “Case Else”:

Select Case color
    Case 1
        variable1 = "rojo"
    Case 2
        variable1 = "verde"
    Case 3
        variable1 = "azul"
    Case Else
        variable1 = "Error"
End Select

Respecto de las expresiones que pueden utilizarse a continuación de las cláusulas “Case”, no tiene por qué ser necesariamente un número. Supongamos que queremos que si “color” vale 1, 2 o 3, “Variable1” sea igual a “Correcto”. No necesitamos usar tres “Case” diferentes, sino que podemos hacerlo en uno solo, separando los valores por comas. Quedaría así:

Select Case color
    Case 1,2,3
        variable1 = "Correcto"
    Case Else
        variable1 = "Error"
End Select
Programar con Visual BASIC (IV)
Siempre podemos agregar la sección “Case Else”.

En estos casos, donde queremos hacer lo mismo para un grupo de valores comprendidos en un rango determinado, también podemos utilizar la cláusula “To”. El siguiente código hace exactamente lo mismo que el visto recién:

Select Case color
    Case 1 To 3
        variable1 = "Correcto"
    Case Else
        variable1 = "Error"
End Select

Resulta evidente que si la lista de valores es larga, “To” simplifica mucho el código.

Programar con Visual BASIC (IV)
También podemos utilizar la cláusula “To”.

En todos los ejemplos vistos, hemos efectuado alguna acción cuando el valor de <expresión a evaluar> es igual a un valor determinado. Pero puede darse el caso de que necesitemos hacer algo cuando la <expresión a evaluar> sea mayor, menor o diferente a un valor determinado. Para ello, debemos utilizar el operador “Is”. Literalmente, el significado, en español, de este operador es “Es”. Su uso brinda una gran flexibilidad a la <expresión a evaluar>. Veamos un ejemplo:

Select Case numero
    Case Is < 11
        variable1 = "Primera decena"
    Case Else
        variable1 = "mayor de 10"
End Select

El código anterior guardará en “Variable1” el texto “Primera decena” solo cuando el valor de “numero” sea menor a 11 (es decir, esté comprendido entre 0 y 10).

Programar con Visual BASIC (IV)
El significado, en español, de este operador es “Es”.

Para terminar con “Select Case”, vamos a resolver un problema utilizando todo lo visto hasta aquí.

Supongamos por un momento que en una variable tenemos la edad de una persona, y que debemos, en función de su valor, determinar en qué tipo de establecimiento educativo se encuentra cursando sus estudios (por supuesto, los valores y tipos de establecimientos son completamente ficticios). Mira el código fuente siguiente e intenta comprender qué hace cada línea:

Dim variable1 As String
Dim edad As Integer
edad = 20
Select Case edad
    Case 0, 1, 2
        variable1 = "No escolarizado"
    Case 3, 4, 5
        variable1 = "Preescolar"
    Case 6 To 12
        variable1 = "Escuela"
    Case 13 To 18
        variable1 = "Colegio"
    Case 19 To 25
        variable1 = "Universidad"
    Case Is > 25
        variable1 = "No escolarizado"
    Case Else
        variable1 = "¡No puede tener menos de CERO años!"
End Select

Seguramente podrás descubrir, leyendo el programa, cuál es el valor de “Variable1” una vez ejecutado el código anterior, ¿verdad?

Programar con Visual BASIC (IV)
Intenta comprender que hace cada línea.
Programar con Visual BASIC (IV)
Programar con Visual BASIC (IV)

Con esto terminamos este capítulo de nuestro pequeño curso de programación. La semana próxima comenzaremos con las sentencias capaces de hacer que una porción de nuestro código se repita la cantidad de veces que necesitemos. Mientras tanto, intenta aplicar lo aprendido para fijar los conceptos. ¡Hasta la próxima!

Curso Visual BASIC, Curso Visual BASIC, Curso Visual BASIC,