DiGrande.it

Cegos, Braille e Tecnologia de Impressão

Este site utiliza Cookies para personalizar conteúdos e anúncios, fornecer funcionalidades de redes sociais e analisar links. Ao fechar este banner ou continuar a navegação está a consentir a sua utilização.
Leia a Política de Cookies de DiGrande.it

O laço While

O laço While é útil para repetir a execução de um bloco de código um número variável de vezes. Para determinar se um bloco de código deve ser executado usando uma condição booleana como um If.

A instrução é a seguinte:

- While [CondiçãoBoleana]

- ...

- EndWhile

No loop While acima o bloco de código será executado caso a condição booleana for True. Depois que o bloco de código for executado, o While reavalia a condição e se ainda for True, será executado até a condição se tornar false.

Quando a condição for False, o fluxo de execução continua com a instrução imediatamente após sua instrução EndWhile.

Por exemplo:

- a = 0

- While a <= 10

- a = a + 1

- EndWhile

Neste exemplo, o loop é executado até que a variável "a" excede o valor 10. A condição inicial de fato retorna True se for menor ou igual a 10.

É sua responsabilidade garantir que a condição booleana mais cedo ou mais tarde torna-se falsa. Se isso não ocorrer, o corpo do loop será executado um número infinito de vezes. Para prevenir esse risco, foi imposto um limite de cerca de 250.000 iterações, então o While emite um erro. Os loops infinitos são um dos erros mais comuns de programação, você deve ter sempre muito cuidado ao construir um loop.

Por exemplo:

- a = 0

- While a <= 10

- a = a - 1

- EndWhile

No exemplo, a condição será sempre True porque o valor da variável "a" está sendo subtraída,por tanto nunca será maior que 10. Então o ciclo tende a ser realizado um número infinito de vezes. Após cerca de 250.000 iterações a execução terminará com um erro.

Vimos o laço clássico, em que a condição booleana é expressa e executada na parte superior. A condição booleana inicial permite que você evite executar o bloco de código caso não seja necessário.

- While

- ...

- EndWhile [CondizioneBooleana]

Ao contrário da condição fixada no início, se a condição booleana no final for True o loop é encerrado. A palavra-chave EndWhile sempre é usada para delimitar o final de um laço While. Em seguida, o fim do While (End of While) ocorrerá se a condição for True.

Por exemplo:

- a = 0

- While

- a = a + 1

- EndWhile a > 10

Neste caso, o bloco do While loop é executado pelo menos uma vez. A iteração de loop termina quando a variável "a" é maior que 10.

A condição booleana pode ser colocada no início do loop e, em seguida, o bloco de código é executado se a condição for True. Ou a condição pode ser colocada no final do ciclo, e neste caso o ciclo termina se a condição for True. Uma característica especial é que a condição pode ser colocada imediatamente no início e no fim, recebendo dois condicionais, verificados no início e no final do loop. Esta situação especial tem um sentido real, se as duas condições controlam variáveis diferentes.

Por exemplo:

- a = 0

- b = 0

- While a <= 10

- a = a + 1

- b = Random(10)

- EndWhile b >= 5

O exemplo acima ilustra o uso da dupla condição. O bloco é executado se a variável "a" for menor ou igual a 10, ou termina caso a variável "b" for maior ou igual a 5. A variável "b" em cada iteração recebe um valor aleatório, variando de 0 a 9.

O corpo de um loop pode conter outro loop, onde é conhecido como loops aninhados.

Por exemplo:

- a = 0

- While a <= 10

- b = Random(10)

- While b < 5

- // Faz alguma coisa.

- EndWhile

- a = a + 1

- EndWhile

O ciclo secundário será executado somente se a variável "b" for menor que 5. A variável "b" em cada iteração do ciclo primário é recebe um valor aleatório de 0 a 9.

A iteração de um cíclulo loop pode ser finalizado usando a instrução Break. Quando a instrução Break é encontrada, a execução passa para a próxima instrução imediatamente após o corpo do loop.

Por exemplo:

- a = 0

- While a <= 10

- b = Random(10)

- If b = 5

- Break

- EndIf

- a = a + 1

- EndWhile

No exemplo anterior, se a variável "b" for igual a 5, o ciclo terminará, caso contrário continuará com todas as iterações. Geralmente a instrução Break não deve ser usada, tendo as ferramentas mais adequadas para escrever um loop. No entanto, em caso de necessidade, você pode tolerar o uso.

A instrução Continue tem um efeito semelhante ao break na execução do loop. Mas ao contrário do intervalo, a execução retorna à parte superior ou inferior (dependendo de onde a condição booleana for interrompida) e, se necessário, o corpo do loop é repetido.

Por exemplo:

- a = 0

- While a <= 10

- b = Random(10)

- If b = 5

- Continue

- EndIf

- a = a + 1

- EndWhile

No exemplo anterior, se a variável "b" for igual a 5, o laço é repetido, portanto, a variável "a" não é incrementada. Em vez disso, no próximo exemplo, a condição é colocada no final, em seguida, a instrução Continue ignora a execução no final do ciclo.

- a = 0

- While

- b = Random(10)

- If b = 5

- Continue

- EndIf

- a = a + 1

- EndWhile a > 10

Se o loop tiver uma verificação dupla da condição, a instrução Continue sempre executará a condição de início do salto. Bem como a instrução Break, Continue, pode ser substituído por instruções mais eficientes que farão com que seu código fique mais legível.