Estrutura de repetição “Do… Loop”

O “Do… Loop” é a estrutura de repetição mais versátil do VBScript, podendo ser utilizada em diversas situações.

Além do for e do for each, ambos vistos na aula passada, o VBScript dispõe de mais algumas estruturas de repetição, das quais destaco o “Do… Loop”.

Utilizamos o “Do… Loop” quando pretendemos repetir uma ou mais instruções por um número indeterminado de vezes, ou seja, enquanto no for é necessário especificar quantas repetições queremos, no “Do… Loop” o que fazemos é estabelecer uma condição que determina quando a repetição irá parar, não importando o número de repetições.

O “Do… Loop”, na verdade, pode ser considerado não apenas uma, mas quatro estruturas diferentes. Ele pode ser utilizado para repetir algo enquanto uma condição for verdadeira (While) ou repetir algo até que uma condição seja verdadeira (Until). Para qualquer uma destas duas possibilidades, é possível comparar primeiro e então executar ou não as instruções (dependendo da condição) ou executar primeiro para depois comparar (e aí, repetir ou não, a depender da condição).

Vamos a exemplos práticos. O primeiro é um script que mostra o valor da variável “a” (inicialmente zero) e incrementa seu valor. Mostra o novo valor e incrementa novamente e assim por diante, enquanto o valor de “a” permanecer menor que 10.


Dim a
a = 0
' Faça enquanto "a" for menor que 10
Do While (a<10)
Response.Write(a & "<br>")
a = a + 1
' Volta ao "Do"
Loop
Response.Write("Fim 'Do While... Loop'<br>")

O “Do While” indica que a condição é testada primeiro, para que as instruções sejam ou não executadas. Se inicializássemos “a” com o valor 10, a condição “a<10″ seria falsa. Portanto, as instruções subseqüentes não seriam executadas, e o programa continuaria a partir da instrução Loop, que determina o fim do “Do While”.

O exemplo a seguir é similar, mas ilustra o uso do Until, fazendo com que as instruções sejam executadas até que a condição seja verdadeira. Logo, inicialmente esta deve ser falsa, senão nenhuma execução ocorreria. Inicialize “a” com o valor 10 e comprove.


a = 0
' Faça até que "a" seja igual a 10
Do Until (a=10)
Response.Write(a & "<br>")
a = a + 1
' Volta ao "Do"
Loop
Response.Write("Fim 'Do Until... Loop'<br>")

O próximo exemplo ilustra o uso do While após o Loop. Na prática, isso faz com que as instruções sejam executadas para, em seguida, a condição ser testada. Veja que a condição de repetição é “a>10″. “a” inicialmente vale 0, mas como a condição é testada só no final, o valor de “a” é mostrado, a variável é incrementada e, finalmente, a condição resulta em falso, de forma que nenhuma repetição acontece. Tente consertar o script para que ele exiba os números de 0 a 9.


a = 0
' Faça...
Do
Response.Write(a & "<br>")
a = a + 1
' Enquanto "a" for maior que 10, volte ao "Do"
Loop While (a>10)
Response.Write("Fim 'Do... Loop While'<br>")

Finalmente, o próximo exemplo mostra o uso do Until após o Loop. Da mesma forma que no exemplo anterior, a condição é testada após a execução do código dentro do “Do”.


a = 0
' Faça...
Do
Response.Write(a & "<br>")
a = a + 1
' Até que "a" seja maior que 10, volte ao "Do"
Loop Until (a>10)
Response.Write("Fim 'Do... Loop Until'<br>")

O exemplo a seguir, o último de hoje, ilustra o uso do “Do… Loop Until” para percorrer o array chamado “modulos” em busca do valor “ASP”. Ele compara o valor de cada um dos elementos do array, parando apenas quando encontra o elemento de valor “ASP”. Perceba que, da forma que foi construído, não importa a localização do valor “ASP” no array, ele sempre será encontrado.


' Declaração do array
Dim modulos(5)
' Inicialização
modulos(0) = "Javascript"
modulos(1) = "PHP/MySQL"
modulos(2) = "ASP"
modulos(3) = "Flash"
modulos(4) = "Projeto"
' Declaração da variável do índice
Dim i
i = 0
' Faça...
Do
' Mostra o elemento de índice "i"
Response.Write(modulos(i) & "<br>")
' Incremento do índice
i = i + 1
Loop Until (modulos(i-1) = "ASP")

Como exercício, modifique o código acima, trocando o “Do… Loop Until” por “Do While… Loop”.

Deixe um comentário