Il y a eu déjà 2 réponses différentes. Je vais y aller de la mienne
1 2 3 4 5 6
| int i, j, k;
for (i = 1; i <= 6; i++)
for (j = 1; j <= 6; j++)
for (k = 1; k <= 6; k++);
printf("Le Diable! Fuyons!\n"); |
Même chose ici, le résultat affiché à l'écran sera le même, mais le traitement sera différent: dans la version orginale, j et k vont souvent jusqu'à 100 (5 fois au moins), alors que dans cette version j et k ne vont jamais jusqu'à 100.
Et d'autres langages offrent encore d'autres solutions (comme le Bourne Shell qui peut quitter "n" niveaux de boucle avec "break n").
Mis à part les solutions humoristiques données, ce code constitue un exemple frappant d'utilisation utile du goto. Mais si on veut élever le niveau à un débat plus philosophique, alors on pourra dire que ce n'est pas l'utilisation ou l'abstention du goto qui sont à privilégier... mais simplement éviter l'extrémisme absolu. Ceux qui sont définitivement contre l'utilisation d'un goto "utile" sont tout aussi néfastes que ceux qui veulent le mettre à toute les sauces (spaghetti).
D'ailleurs, il y a une phrase qui résume bien tout ceci et qui dit: "les bons programmeurs respectent les règles, les programmeurs brillants les transgressent parfois". Soyons brillants...
Partager