sábado, 12 de setembro de 2015

Do While e Do Until

As instruções de Loop Do While e Do Until servem para que um bloco de instruções seja executado enquanto as condições referentes à cada instrução sejam alcançadas.

Numa tradução literal do inglês para o português as instruções podem ser entendidas da seguinte forma:

Do While = Faça enquanto
Do Until = Faça até

A sintaxe das duas instruções é a mesma, porém sua lógica é diferente


Do While "Teste condição"
   Bloco de instruções
Loop

Do Until "Teste condição"
   Bloco de instruções
Loop


Como pode-se reparar, a única diferença entre as duas instruções são as Palavras chave While e Until.

Agora vamos ver as respectivas lógicas das instruções.

O Loop While será executado sempre que o Teste de condição retornar um valor Verdadeiro


Dim aValor As Integer
aValor = 0
Do While aValor < 4 'enquanto for verdadeira
    MsgBox a
    aValor = aValor + 1
Loop
MsgBox "Fim"



No exemplo acima, a variável aValor começa com o valor 0 e a cada rodada do loop, seu valor é acrescido de 1.

O teste de condição verifica se aValor é menor do que 4, caso seja menor ( verdadeira ), o loop continua, caso contrário ele é finalizado.

Ao contrário do While o Loop Until será executado sempre que o Teste de condição retornar um valor Falso


Dim aValor As Integer
aValor = 0
Do Until aValor > 4 'enquanto for Falsa  
    MsgBox a   
    aValor = aValor + 1
Loop
MsgBox "Fim"

No exemplo acima, a variável aValor começa com o valor 0 e a cada rodada do loop, seu valor é acrescido de 1.

O teste de condição verifica se aValor é maior do que 4, caso seja maior ( falsa ), o loop se encerra, caso contrário ele continua. Outro detalhe nesse tipo de loop, é onde desejamos fazer a verificação da condição. Podemos colocar logo após o DO ou então após o LOOP.

Esse detalhe tem que ser usado com cautela, pois pode prejudicar de alguma forma os resultados do seu projeto.

Vejamos um exemplo da instrução While e passando de primeira um valor Falso para o teste de condição


Dim aValor As Integer
aValor = 0
Do While aValor > 4 'enquanto for verdadeira   
    MsgBox a
    aValor = aValor + 1
Loop
MsgBox "Fim"


Nesse exemplo, o bloco de instruções não é executado, pois a condição já começa como Falsa ( a não é maior que 4 ) e o loop é encerrado

Porém se alterarmos o local do teste de condição e deixarmos após o Loop, o bloco de instruções será executado uma vez.


Dim aValor As Integer
aValor = 0
Do
    MsgBox a
    aValor = aValor + 1
Loop While aValor > 4 'enquanto for verdadeira   
MsgBox "Fim"