B. Davis propone questo approccio.

Il loop piu' in basso lavora sul sensore ultasonico. Se si avvicina troppo a qualcosa, la variabile testo "state" viene impostata ad un certo valore (ad esempio "fwd-1") e fa partire una data azione nella struttura a switch nel loop di sopra.
Davis mostra un esempio fra i diversi casi dello switch (la scelta di quale caso dipende da "state") quello corrispondente al valore "fwd-1). In questo caso la variabile viene impostata a "left-2" e i motori BC azionati in modo da avanzare per 2 rotazioni.
Dopodiche', al giro successivo del loop, il programma rientra nello switch nel caso "left-2" (che non e' illustrato ma presumibilmente fara' girare a sinistra...): qui la variabile state deve prendere il valore "fwd-3". Nel caso fwd-3 la variabile prendera' il valore left-4 e nel caso left-4 prendera' il valore iniziale "init" e mandera' percio' nel primo stato dove i motori andranno dritti indefinitamente.
Qui ci sono invece esempi di come affrontare i problema in altri linguaggi.