Menu manuais

 

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.