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 IfEn 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 SelectEn 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] ..... NextDonde 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] ..... LoopCon 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 contadorY este sería el resultado:
Do While contador < 4 contador = contador + 1 Response.Write( contador & " " ) Loop %>
1 2 3 4
Cambiando While por Until:
<% Dim contadorSe obtiene:
Do Until contador > 4 contador = contador + 1 Response.Write( contador & " " ) Loop %>
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.