aprende Visual Basic - www.ibercaja.es/~ib307182

ESTRUCTURAS DE SELECCIÓN

Disponemos de 2 tipos de sentencias para realizar selecciones dependiendo del valor de una expresión o una sola variable:

Sentencia If Then Else

La primera es la sentencia If Then Else que no debe tener secretos puesto que es muy similar en todos los lenguajes

La estructura general es la siguiente:

If condición then

bloque de sentencias

Else

bloque de sentencias

End If

Se pueden colocar todas las sentencias de código que queramos en cada uno de los bloques de sentencias, siempre que cada sentencia vaya en una línea distinta.

Si los bloques de sentencias están formados por una sola instrucción podemos utilizar la versión reducida que ocupa una sola línea:

If condición then sentencia else sentencia

 

Ejemplo:

If isnumeric(numero) then la variable numero es numérica else no es numerica

 

También podemos anidar varias sentencias If then Else cuando una de las 2 opciones iniciales contiene a su vez 2 bifurcaciones dependiendo del estado de otra condición:

if dato<10 then

la variable dato contiene un solo dígito

Else

If dato<100 then

la variable dato contiene 2 dígitos

Else

la variable dato contiene más de 2 dígitos

end If

End If

 

En el ejemplo anterior se quiere saber si la variable dato contiene uno, dos o más dígitos. Para calcularlo no es suficiente con una sola sentencia If Then Else, por tanto se recurre a anidar 2 sentencias de este tipo. La segunda sentencia If se ejecutará si la condición de la primera sentencia If no se cumple, es decir, si dato>=10. Una vez que se ha llegado a este punto sabemos que la variable dato contiene 2 o más dígitos, mediante una nueva sentencia If sabremos exactamente el número de dígitos de la variable dato.

Este último ejemplo podría haberse escrito de otra forma utilizando la cláusula ElseIf:

If dato<10 then

la variable dato contiene un dígito

ElseIf dato<100 then

la variable dato contiene dos digitos

Else

la variable dato contiene más de 2 digitos

End If

 

Esta segunda opción es perfectamente válida cuando queremos evaluar varias condiciones, aunque tiene más limitaciones que la estructura anterior ya que enlaza directamente el Else con el If siguiente, sin dejarnos introducir sentencias entre medias que algunas veces podríamos necesitar.

Podemos introducir tantas líneas ElseIF como queramos siempre antes del último Else, si es que lo necesitamos.

Para múltiples decisiones en los que dependiendo del valor de una variable queremos que se realice una acción distinta, parecido a los menús de los programas de MS DOS, no conviene utilizar la estructura IF Then, sino que el código queda más claro y resulta más fácil de modificar utilizando la sentencia Select

 

Estructura SELECT CASE

Esta sentencia permite realizar operaciones diferentes dependiendo del valor de una variable:

Estructura General:

Select Case dato

Case valor1

bloque de sentencias

case valor2

bloque de sentencias

Case valor3

bloque de sentencias

case else

bloque de sentencias, se ejecutan si no se cumple ninguno de los valores anteriores

End Select

 

En esta construcción, dependiendo del valor de la variable dato se ejecutará un bloque de sentencias diferente. Los valores que podemos colocar en lugar de valor1, valor2, valor3 no sólo se limitan a valores constantes como números y cadenas de texto, sino que podemos comparar con un número como podemos ver en el siguiente ejemplo:

Select Case NotaFinal

Case Is < 5

Suspendido

Case 5 to 6.99

Aprobado

Case 7 to 8.99

Notable

Case Else

Sobresaliente

End Select

 

Como podéis observar si utilizamos los operadores lógicos como >, <, =, <=, >= debemos anteponer el operador Is. Si lo que hacemos es comparar con un intervalo de valores colocaremos el operador to entre los limites del intervalo. También podemos realizar comparaciones con un conjunto de valores separados por comas:

Case 1, 3, 5.

el numero es impar

 

Para terminar con el tema de las sentencias de selección vamos a ver un ejemplo completo en el que probaremos el uso de este tipo de instrucciones. Se trata del típico ejemplo de resolución de una ecuación de 2º grado

Sabemos que la estructura de una ecuación de este tipo es la siguiente:

ax2+ bx + c = 0

La fórmula que resuelve el valor de x es:

 

Esta fórmula tiene 2 soluciones, una o ninguna dependiendo del contenido de la raíz, de modo que esa es la comparación que realizaremos:

Trabajaremos con variables de tipo double que permiten decimales con la mayor precisión:

También podría haberse utilizado la estructura If then Else, aunque de esta forma no hay que repetir tantas veces la condición a evaluar.

El código anterior es sólo una muestra de como llegar a la solución de un problema utilizando sentencias de Visual Basic, no hemos entrado todavia en como introducir este codigo en el entorno de desarrollo de VB para crear una aplicación. Eso lo veremos en el capítulo siguiente, donde hablaremos de controles que son los elementos necesarios para construir el interfaz de usuario y poder asociar el código necesario para realizar nuestras aplicaciones.