[Indice]


Visual Basic Script

Instrucciones

Instrucciones condicionales

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]
         .....
     Next
  
Por 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
Do While contador < 4
contador = contador + 1 Response.Write( contador & " " ) Loop %>
Y este sería el resultado:

1 2 3 4

Cambiando While por Until:

<%
Dim contador
Do Until contador > 4
contador = contador + 1 Response.Write( contador & " " ) Loop %>
Se obtiene:

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.


[Indice]