The goto dichiarazione
La C ha una dichiarazione di avanzamento che consente i salti non strutturati di essere fatta. Per usare una dichiarazione di avanzamento, usate semplicemente il di avanzamento riservato di parola seguito dal nome simbolico a cui desiderate saltare. Il nome allora è disposto dovunque nel programma seguito dai due punti. Potete saltare quasi dovunque all'interno di una funzione, ma non siete consentiti per saltare in un ciclo, anche se siete permessi saltare di un ciclo.
Questo programma particolare è realmente un mess ma è un buon esempio di perchè i produttori del software stanno provando ad eliminare l'uso della dichiarazione di avanzamento il più possibile. L'unico posto in questo programma in cui è ragionevole usare il di avanzamento è, dove il programma salta dei tre cicli annidati in un salto. In questo caso sarebbe piuttosto sudicio installare una variabile e saltare successivamente da ciascuno dei tre cicli annidati ma una dichiarazione di avanzamento li ottiene da tutti e tre le in un modo molto conciso.
Alcune persone dicono che la dichiarazione di avanzamento dovrebbe non essere usata mai in tutte le circostanze, ma questo è pensare occupato di stretto. Se ci è un posto in cui una volontà di avanzamento fa chiaramente un flusso più accurato di controllo che una certa altra costruzione, tatto libero usarlo, tuttavia, come è nel resto del programma sul vostro video. Vediamo l'esempio:
#include <stdio.h>
int main()
{
int dog, cat, pig;
goto real_start;
some_where:
printf("This is another line of the mess.\n");
goto stop_it;
/* the following section is the only section with a useable goto */
real_start:
for(dog = 1 ; dog < 6 ; dog = dog + 1)
{
for(cat = 1 ; cat < 6 ; cat = cat + 1)
{
for(pig = 1 ; pig < 4 ; pig = pig + 1)
{
printf("Dog = %d Cat = %d Pig = %d\n", dog, cat, pig);
if ((dog + cat + pig) > 8 ) goto enough;
}
}
}
enough: printf("Those are enough animals for now.\n");
/* this is the end of the section with a useable goto statement */
printf("\nThis is the first line of the code.\n");
goto there;
where:
printf("This is the third line of the code.\n");
goto some_where;
there:
printf("This is the second line of the code.\n");
goto where;
stop_it:
printf("This is the last line of this mess.\n");
return 0;
}
Vediamo i risultati visualizzati
Dog = 1 Cat = 1 Pig = 1
Dog = 1 Cat = 1 Pig = 2
Dog = 1 Cat = 1 Pig = 3
Dog = 1 Cat = 2 Pig = 1
Dog = 1 Cat = 2 Pig = 2
Dog = 1 Cat = 2 Pig = 3
Dog = 1 Cat = 3 Pig = 1
Dog = 1 Cat = 3 Pig = 2
Dog = 1 Cat = 3 Pig = 3
Dog = 1 Cat = 4 Pig = 1
Dog = 1 Cat = 4 Pig = 2
Dog = 1 Cat = 4 Pig = 3
Dog = 1 Cat = 5 Pig = 1
Dog = 1 Cat = 5 Pig = 2
Dog = 1 Cat = 5 Pig = 3
Those are enough animals for now.
This is the first line of the code.
This is the second line of the code.
This is the third line of the code.
This is another line of the mess.
This is the last line of this mess. |
|