Skip to main content

Lezione 2: Riepilogo post-progetto

Il blocco [If then else] viene utilizzato in modo che il robot VR possa prendere una decisione. Se la condizione booleana è VERA, verranno eseguiti i blocchi all'interno del ramo "If Then". Se la condizione booleana è FALSA, verranno eseguiti i blocchi all'interno del ramo "Else".

Un diagramma che indica il flusso del progetto del blocco if then else all'interno del ciclo forever. All'avvio del progetto viene controllata la condizione del sensore di distanza. Se viene trovato un oggetto, quella condizione è vera, quindi viene eseguito il blocco Drive forward. Se non viene trovato alcun oggetto, tale condizione riporta false, altrimenti viene eseguito il blocco di svolta a destra. Tutto questo si ripete continuamente all'interno del ciclo Forever.

In questo progetto, il robot VR si è diretto verso un edificio quando il sensore di distanza ha rilevato un oggetto e il <Distance found object> blocco è stato segnalato come VERO. Questo ha incaricato il ramo "If Then" del progetto di essere eseguito. Questo ramo include il blocco [Drive]. Il robot VR salta quindi il ramo "Else" del progetto.

Il progetto è a sinistra con un'evidenziazione verde che mostra il flusso del progetto della filiale if then in esecuzione. A destra viene mostrata la vista dall'alto verso il basso del parco giochi, con una freccia e un riquadro rosso che evidenziano il castello, o l'oggetto, rilevato dal sensore di distanza in questo caso.

Poiché il blocco [If then else] è posizionato all'interno di un blocco [Forever], il progetto torna in cima al blocco [Forever] per verificare le condizioni del blocco [If else else]. Questo ciclo continuerà per sempre, istruendo il robot VR a controllare continuamente la condizione [If then else] centinaia di volte al secondo.

Si noti che i blocchi [Drive] e [Turn] all'interno del blocco [If then else] sono blocchi non in attesa. I blocchi non in attesa non fermano il flusso di un progetto mentre sono in esecuzione.  Un comportamento di non attesa che viene eseguito in un blocco [If then else] (come l'unità in avanti se viene rilevato un oggetto) continuerà mentre la condizione viene verificata e cambierà solo quando la condizione cambia.

Lo stesso progetto VEXcode VR con le frecce che si spostano dalla parte inferiore del blocco Forever verso l'alto per indicare il flusso del progetto verso l'alto del ciclo Forever per ripetere tutti i comandi al suo interno.

Se il <Distance found object> blocco viene segnalato come FALSO, viene eseguito il ramo "Else" del progetto. Il ramo "Else" include il blocco [Turn].

Il progetto è a sinistra con una evidenziazione rossa che mostra il flusso del progetto della filiale else in esecuzione. A destra viene mostrata la vista dall'alto verso il basso del parco giochi, con frecce curve intorno al robot VR che indicano la rotazione per rilevare un oggetto, poiché non ce n' è uno direttamente davanti al sensore di distanza.

Per tua informazione

I blocchi [If then else] vengono utilizzati per garantire che venga eseguito un solo ramo nel progetto quando viene verificata la condizione. Solo un'istanza o una condizione può essere vera in qualsiasi momento. Questo rende il progetto più efficiente.

Un diagramma che indica il flusso del progetto del blocco if then else all'interno del ciclo forever. All'avvio del progetto viene controllata la condizione del sensore di distanza. Se viene trovato un oggetto, quella condizione è vera, quindi viene eseguito il blocco Drive forward. Se non viene trovato alcun oggetto, tale condizione riporta false, altrimenti viene eseguito il blocco di svolta a destra. Tutto questo si ripete continuamente all'interno del ciclo Forever.

Confrontare il progetto corrente con il progetto creato nell'Unità 7.  Il progetto dell'Unità 7 utilizza quattro blocchi [If then].

Un diagramma del flusso di progetto di un progetto di esempio dall'Unità 7 con quattro blocchi If then in sequenza. In ogni caso, il parametro If utilizza il sensore dell'occhio anteriore per rilevare un colore specifico ed eseguire un comportamento in base al colore rilevato. Se il colore viene rilevato, If then è vero e il blocco al suo interno verrà eseguito, e questo accadrà ripetutamente per ogni sezione del codice.

Quando si esegue un progetto con più blocchi [If then], è possibile che più condizioni riportino TRUE e che il progetto esegua i comandi nel blocco [Forever]. In questo progetto, entrambe le condizioni possono risultare VERE durante lo stesso ciclo [Forever]. Conflitti come questo potrebbero far sì che il progetto smetta di funzionare o corra più lentamente.

Un diagramma del flusso di progetto di due blocchi If sequenziati all'interno di un ciclo perenne. All'avvio, il progetto verificherà prima la condizione 1, il parametro del primo blocco if then. Se ciò è vero, girerà a destra per 90 blocchi al suo interno. Se tale condizione è falsa, il progetto passa alla successiva se poi blocca per verificare la condizione 2. Se la condizione 2 è vera, l'unità in avanti per il blocco da 200 mm al suo interno funzionerà. Se è falso, il progetto tornerà in cima al ciclo Forever per ripetere di nuovo il processo.

L'utilizzo di un blocco [If then else] eviterebbe bug come questo perché solo una condizione può essere VERA in un dato momento con questo blocco.

Un diagramma del flusso del progetto utilizzando un blocco if then else all'interno di un ciclo forever. All'avvio, verrà controllata la condizione del ramo if then. Se è vero e l'azionamento è in movimento, il blocco all'interno del ramo If funzionerà e il robot ruoterà a sinistra di 90 gradi; altrimenti, il robot avanzerà di 200 mm. Questa decisione di verificare una condizione verrà presa continuamente poiché il progetto è all'interno di un ciclo per sempre.

Domande

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

Google Doc / .docx / .pdf