Skip to main content

Lezione 4: Utilizzo dei blocchi [Forever]

Controllo ripetuto delle condizioni

Come osservato nella lezione precedente, il blocco [If then] verifica le condizioni solo una volta. Affinché le condizioni contenute nei blocchi [If then] vengano controllate ripetutamente, è necessario un blocco [Forever] C. Il blocco [Forever] è un blocco C della categoria Control che ripete per sempre i comportamenti contenuti al suo interno.

Un blocco VEXcode VR Forever vuoto.
  • Caricare il progetto Unit7Lesson3 dalla lezione precedente.

    Lo stesso VEXcode VR blocca il progetto dalla fine dell'ultima lezione. Inizia con un blocco When Started e poi c'è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice 'Front Eye detects green?' e un blocco Turn right for 90 degrees all'interno del contenitore If. Poi c'è lo stesso se il blocco e la pila del blocco di svolta ma cambiato per girare a sinistra per 90 gradi se viene rilevato il colore blu. Successivamente, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di svolta, ma viene modificato in Stop Driving se viene rilevato il colore rosso. Infine, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di rotazione, ma viene modificato in Drive Forward se non viene rilevato alcun colore.
  • Rinominare il progetto Unit7Lesson4.

    Barra degli strumenti VEXcode VR con il pulsante "Nome progetto" evidenziato in una casella rossa, a sinistra del pulsante Seleziona parco giochi. Il nome del progetto è impostato su Unità 7 Lezione 4.
  • Trascina un blocco [Forever] nell'area di lavoro e collegalo alla parte superiore della pila di blocchi. Si noti che questo includerà tutti e quattro i blocchi [If then] all'interno del blocco [Forever].

    VEXcode VR blocca il progetto precedente ma con una freccia che indica l'aggiunta di un blocco Forever avvolto attorno a tutte le istruzioni if. Inizia con un blocco When Started e poi c'è una serie di quattro istruzioni if racchiuse in un blocco Forever. Il primo è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice "Front Eye detects green?" e un blocco Turn right for 90 degrees all'interno del contenitore If. Poi c'è lo stesso se il blocco e la pila del blocco di svolta ma cambiato per girare a sinistra per 90 gradi se viene rilevato il colore blu. Successivamente, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di svolta, ma viene modificato in Stop Driving se viene rilevato il colore rosso. Infine, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di rotazione, ma viene modificato in Drive Forward se non viene rilevato alcun colore.

    Per tua informazione

    I blocchi possono essere aggiunti all'inizio o al centro della pila di progetti allineando la parte superiore del blocco, con il posizionamento desiderato nella pila.

    Una visualizzazione di come un blocco Forever può essere trascinato in cima a una pila e avvolgere automaticamente il contenuto della pila. Il progetto dei blocchi VEXcode VR è lo stesso di prima e contenuto in un loop permanente. Le istruzioni if sono le seguenti: il primo è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice "Front Eye detects green?" e un blocco Turn right for 90 degrees all'interno del contenitore If. Poi c'è lo stesso se il blocco e la pila del blocco di svolta ma cambiato per girare a sinistra per 90 gradi se viene rilevato il colore blu. Successivamente, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di svolta, ma viene modificato in Stop Driving se viene rilevato il colore rosso. Infine, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di rotazione, ma viene modificato in Drive Forward se non viene rilevato alcun colore.

    Questo video mostra come aggiungere il blocco [Forever] attorno ai quattro blocchi [If then] nel progetto corrente. Si noti che la parte superiore del blocco [Forever] è allineata subito dopo [When started] e il primo blocco [If then]. Il blocco [Forever] avvolge quindi tutti i seguenti blocchi nello stack del progetto.

  • Ora che il blocco [Forever] viene aggiunto al progetto in modo che tutti i blocchi [If then] abbiano costantemente controllato le loro condizioni, aprire il 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.

    Una vista dall'alto verso il basso del VR Disk Maze Playground, con il robot VR che ha superato ciascun disco e si è posato sul disco rosso finale.
  • Nel progetto della lezione precedente, le condizioni all'interno dei blocchi [If then] sono state verificate una sola volta. Poiché le condizioni all'interno dei blocchi [If then] sono state controllate solo una volta, il robot VR è andato avanti per sempre perché la condizione di nessun colore rilevato è stata segnalata come VERA.

    Un diagramma del flusso di logica nel nostro progetto di blocchi VEXcode VR senza il blocco Forever. Le frecce indicano che ogni istruzione if viene eseguita una sola volta prima della fine del progetto, rendendo così il nostro progetto molto meno reattivo di quanto vorremmo. Il nostro progetto controlla se l'occhio anteriore rileva il verde e, in tal caso, gira a destra di 90 gradi. Successivamente, se l'occhio anteriore rileva il blu, gira a sinistra per 90 gradi. Successivamente, se l'occhio anteriore rileva il rosso, smette di guidare. Infine, se l'occhio anteriore non ne rileva nessuno, si muove in avanti.
  • Ora che il blocco [Forever] è stato aggiunto, ogni condizione dei blocchi [If then] C verrà controllata ripetutamente. Durante il flusso del progetto, se la condizione del blocco C [If then] è VERA, vengono eseguiti i blocchi all'interno del blocco C [If then]. Se la condizione del blocco C [If then] è FALSA, i blocchi all'interno del blocco C [If then] vengono saltati e il flusso del progetto continuerà fino al blocco successivo nella pila. Ciò consente al robot VR di eseguire comportamenti discreti come girare o fermarsi una volta rilevato un determinato colore.

    Un diagramma del flusso di logica dei blocchi VEXcode VR proietta a sinistra attraverso un esempio del robot VR nell'immagine a destra. L'immagine mostra il robot VR che raggiunge un disco blu e gira a sinistra. Il diagramma indica che le istruzioni if si ripetono per sempre e ogni ciclo viene controllato. Dopo che l'occhio anteriore non rileva il verde, controlla il colore blu successivo che ritorna vero e gira il robot a sinistra di 90 gradi. Dopodiché, il flusso della logica continua lungo la pila, controllando il rosso e niente.
  • I blocchi [If then] vengono utilizzati con i blocchi [Forever] per garantire che le condizioni siano costantemente controllate.

    Un diagramma del flusso di logica nel nostro progetto di blocchi VEXcode VR con il blocco Forever esterno incluso. Ogni freccia è ora etichettata con ciò che quel comando logico sta misurando e una freccia gialla mostra il flusso della logica che si ripete continuamente attraverso ogni blocco nel ciclo Forever. È chiaro che ogni istruzione if viene controllata su ogni ciclo del blocco forever, indipendentemente dal fatto che il risultato sia vero o falso.

Utilizzo dei blocchi degli interruttori 

Questo è il blocco Switch [Forever]. Il comando Python Switch per Forever crea un ciclo while in cui la condizione è True. I comandi annidati all'interno del loop quando poi vengono ripetuti per sempre, in quanto la condizione è sempre True. 

Una versione del blocco switch VEXcode VR del blocco Forever. Il codice Python recita "while True:", che è l'equivalente Python di una dichiarazione Forever.

Domande

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

Google Doc / .docx / .pdf