## Ciclo while

In aggiunta alle condizioni un altra utile costruzione è la possibilità di ripetere un azione fintantoché non si verifichi una condizione. Il ciclo while è usato per questo, con la seguente sintassi.

    [!java|scala|c]while (condizione) {
        azione();
    }[/!][!python]while condizione:
        azione()[/!]

Il blocco interno viene quindi eseguito ancora ed ancora finché la condizione rimane vera. Più in dettaglio, il buggle testa il valore della condizione. Se è false ignora il blocco e continua sotto. Se è true esegue il blocco. Dopo di questo lui ritesta la condizione. Se è ancora false (per esempio perché un movimento gli ha fatto fronteggiare un muro) lui ignora il blocco e continua. Se è ancora true, esso esegue il blocco e rivaluta la condizione. Esso continuerà finché la condizione rimarrà true.

Naturalmente se le azioni scelte non influenzeranno il valore della condizione, il buggle continuerà ad eseguire l'azione all'infinito. In questo caso il pulsante stop dell'interfaccia diventerà utile. Per testare questo puoi provare a scrivere il seguente codice nell'editor:

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

This will let the buggle turn left as long as `[!c]1[/!][!java|scala]true[/!][!python]True[/!]` remains true (ie, endlessly), or until you stop it manually using the stop button.

### Traguardo dell'esercizio

Ora dovete scrivere del codice in modo che i vostri buggles si sposteranno avanti fintanto che non incontreranno un muro. L'idea è quindi quella di fare qualcosa come:

    mentre non stiamo fronteggiando un muro, eseguiamo:
      muoversiAvanti()

Look at the documentation (in "Help/About this world") for the full list of buggles' methods.