in

Programar con Visual BASIC (IV)

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.

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.

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

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 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!

Reportar

¿Qué te pareció?

Escrito por Ariel Palazzesi

4 Comments

Leave a Reply
  1. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Los Simpsons – MOD de Quake III

ACRM-R5: Robot modular acuático