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()

Quando o seu programa funciona, vá para o próximo exercício.