## 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) {
        ação();
    }[/!][!python]while condição:
        ação()[/!]

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, ele ignora o bloco e continua abaixo. Se for verdadeira, ele executa o bloco. Depois disto, ele testa a condição. Se ela agora for falsa (por exemplo, por que os movimentos do bloco nos deixaram de cara pra parede), ele agora ignora o bloco e continua. Se ele ainda for verdadeiro, ele executa o bloco e reavalia a condição. Ele 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, você pode tentar digitar o seguinte código no editor:

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

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

### Objetivo do exercício

Agora você tem que escrever algum código para 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:
      avançar()

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