Estruturas de Repetição Do/While/Loop/Until
A habilidade de escrever instruções e fazer escolhas usando a instrução If teoricamente lhe dá as ferramentas necessárias para criar qualquer tipo de programa. Porém, muitas tarefas são mais fáceis em teoria do que na prática. Considere o problema de imprimir todos os números do intervalo de 1 a 1000. A solução óbvia, escrever um programa contendo 1000 instruções Print (Print 1, Print 2, Print 3 e assim por diante), seria extremamente fatigante. Felizmente, o Visual Basic oferece um meio melhor.
A instrução Do do Visual Basic pode processar repetidamente um conjunto de instruções. Eis a sintaxe mais simples para essa instrução:
Do
[instrução] …
Loop
A palavra-chave Do marca o início de uma instrução composta, que inclui todos os comandos até a palavra-chave Loop. As instruções são executadas em ordem até que a palavra-chave Loop seja encontrada; nesse ponto, a execução começa novamente no inicio do bloco com a instrução Do.
O conjunto de instruções que se repete é chamado de laço. Quando um programa está executando repetidamente esse conjunto de instruções, costuma-se dizer que está em looping.
Você pode anexar uma cláusula While (enquanto) à instrução Do ou à instrução Loop.
O exemplo de impressão dos números de 1 a 1000 é tratado mais facilmente com um laço Do While, como mostrado a seguir:
Cont = 1
Do While Cont <= 1000
Cont = Cont + 1
Loop
A variável Cont recebe o valor 1.
Então, a instrução Do While, que é executada “enquanto” o Contador for menor ou igual a 1000, Quando o laço se encerrar, a execução continuará com as instruções do programa que se seguem à palavra-chave Loop.
A palavra-chave While deve ser seguida por uma condição com o formato de uma expressão booleana. Caso a expressão seja False, as instruções que a seguem, até a palavra-chave Loop, serão saltadas e a execução do programa prosseguirá com as instruções que vêm após a instrução Loop. Neste exemplo, Contador é verificado no início de cada laço, inclusive no primeiro. (Se Contador tivesse sido inicializado com 5000, nenhuma das instruções dentro do laço seria executada.)
Observe que, se a instrução Cont = Cont + 1 não tivesse sido incluída, a expressão booleana seria sempre True (pois Contador permaneceria com o valor 1) e o laço seria eternamente executado.
A criação de laços infinitos é um erro comum, mesmo entre os programadores mais experientes. Lembre-se de que, em Visual Basic, você pode sempre pressionar Ctrl-Break para interromper um programa que está sendo executado e sair do laço infinito.
A palavra-chave While também pode ser associada à instrução Loop, obtendo-se um efeito um pouco diferente, como mostrado neste código:
Do
Password = lnputBox (”Digite a senha”)
Loop While Password “teste”
A colocação da cláusula While no final do laço assegura que as instruções contidas no laço sejam executadas pelo menos uma vez, pois o teste de terminação ocorre após a palavra-chave Loop. Neste exemplo, a caixa de diálogo solicitando ao usuário a digitação da senha será exibida repetidamente, até que o usuário acerte a senha.
Finalmente, para melhorar a legibilidade de seu programa, você pode usar a palavra-chave Until (até que) em vez de While. O uso de Until inverte a lógica da condição. Compare os dois exemplos anteriores, usando cada uma das alternativas.
Exemplos usando While
Contador = 1
Do While Contador <= 1000
Print Contador
Contador = Contador + 1
Loop
Do
Password = lnputBox(”Digite a Senha”)
Loop While Password <> “Mussurn”
Exemplos usando Until
Contador = 1
Do Until Contador > 1000
Print Contado
Contador = Contador + 1
Loop
Do
Password = lnputBox(”Digite a Senha”)
Loop Until Password = “teste”
Eis a sintaxe completa para a instrução Do no Visual Basic:
Teste no início do laço:
Do [While | Until] expressão
[Instrução]
Loop
Teste no final do laço
Do
[Instrução]
Loop [While I Until] expressão