Los bucles le permiten ejecutar un grupo de instrucciones de manera repetida. Algunos bucles repiten instrucciones hasta que una condición es False; otros repiten instrucciones hasta que una condición es True. Existen también bucles que repiten instrucciones un número de veces específico.
Las siguientes instrucciones de repetición están disponibles en VBScript:
Puede utilizar instrucciones Do...Loop para ejecutar un bloque de instrucciones un número indefinido de veces. Las instrucciones se repiten mientras una condición es True o hasta que una condición sea True.
Utilice la palabra clave While para comprobar una condición en una instrucción Do...Loop. Puede comprobar la condición antes de introducir el bucle (como se muestra en el siguiente ejemplo de ChkFirstWhile), o puede comprobarlo después de que se haya ejecutado el bucle al menos una vez (como se muestra en el ejemplo de ChkLastWhile). En el procedimiento ChkFirstWhile, si myNum
se establece como 9 en lugar de 20, las instrucciones dentro del bucle no se ejecutarán nunca. En el procedimiento ChkLastWhile, las instrucciones dentro del bucle sólo se ejecutan una vez porque la condición ya es False.
Sub ChkFirstWhile() Dim counter, myNum counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "El bucle realizó " & counter & " repeticiones." End Sub Sub ChkLastWhile() Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10 MsgBox "El bucle realizó " & counter & " repeticiones." End Sub
Hay dos maneras de utilizar la palabra clave Until para comprobar una condición en una instrucción Do...Loop. Puede comprobar la condición antes de que entre en el bucle (como se muestra en el siguiente ejemplo de ChkFirstUntil), o puede comprobarlo después de que se haya ejecutado el bucle al menos una vez (como se muestra en el ejemplo de ChkLastUntil). Siempre que la condición sea False, se ejecutará el bucle.
Sub ChkFirstUntil() Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "El bucle realizó " & counter & " repeticiones." End Sub Sub ChkLastUntil() Dim counter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox "El bucle realizó " & counter & " repeticiones." End Sub
Puede salir de un bucle Do...Loop con la instrucción Exit Do. Ya que normalmente se desea salir sólo en situaciones concretas, tales como evitar un bucle interminable, debe utilizar la instrucción Exit Do en el bloque de la instrucción True de una instrucción If...Then...Else. Si la condición es False, el bucle se ejecuta con normalidad.
En el siguiente ejemplo, a myNum
se le asigna un valor que crea un bucle interminable. La instrucción If...Then...Else comprueba esta condición, con lo que se impide la repetición interminable.
Sub ExitExample() Dim counter, myNum counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum < 10 Then Exit Do Loop MsgBox "El bucle realizó " & counter & " repeticiones." End Sub
La instrucción While...Wend se proporciona en VBScript para aquellos que están familiarizados con su uso. Sin embargo, debido a la falta de flexibilidad de While...Wend, se recomienda que se utilice en su lugar Do...Loop.
Puede utilizar instrucciones For...Next para ejecutar un bloque de instrucciones un número de veces específico. Para bucles, utilice una variable de contador cuyo valor se incremente o disminuya con cada repetición del bucle.
El siguiente ejemplo hace que un procedimiento llamado MyProc
se ejecute 50 veces. La instrucción For especifica la variable de contador x y sus valores de inicio y fin. La instrucción Next incrementa la variable de contador en 1.
Sub DoMyProc50Times() Dim x For x = 1 To 50 MyProc Next End Sub
Mediante la palabra clave Step, puede incrementar o disminuir la variable de contador por el valor que especifique. En el siguiente ejemplo, la variable de contador j se incrementa en 2 cada vez que se repite el bucle. Cuando finaliza el bucle, el total es la suma de 2, 4, 6, 8 y 10.
Sub TwosTotal() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox "El total es " & total End Sub
Para disminuir la variable de contador, utilice un valor negativo para Step. Debe especificar un valor final que sea menor que el valor de inicio. En el siguiente ejemplo, la variable de contador myNum
disminuye en 2 cada vez que se repite el bucle. Cuando finaliza el bucle, el total es la suma de 16, 14, 12, 10, 8, 6, 4 y 2.
Sub NewTotal() Dim myNum, total For myNum = 16 To 2 Step -2 total = total + myNum Next MsgBox "El total es " & total End Sub
Puede salir de cualquier instrucción For...Next antes de que el contador alcance su valor final con la instrucción Exit For. Ya que normalmente se desea salir sólo en situaciones concretas, como cuando se produce un error, debe utilizar la instrucción Exit For en el bloque de la instrucción True de una instrucción If...Then...Else. Si la condición es False, el bucle se ejecuta con normalidad.
Un bucle For Each...Next es similar a un bucle For...Next. En lugar de repetir las instrucciones un número de veces especificado, un bucle For Each...Next repite un grupo de instrucciones para cada elemento de una colección de objetos o de una matriz. Esto es especialmente útil si no sabe cuántos elementos hay en una colección.
En el siguiente ejemplo de código HTML, el contenido de un objeto Dictionary se utiliza para colocar texto en varios cuadros de texto.
<HTML> <HEAD><TITLE>Formas y elementos</TITLE></HEAD> <SCRIPT LANGUAGE="VBScript"> <!-- Sub cmdChange_OnClick Dim d 'Crear una variable Set d = CreateObject("Scripting.Dictionary") d.Add "0", "Atenas" 'Agregar algunas claves y elementos d.Add "1", "Belgrado" d.Add "2", "El Cairo" For Each I in d Document.frmForm.Elements(I).Value = D.Item(I) Next End Sub --> </SCRIPT> <BODY> <CENTER> <FORM NAME="frmForm" <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Botón" NAME="cmdChange" VALUE="Haga clic aquí"><p> </FORM> </CENTER> </BODY> </HTML>
Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com. |