18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!