Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5.8 Il costrutto goto<br />
L’istruzione goto esiste anche nel linguaggio C 2 . Il suo utilizzo è sconsigliato in quanto, in genere,<br />
complica la comprensione del programma, <strong>per</strong>chè rende difficile seguirne il flusso logico. Inoltre<br />
qualsiasi algoritmo può essere implementato usando i costrutti a disposizione senza l’utilizzo<br />
della goto, e quindi la disponibilità della goto è generalmente su<strong>per</strong>flua.<br />
Vi sono <strong>per</strong>ò delle eccezioni, <strong>per</strong> esempio quando si deve uscire da cicli più volte annidati a<br />
causa di situazioni anomale (errori). In pratica, la goto viene utilizzata in casistiche standard<br />
(gestione errori) quando il suo utilizzo rende più semplice il programma di quanto non lo sarebbe<br />
usando altri costrutti.<br />
La sintassi del comando è:<br />
goto ;<br />
Nel programma vi deve essere una istruzione etichettata con lo stesso nome secondo la sintassi:<br />
: <br />
Il funzionamento è molto semplice: quando viene incontrata l’istruzione goto, viene effettuato<br />
un salto incondizionato al punto del programma al quale è posta l’etichetta.<br />
Un esempio è il seguente<br />
while (1) {<br />
....<br />
if (q) break;<br />
while (1) {<br />
....<br />
/* esce solo dal ciclo più interno */<br />
if (p) break;<br />
....<br />
/* esce dal ciclo più esterno */<br />
if (errore) goto uscita;<br />
....<br />
}<br />
}<br />
uscita:<br />
if (errore) { /* gestione del problema */ }<br />
L’esempio sopra riportato consiste di due cicli annidati. Entrambi sono cicli infiniti, in quanto<br />
la condizione che comporta la continuazione del ciclo è sempre vera. Sono <strong>per</strong>ò state predisposte<br />
tre condizioni di uscita, nel caso si verifichino le condizioni associate alle variabili q, p ed errore.<br />
In caso si verifichi la condizione q, viene utilizzata l’istruzione break <strong>per</strong> uscire dal ciclo<br />
corrente (il più esterno), e quindi terminare le iterazioni. Se si verifica la condizione p viene<br />
usata sempre l’istruzione break <strong>per</strong> uscire dal ciclo corrente, ma in questo caso viene terminato<br />
solo il ciclo più interno. In caso di errore, invece, è necessario uscire direttamente dal ciclo interno,<br />
ma ciò è possibile soltanto utilizzando l’istruzione goto, che in questo caso salta al punto indicato<br />
con l’etichetta uscita.<br />
2 E’ un costrutto utilizzato moltissimo in altri linguaggi, come il BASIC.<br />
52