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 como sacar provecho a Choose() y Select Case.
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.
Choose()
Esta función recibe una lista de parámetros, de los cuales el primero se utiliza como índice para determinar cual 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, valor1, valor1, valor1,…., 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 cual 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 ayudara 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")
Si hubiésemos querido hacer lo mismo utilizando “If…Then”, el programa sería mucho mas extenso (y quizás mas 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
Esta instrucción es ideal para utilizar en aquellas situaciones en que debemos elegir una alternativa de entre muchas. Si bien Choose() hace mas 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 elije la forma que cree más conveniente.
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 que 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 como 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
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 que ser necesariamente un numero. 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
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 su la lista de valores es larga, “To” simplifica mucho el código.
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, este comprendido entre 0 y 10).
Para terminar con “Select Case”, vamos a resolver un problema utilizando todo lo visto hasta aquí.
Supongamos por un momento que en un variable tenemos la edad de una persona, y que debemos, en función de su valor, determinar que en que 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 que 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, cual es el valor de “Variable1” una vez ejecutado el código anterior, verdad?
Con esto terminamos este capitulo 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!
FANTASTICO SU PROGRAMA, ME GUSTARIA TENER MAS DATOS SOBRE LA PROGRAMACION DE PICS.
Ariel, excelente curso de VB. Espero muy interesado la próxima clase. Podrías indicarnos si existe algún manual en la red, para practicar mientras llega tu próximo envío?.
Saludos.
Necesito un fa elaborar un programa que lea un valor x y encuentre el valor numerico de la siguiente ecuacion: y= (x-3)/(x-25)
Hola.
Cuando puedo ver la parte 4 de Programacion de Microcontroladores?
Excelente tutorial!