Aquí comenzaremos a ver las instrucciones de VBScript, y lo haremos por las que seguramente son las más utilizadas de todas ellas: las instrucciones condicionales. En efecto, raro es el programa, por pequeño y simple que sea, que no contenga una o varias instrucciones If.. Then.. Else, que traducido viene a ser algo así: Si llueve Entonces haces esto Si no haces esto otro. Es como el interruptor eléctrico de tu lámpara: si está abierto la luz se apaga, y si está cerrado, se enciende. Y expresándolo en la jerga que entienden los ordenadores, la primera parte de la instrucción ( If) lo que hace es evaluar si la expresión propuesta (en este caso si llueve o no) devuelve True o False. Si... de nuevo aparecen los operadores lógicos. En las instrucciones condicionales pueden utilizarse todos los operadores lógicos que ya conocemos.
La instrucción If se puede escribir de tres formas distintas, según el número de condiciones que haya que evaluar:
Sintaxis de línea única, en la que se omite la palabra clave Else. es decir, que no hay que hacer nada si no se cumple la condición propuesta:
If llueve Then abrir paraguas
Sintaxis típica de bloque en la que sí se indica qué hacer si la condición propuesta no devuelve True.
Hay que cerrarla con End If:
If llueve Then
abrir paraguas
Else
no abrir paraguas
End If
También puede utilizarse esta sintaxis aunque no se escriba la parte Else.
Con la siguiente sintaxis se pueden evaluar condiciones distintas pudiendo tomar diferentes decisiones o siempre la misma, segun convenga:
If llueve Then
abrir paraguas
ElseIf llueve mucho Then
sacar la barca
ElseIf graniza Then
sacar el casco
Else
ir la playa
End If
O bien:
If llueve Then
no salir de casa
ElseIf llueve mucho Then
no salir de casa
ElseIf graniza Then
no salir de casa
Else
ir la playa
End If
Aunque en este caso sería más eficiente usar el operador Or, ya que con una sola evaluación se hallaría la decisión, que es única:
If llueve Or graniza Or llueve mucho Then
no salir de casa
Else
ir la playa
End If
En el enunciado de la condición If pueden utilizarse todos los operadores lógicos que ya conocemos, pudiéndose escribir expresiones muy complejas.
Si lo que queremos es evaluar siempre la misma condición, y tomar distintas decisiones, es preferible utilizar la otra instrucción condicional de VBScript: Select Case
Select Case que tiempo hace?
Case llueve mucho
sacar la barca
Case graniza
sacar el casco
Case Else
ir la playa
End Select
En cualquier caso, con ambas instrucciones, si más de una condición devuelve True, solamente se ejecutarán las decisiones de la primera de ellas, ignorándose el resto. Las dos instrucciones se puede utilizar cuantas veces sea preciso, asi como anidarlas. He aquí un ejemplo sencillo de anidamiento:
If llueve Then
If llueve poco Then
abrir paraguas A
End If
If llueve mucho Then
abrir paraguas B
End If
Else
If no hace sol Then
coger paraguas
End If
If hace sol Then
no coger paraguas
End If
End If
Instrucciones de bucle
Otro tipo de instrucciones, también muy utilizadas en programación, son las de repetición o instrucciones de bucle. Como su nombre indica, sirven para repetir un grupo de comandos cualesquiera un número determinado de veces, formando un bucle. Siempre que se programan instrucciones de bucle hay que asegurarse de que éste tendrá un final controlado, para evitar el bucle infinito que colapsaría el servidor.
Un bucle típico es el definido con la instrucción For.. To.. Next, cuya sintaxis es la siguiente:
For contador = inicio To final [Step] incremento
.....
.....
[Exit For]
.....
Next
Donde contador es una variable numérica o un número que se utilizará como contador del bucle, es decir, para llevar la cuenta de las veces que se ha repetido el bucle. inicio es otra variable numérica o un número que indica el valor inicial del contador, lo mismo que final, que indica cuantas veces hay que repetir el bucle. Step es opcional, y sirve para indicar el incremento que se aplicará al contador en cada repetición. Si se omite, por defecto el incremento es 1.
En el caso de que se deba abandonar el bucle antes de que se hayan hecho todas las repeticiones indicadas por la variable final, se escribirá Exit For en el lugar conveniente. En este caso, la ejecución de comandos continuará con la instrucción siguiente después de Next. Entre For y Next se puede escribir cualquier tipo de instrucciones, funciones o comandos, incluso otras instrucciones For.. To.. Next anidadas. Cada vez que se ejecuta un ciclo del bucle, VBScript suma el valor de Step (1 por defecto) a contador, comparando el resultado con final hasta que se igualan. Cuando esto ocurre, el bucle termina y se continua la ejecución del programa con la instrucción siguiente a Next.
Esta instrucción tiene otra sintaxis: For.. Each.. Next que se utiliza para acceder a todos los elementos de un grupo o colección de elementos. Ya vimos su uso en algunos objetos de ASP.
For Each elemento In grupo ..... ..... [Exit For] ..... NextPor ejemplo, para ver todas las variables definidas en el objeto Session() de ASP:
<%
Session("Variable1") = "Contenido de la variable 1"
Session("Variable2") = "Contenido de la variable 2"
Session("Variable3") = "Contenido de la variable 3"
For Each Item in Session.Contents
Response.Write Item & " = " & Session.Contents(Item) & "<BR>"
Next
%>
Y este sería el resultado:
Nombre Contenido
-----------------------------------------
VARIABLE1 = Contenido de la variable 1
VARIABLE2 = Contenido de la variable 2
VARIABLE3 = Contenido de la variable 3
Otra instrucción de bucle es Do.. Loop:
Do While | Until condicion
.....
.....
[Exit Do]
.....
Loop
Con esta instrucción el bucle se repite mientras ( While) la condicion devuelva True, o bien hasta que ( Until) la condicion devuelva True. Al igual que con la instrucción For To.. Next, si hay que interumpir el bucle antes de que éste termine normalmente, se intercalarán escapes Exit Do.
<%
Dim contador
contador = contador + 1
Response.Write( contador & " " )
Loop
%>
Y este sería el resultado:
Do While contador < 4
1 2 3 4
Cambiando While por Until:
<%
Dim contador
contador = contador + 1
Response.Write( contador & " " )
Loop
%>
Se obtiene:
Do Until contador > 4
1 2 3 4 5
Instrucción On Error
Puede ocurrir que se produzca un error mientras se ejecuta un programa. Si esto sucede, ASP emite un mensaje de error y la ejecución se detiene. En algunos casos el error puede no ser inesperado, como por ejemplo, si el usuario no ha realizado una acción necesaria para que el programa continue sin problemas. En estos casos, puede utilizarse la instrucción On Error Resume Next, que hace que el programa continue con la siguiente instrucción y sin emitir ningun mensaje de error.
No es buena idea abusar de esta instrucción. Su uso puede estar justificado en casos muy especiales, pero un buen programa debe tener prevista cualquier omisión o acción que el usuario pueda realizar indebidamente, reportando el mensaje de aviso correspondiente (no de error de sistema) y obligando a repetir los pasos que sean necesarios. Evidentemente, lo que no puedes tener previsto es un fallo general del servidor o de la red, pero ante este tipo de problemas, no hay solución.