Cerca all'interno del corso
Ricevi un consiglio a settimana !!

Corso di C con Linux

Strutture di controllo - Parte VI
Lezione 39
Parte 2 di 3

 

Vedi anche i corsi correlati:


Partner:


 

Il funzionamento dei cicli for e while dovrebbe essere chiaro.
Quello che risulta evidente è che l'utilizzo di goto provoca, una volta verificata la condizione dell'if, l'uscita da entrambi i cicli annidati e l'esecuzione della istruzione seguente all'etichetta fuori.
Se proviamo a mettere break al posto di goto, l'output del programma è ben diverso.
Infatti, l'istruzione break provoca l'uscita dal solo ciclo while, mentre il corpo del costrutto for viene eseguito fino alla fine (cioè finché i è minore di 10).
Notiamo che in entrambi i casi l'istruzione successiva all'etichetta viene eseguita comunque.

L'esempio riportato, seppur banale, mostra uno dei pochi casi che può giustificare l'utilizzo di goto, ovvero l'uscita da cicli annidati al verificarsi di particolari eventi o errori.
Non è, infatti, consigliabile ricorrere all'istruzione goto, sia perché il suo utilizzo rende il codice più difficile da leggere e da mantenere (soprattutto se l'etichetta cui fa riferimento si trova in una porzione molto distante), sia perché qualsiasi segmento di codice contenente un goto può sempre essere scritto in una forma equivalente che non ne fa uso.
Riscriviamo l'esempio precedente senza utilizzare goto:

/*
* File lez39_2.c
*/
#include <stdio.h>
#define FALSE 0
#define TRUE 1

int main()
{
int i = 2;
int j = 100;
int x;
short posso_uscire = FALSE;
for (; i < 10; i++)
{
if (posso_uscire)
break;
while (--j)
{
x = i * j;
if (x >= 185)
printf("i * j = %d\n", x);
else
{
posso_uscire = TRUE;
break;
}
}
}
printf("Sono fuori!\n");

return 0;
}

 


   
Home Page

A Cura di Angelo Carpenzano (©)

Scarica questa lezione: Clicca qui per scaricare la lezione


 

Segnala questa lezione ad un amico!
Nome Amico:
eMail Amico:
Tuo Nome:
Regalagli anche la Newsletter di questo corso!