Skip to main content

Lezione 4: Utilizzo dei cicli nidificati

Nella lezione precedente, hai creato un progetto per istruire il robot VR a guidare, raccogliere e spostare tutti e tre i dischi blu nel Disk Mover Playground nell'obiettivo blu. In questa lezione, creerai un progetto per raccogliere e spostare un disco di ciascun colore nel suo corrispondente obiettivo colorato nel Disk Mover Playground utilizzando loop nidificati!

Una vista dall'alto verso il basso del Disk Mover Playground con il primo disco di ogni colore nell'obiettivo del colore corrispondente. Il robot VR è rivolto verso la parete laterale destra sul bordo della porta verde, nell'angolo in basso a destra.

Risultati di apprendimento

  • Identifica come nidificare i loop.
  • Descrivere il flusso di un progetto attraverso cicli nidificati.
  • Spiegare perché i cicli nidificati verrebbero utilizzati in un progetto.

Cosa sono i Nested Loop?

Nelle unità e lezioni precedenti di questo corso hai utilizzato cicli della categoria Controllo, come il ciclo for , il ciclo while e i cicli infiniti while per ripetere i comportamenti. Il posizionamento di un ciclo all'interno di un altro ciclo è chiamato "nidificazione". I loop nidificati sono utili nei progetti in cui un robot VR ripete gli stessi comportamenti più di una volta, ad esempio per spostare più dischi nel parco giochi. I cicli di annidamento possono organizzare e condensare un progetto, per renderlo più facilmente comprensibile. Questo può essere utile per comprendere meglio il contesto e lo scopo del codice, oltre a facilitare l'identificazione degli errori e la risoluzione dei problemi di un progetto. 

Ad esempio, per spostare tutti e tre i dischi blu verso l'obiettivo blu, è possibile utilizzare un ciclo per per ripetere più volte il processo di raccolta di un disco. Il progetto mostrato qui posiziona il progetto della Lezione 3 per spostare il primo disco blu verso l'obiettivo blu all'interno di un ciclo per , con il parametro impostato su 3. Notare come le quattro sezioni del progetto precedente siano rientrate nel ciclo per.

def main():
    per repeat_count nell'intervallo(3):
        #1. Drive al primo disco
        mentre non è down_eye.near_object():
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2. Prendi il magnete del disco
        .Energizza (BOOST)

        # 3. Guidare fino all'obiettivo
        drivetrain.turn_to_heading(180, GRADI)
        mentre front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 4. Rilasciare il disco nell'obiettivo magnet.energize
        (DROP) drivetrain.drive_for

        (REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)

    wait(5, MSEC)

Quando si 'annidano' i loop, il loop esterno controlla il numero di volte in cui viene eseguito il loop interno.  In questo progetto, il loop per è il loop esterno e ripeterà i comportamenti nel loop tre volte.

Il progetto dall'alto con il ciclo for evidenziato in un riquadro rosso. Rientrato sotto la definizione principale, il conteggio dei caratteri di sottolineatura ripetuti nell'intervallo (3) è l'inizio del ciclo e le quattro sezioni del progetto sono rientrate sotto di esso. Allineato con il comando for loop nella parte inferiore del progetto c'è un comando wait, che mostra dove termina il loop.

I loop interni sono quei loop contenuti all'interno del loop esterno. In questo esempio, ciascuno dei cicli while (per raggiungere il disco e l'obiettivo) sono 'cicli interni' che vengono eseguiti ogni volta che il progetto attraversa il ciclo for .Lo stesso progetto dall'alto, con ciascuno dei cicli while interni evidenziati in un riquadro rosso. La prima e la terza sezione di commento del progetto contengono cicli while per utilizzare i sensori sul robot per guidare fino a quando non viene rilevato un disco, quindi fino a quando non viene rilevato il muro.

Per tua informazione

L'indentazione è importante nei progetti Python VEXcode VR. È possibile utilizzare le linee grigie dell'indicatore nell'area di lavoro come aiuto visivo durante i cicli di nidificazione, per garantire che il progetto funzioni come previsto. Ogni riga indica l'inizio e la fine di un ciclo.

Lo stesso progetto dall'alto con le linee guida evidenziate in riquadri rossi, che mostrano l'allineamento delle rientranze di ciascuno dei loop interni rispetto al resto del progetto. La linea for loop si estende direttamente al comando di attesa finale. E ciascuna delle linee del ciclo while si estende ai comandi di arresto.

Flusso di un progetto di loop nidificato 

In questo esempio, ogni volta che si ripete il ciclo per , viene preso un disco blu e riportato all'obiettivo blu. 

Dopo la prima iterazione, il primo disco blu viene riportato all'obiettivo blu e il robot VR viene ruotato per essere pronto a raccogliere il secondo disco.

Un'immagine affiancata del progetto dall'alto mostrata nell'area di lavoro a sinistra e la finestra del parco giochi mostrata a destra. Il progetto ha una freccia arancione che avvolge il comando del ciclo for attorno all'intero progetto, illustrando la prima iterazione del ciclo for. Sul Playground, il primo disco blu è nella porta blu e il robot VR è posizionato di fronte ai dischi blu rimanenti, all'estremità anteriore della porta, indicando la posizione del robot dopo la prima iterazione.

Dopo la seconda iterazione, il secondo disco blu viene raccolto e il robot VR viene ruotato per essere pronto a raccogliere il terzo disco.

Un'immagine affiancata del progetto dall'alto mostrata nell'area di lavoro a sinistra e la finestra del parco giochi mostrata a destra. Il progetto ha una freccia arancione che avvolge il comando del ciclo for attorno all'intero progetto, illustrando la seconda iterazione del ciclo for. Sul campo da gioco, 2 dischi blu sono nella porta blu e il robot VR è posizionato di fronte al disco blu rimanente, all'estremità anteriore della porta, indicando la posizione del robot dopo la seconda iterazione.

Dopo la terza iterazione, viene raccolto il terzo disco blu e il robot VR smette di muoversi. Il ciclo per ha ora completato il suo intervallo, quindi il progetto è completato. 

Un'immagine affiancata del progetto dall'alto mostrata nell'area di lavoro a sinistra e la finestra del parco giochi mostrata a destra. Il progetto ha una freccia arancione che avvolge il comando del ciclo for attorno all'intero progetto, illustrando la terza iterazione del ciclo for. Nel parco giochi, tutti e tre i dischi blu sono nella porta blu e il robot VR è posizionato rivolto verso l'esterno appena fuori dalla porta, indicando la posizione del robot dopo l'iterazione finale.

 

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