The goto Statement
C tem uma indicação goto que permita saltos unstructured ser feita. Para usar uma indicação goto, você usa simplesmente o goto reserved da palavra seguido pelo nome simbólico a que você deseja saltar. O nome é colocado então em qualquer lugar no programa seguido por uns dois pontos. Você pode saltar quase em qualquer lugar dentro de uma função, mas você não é permitido para saltar em um laço, embora seja permitido você saltar de um laço.
Este programa particular é realmente um mess mas é um exemplo bom de porque os escritores do software estão tentando eliminar tanto quanto possível o uso da indicação goto. O único lugar neste programa onde é razoável usar o goto está, onde o programa salta dos três laços aninhados em um salto. Neste caso seria rather messy ajustar acima uma variável e saltar sucessivamente fora de cada um dos três laços aninhados mas uma indicação goto começa-o fora de todos os três em uma maneira muito concisa.
Algumas pessoas dizem que a indicação goto deve nunca ser usada sob todas as circunstâncias, mas este é pensar ocupado narrow. Se houver um lugar onde uma vontade goto faça claramente um fluxo mais puro do controle do que alguma outra construção, sensação livre usá-la, entretanto, como está no descanso do programa em seu monitor. Deixar-nos ver o exemplo:
#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;
/* a seguinte seção é a única seção com um goto useable */
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");
/* esta é a extremidade da seção com uma indicação goto useable */
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;
}
Deixar-nos ver os resultados indicados
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. |
|