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.