## Loops while (enquanto)

Além dos condicionais, outra construção bem útil é a habilidade de repetir uma ação enquanto uma condição específica não acontece. Um loop 'while' é usado para isto, com a seguinte sintaxe.

    [!java|scala|c]while (condição) {
        action();
    }[/!][!python]while condição:
        action()[/!]

O bloco interno é então executado várias e várias vezes, enquanto a condição se mantiver verdadeira. Mais especificamente, o buggle testa o valor da condição. Se for falsa, ignora o bloco e continua abaixo. Se for verdadeira, executa o bloco. Depois disto, testa a condição. Se agora for falsa (por exemplo, porque os movimentos do bloco nos deixaram de cara à parede), agora ignora o bloco e continua. Se ainda for true, executa o bloco e reavalia a condição. Faz isto enquanto a condição se mantém verdadeira.

Naturalmente, se a ação escolhida não modifica o valor da condição, o buggle vai fazer a ação infinitamente. O botão stop na interface se torna útil nestes casos. Para testar isto, pode tentar digitar o seguinte código no editor:

    [!java|scala]while (true) {
        left();
    }[/!][!c]while (1) {
        left();
    }[/!][!python]while True:
        left()[/!]

Isto vai fazer o buggle virar à esquerda enquanto `[!c]1[/!][!java|scala]true[/!][!python]True[/!]` permanecer true (ou seja, infinitamente), ou até que pare manualmente a usar o botão parar.

### Objetivo do exercício

Agora tem que escrever algum código para os seus buggles se moverem para a frente até que eles encontrem uma parede. A ideia é então fazer algo assim:

    Enquanto não estiver de cara para uma parede, faça:
      moveForward()

Procure na documentação (em "Ajuda/Sobre este mundo") para a lista completa dos métodos dos buggles.