[C] – Break, continue, goto ed etichette
In alcuni casi può essere opportuno interrompere un ciclo, prima della sua conclusione. Per far questo, utilizziamo l’istruzione break
if (x>1)
{
break;
}
Nel caso presentato sopra, non ci interessa continuare ad eseguire il ciclo, se il valore di x è maggiore di 1. In questo caso il ciclo esegui l’istruzione break e si interrompe prima della sua naturale conclusione.
Il continue permette invece di ignorare l’istruzione successiva del ciclo, dopo l’istruzione continue continuando poi ad eseguire il ciclo.
if (x>1)
{
continue;
}
istruzione che viene saltata;
}
ciclo che continua
Come potete vedere dal chiarissimo esempio, è un buon metodo per semplificare il programma senza dover annidare troppo il codice, con condizioni varie.
Veniamo adesso al costrutto goto e alle sue fantastiche etichette. Ho trovato in giro per il web più inviti ad non usare tale costrutto, perché quel che fa può essere ottenuto anche con altri metodi, più corretti. Ciò non toglie che può sempre essere utile conoscerlo, specialmente all’inizio, quando si è più portati a cercare una soluzione più easy ai nostri problemi.
Questo costrutto si usa solitamente nei casi in cui si voglia saltare velocemente da una parte ad un altra. Ad esempio, se abbiamo una condizione che potrebbe verificarsi più volte all’interno del nostro programma e vogliamo richiamarla velocemente, possiamo usare questa sintassi:
for (roba varia)
for (roba ancora più varia)
for (roba indefinita) {
...omissis...
if (non trovi gli occhiali)
goto etichetta;
}
...omissis...
etichetta:
guarda nella custodia
Ora, a parte l’evidente sproloquio, cosa possiamo dedurre dalle stringhe di codice superiori? che nel caso in cui si verifichi la condizione non trovi gli occhiali è cosa buona e giusta guardare nella custodia. Il collegamento fra la condizione e l’azione da compiere è creato dal goto appunto (go to = vai a) che va alla ricerca nel codice successivo, della parola etichetta (la parola in questione può essere la qualsiasi).
Appena riscontra la presenza di una parola identica a quella successiva a se stesso, accoppia le due stringhe e compie l’azione indicata.
That’s all folks!


![[C] - Break, continue, goto ed etichette [C] - Break, continue, goto ed etichette](http://blogger.m3c.it/wp-includes/images/crystal/default.png)





Forse non è chiaro neanche a me, ma un break ferma l’esecuzione della “funzione” più vicina, cioè il for ad esempio, ma non l’intero programma.
Esempio
/*//#Inizio codice C
int main(int argc, char *argv[])
{
for (int i=0;i<10;i++)
{
if (i==5)
{
break;
}
cout <<endl<<"value: "<< i;
}
cout<<"Ciao!";
}
*///#Fine codice C
Per mia esperienza stampa da 0 a 4 e poi Ciao, cioè non esce dal programma ma dalla "funzione" (for in questo caso) più vicina.
P.s. ci vuole un format
Hola,
per formattare c’è il < code > senza spazi. Le quadre ti hanno ingannato
. So che non formatta molto bene ma purtroppo non ho trovato un plugin che creasse lo stesso effetto ricreato negli articoli.
Ma veniamo al break, ho dato una ricontrollata e in effetti hai ragione, il break esce dal ciclo e continua ad eseguire il programma, il continue salta solo l’immediata istruzione successiva, continuando poi ad eseguire il ciclo.
Thanks
necessita di verificare:)