Le rapport goto
C a un rapport goto qui permet à des sauts non structurés d'être faits. Pour employer un rapport goto, vous employez simplement le goto réservé de mot suivi du nom symbolique auquel vous souhaitez sauter. Le nom est alors placé n'importe où dans le programme suivi des deux points. Vous pouvez sauter presque n'importe où dans une fonction, mais vous n'êtes pas autorisés pour sauter dans une boucle, bien qu'on te permette de sauter d'une boucle.
Ce programme particulier est vraiment un désordre mais c'est un bon exemple de pourquoi les auteurs de logiciel essayent d'éliminer l'utilisation du rapport goto autant que possible. Le seul endroit dans ce programme où il est raisonnable d'employer le goto est, où le programme saute des trois boucles nichées dans un saut. Dans ce cas-ci il serait plutôt malpropre pour établir une variable et pour sauter successivement hors de chacune des trois boucles nichées mais un rapport goto vous obtient hors de chacun des trois d'une façon très concise.
Quelques personnes disent que le rapport goto devrait ne jamais être employé dans toutes les circonstances, mais c'est pensée occupée par étroit. S'il y a un endroit où une volonté goto font clairement un écoulement plus ordonné de commande qu'une autre construction, sensation libre pour l'employer, cependant, comme elle est dans le reste du programme sur votre moniteur. Voyons l'exemple :
#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;
/* la section suivante est la seule section avec un goto utilisable */
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");
/* c'est l'extrémité de la section avec un rapport goto utilisable */
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;
}
Voyons les résultats montrés
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. |
|