Anuncios

Bienvenidos sean a este post, en el post anterior vimos como trabajar con condicionales, en el caso de hoy vamos a ver un caso especial de condicional como es select case.

Anuncios

A diferencia del anterior se usa para monitorear los posibles valores que puede tomar una variable, para comprender mejor el caso vamos a usar un codigo que simulara el lanzamiento de dados, primero veamos un ejemplo con el condicional if:

dados.vbs

randomize timer

dim dado
dim texto

msgbox "Tirar el dado"

dado = int(rnd * 6) + 1

if dado = 1 then texto = "Salio el numero 1"
if dado = 2 then texto = "Salio el numero 2"
if dado = 3 then texto = "Salio el numero 3"
if dado = 4 then texto = "Salio el numero 4"
if dado = 5 then texto = "Salio el numero 5"
if dado = 6 then texto = "Salio el numero 6"

wscript.echo(texto)
Anuncios

Este es un codigo simple pero un poco engorroso porque si bien primero tenemos un mensaje de inicio para tirar el dado, luego generamos un numero al azar entre 1 y 6, nuestro siguiente paso sera chequear si dado vale 1, 2, 3 asi hasta 6, en cada condicion a la variable texto le asignamos el numero que salio, por ultimo mostramos el numero del dado, si lo probamos veremos que funciona perfectamente pero tiene varios inconvenientes, el primero es que tenemos muchas condiciones para un numero, esto ocasiona que chequea cada condicion y solo cuando coincide ejecuta pero seguira chequeando, si bien se puede usar otra rutina para omitir el resto nos complica en demasia una estructura tan sencilla, una solucion seria modificar el codigo de esta forma:

randomize timer

dim dado
dim texto

msgbox "Tirar el dado"

dado = int(rnd * 6) + 1

select case dado
	case 1
		texto = "Salio el numero 1"
	case 2
		texto = "Salio el numero 2"
	case 3
		texto = "Salio el numero 3"
	case 4
		texto = "Salio el numero 4"
	case 5
		texto = "Salio el numero 5"
	case else
		texto = "Salto el numero 6"
end select

wscript.echo(texto)
Anuncios

En este codigo reemplazamos el bloque de condiciones por un select case, primero usaremos la funcion junto a la variable que vamos a chequear, despues por medio de la palabra case evaluaramos los posibles valores del mismo, asi que usaremos 1, 2, 3, 4 y 5, donde cada bloque tendra a texto con el mensaje que corresponde, en este caso el bloque queda determinado por el proximo case, si notaron dijimos del 1 al 5, porque siempre (o por lo menos es lo mas recomandable) el ultimo case sera else, donde en este caso implicitamente equivale a 6 porque ya cubrimos el resto de los casos, lo bueno de trabajar de esta forma es que una vez coincidido sale de la condicion y no sigue trabajando, como consecuencia no desperdiciamos tantos recursos, y en verdad para este tipo de casos un poco mas practico, su sintaxis es la siguiente:

select case variable
	case A
		... instrucciones ...
	case B
		... instrucciones ...
	...
	case N
		... instrucciones ...
	case else
		... instrucciones ...
end select
Anuncios

Siempre comienza igual, la variable es la que vamos a evaluar, luego los cases llevan el valor que puede tomar la variable y debemos comparar, pueden ser todos los que quieran y siempre al final case else, que equivaldria a else de if porque lo ejecuta cuando todo lo demas es falso.

Anuncios

Esto no quiere decir que select case reemplaza a if, todo lo contrario ya que son complementarios porque nosotros podemos agregar un if dentro de un case y dentro de un if un select case, en caso de ser necesario, por eso ninguno reemplaza al otro ya que cada uno tiene sus pros y sus contras, por ejemplo if soporta operadores logicos, select case no, if puede transformarse en algo engorroso cuando se anida demasiado, select case no porque sabemos cual es cual en todo momento, un uso muy comun es como vimos en este ejemplo para seleccionar una accion en base a un numero o tambien para una opcion de un menu por ejemplo.

Anuncios

En resumen, hemos visto select case, como es, para que se usa, un ejemplo reemplazando a un grupo de condicionales if, sus pros, sus contras, su sintaxis y para que se usa, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00