Skip to main content

Lezione 4: Comportamenti ripetuti

Nella lezione precedente hai visto come utilizzare le istruzioni if per consentire al robot VR di verificare le condizioni. Tuttavia, a causa del flusso del progetto, le condizioni all'interno delle dichiarazioni if vengono controllate una sola volta. In questa lezione, ti verrà presentato un ciclo infinito e come può essere utilizzato per risolvere la sfida del labirinto di dischi.

Lo stesso flusso di progetto dalla pagina precedente con le quattro istruzioni if e le frecce che indicano le condizioni di ciascuna istruzione if sta controllando e che l'unica istruzione che riporta come Vero è l'occhio anteriore che non rileva alcun colore, il che significa che il robot andrà avanti.

Risultati di apprendimento

  • Identifica che un ciclo infinito while  ripete all'infinito i comportamenti all'interno del ciclo .
  • Descrivi perché in un progetto verrebbe utilizzato un ciclo infinito while .
  • Descrivi il flusso del progetto in un progetto che ha più istruzioni if all'interno di un ciclo infinito while .
  • Spiega perché le istruzioni if vengono utilizzate con cicli infiniti while .

Controllo ripetuto delle condizioni

Come osservato nella lezione precedente, l'istruzione if controlla una condizione solo una volta. Affinché le condizioni contenute nelle istruzioni if vengano verificate ripetutamente, il progetto deve tornare all'inizio più volte. Per fare ciò è necessario un ciclo infinito while .

while True:
	wait (5, MSEC)

Un ciclo infinito while utilizza una condizione che viene sempre valutata come True. Mentre i loop eseguono il corpo del loop quando la condizione è True, i comandi all'interno del loop si ripetono all'infinito.

Il ciclo infinito while e il problema del labirinto del disco

Per far sì che il robot VR si comporti come previsto e che attraversi con successo il labirinto del disco, le condizioni stabilite dalle istruzioni if devono essere ripetutamente verificate mentre il robot VR si muove nel parco giochi. Aggiungendo un ciclo infinito while all'intero progetto, ciò sarà possibile perché tutte le istruzioni if contenute nel ciclo infinito while nel progetto sottostante vengono ripetutamente controllate finché il progetto non viene arrestato.

Si noti la rientranza qui. Tutte le istruzioni if sono rientrate per essere all'interno del ciclo infinito while. La fine del ciclo infinito while viene segnalata dal comando wait.

def main():
    while True:
        
        # If front eye detects green then turn right
        if front_eye.detect (GREEN):
            drivetrain.turn_for (RIGHT, 90, DEGREES)

        # If front eye detects blue then turn left
        if front_eye.detect (BLUE):
            drivetrain.turn_for (LEFT, 90, DEGREES)

        # If front eye detects red then stop
        if front_eye.detect (RED): 
            drivetrain.stop ()

        # If front eye detects none then drive forward
        if front_eye.detect (NONE): 
            drivetrain.drive (FORWARD)

        wait(5, MSEC)

Nel progetto della lezione precedente, le condizioni all'interno delle istruzioni if sono state verificate solo una volta. Poiché le condizioni nelle istruzioni if sono state verificate solo una volta, il robot VR ha continuato a procedere all'infinito perché la condizione di nessun colore rilevato era stata segnalata come Vera all'inizio del progetto.

Ora che è stato aggiunto il ciclo infinito while , ogni condizione delle istruzioni if verrà controllata ripetutamente.

  • La condizione del ciclo infinito while è sempre True, e quindi il codice all'interno del ciclo infinito while verrà sempre eseguito. Verranno costantemente verificate le condizioni delle istruzioni if durante l'esecuzione del progetto. 
    • Ricorda che la parte interna di un ciclo while è indicata da un rientro.
  • Durante il flusso del progetto, se la condizione dell'istruzione if è True, vengono eseguiti i comandi all'interno dell'istruzione if. Se la condizione dell'istruzione if è False, i comandi all'interno dell'istruzione if non vengono eseguiti e il flusso del progetto continuerà con il comando successivo. Ciò consente al robot VR di eseguire comportamenti discreti come girare o fermarsi una volta rilevato un determinato colore.
  • Le istruzioni If vengono utilizzate con cicli infiniti while per garantire che le condizioni vengano costantemente verificate, combinando essenzialmente il flusso del progetto delle istruzioni if all'interno di quello del ciclo.

Selezionare il pulsante Avanti per continuare con il resto della lezione.