Skip to main content

Lezione 4: Utilizzo di Infinite While Loops

Risolvere il problema del labirinto del disco

Costruire il progetto

  • Carica il progetto Unit7Lesson3 dalla lezione precedente o ricrea il progetto mostrato qui per iniziare.
def main():
	# 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)
  • Rinominare il progetto Unit7Lesson4.Barra degli strumenti VR VEXcode con la casella del nome del progetto richiamata. Il progetto si chiama Unità 7 Lezione 4.

     

  • Trascinare o digitare un ciclo infinito while nella parte superiore del progetto e impostare la condizione su Vero.
def main():
    while True:
    	wait(5, MSEC)
  • Sposta il comando wait per fare spazio ai comandi che andranno all'interno del ciclo infinito while .
def main():
    while True:
    
    
    	wait(5, MSEC)
  • All'interno del ciclo infinito while , copia e incolla le precedenti istruzioni if all'interno del ciclo. Non eliminare il comando wait alla fine del ciclo while. Il tuo progetto potrebbe assomigliare a questo. Si noti che copiare e incollare i comandi in questo modo non comporta un rientro corretto.
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)
  • Ricorda, l'indentazione è MOLTO importante in VEXcode VR Python. Affinché il flusso del progetto venga eseguito come previsto, le istruzioni if devono essere rientrate nel ciclo infinito while . Selezionare le istruzioni if e premere 'Tab' per rientrarle nel ciclo infinito while . Se correttamente rientrato, il tuo progetto dovrebbe assomigliare a questo: 
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)
  • Con l'infinito while aggiunto al progetto, tutte le if istruzioni avranno ripetutamente le loro condizioni controllate. Aprire Disk Maze Playground ed eseguire il progetto.
  • Quando questo progetto viene eseguito, il robot VR navigherà nel Disk Maze Playground dall'inizio alla fine. Una volta che il robot VR rileva il rosso, smetterà di guidare.

    VR Robot on the Disk Maze Playground with the VR Robot stopped in front of the red disk near the bottom right corner of the playground.

In sintesi

  • 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 while è sempre True, e quindi il codice all'interno del ciclo while verrà sempre eseguito. Verranno ripetutamente verificate le condizioni delle istruzioni if durante l'esecuzione del progetto. 
  • Durante il flusso del progetto, se la condizione delle istruzioni if è True, vengono eseguiti i comandi all'interno delle istruzioni 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.

Domande

Seleziona un link qui sotto per accedere al quiz della lezione.

Google Doc / .docx / .pdf