Goto dans une fonction

Résolu/Fermé
OtaksMaster Messages postés 19 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 1 décembre 2015 - 26 avril 2015 à 19:22
OtaksMaster Messages postés 19 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 1 décembre 2015 - 26 avril 2015 à 20:09
bonjour,
je fais un petit programme et je me demandais si c'était pas un peu dangereux de combiner les fonctions et les labels et gotos plus concrètement je voudrais faire quelque chose du style :
"
fonction1(){
blabla;
goto fonction2;
};

fonction2:
fonction2(){
blabla;
goto fonction3;
};
"

et pendant peut-être un certain nombre de fonctions mais est-ce que ça risquerait pas de lancer fonction après fonction sans jamais les finir ou peut-être que ça les fermerait pas bien bref moi sais pas trop du coup j'demande :D.
merci d'avance.

3 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
26 avril 2015 à 19:51
De base, on évite l'instruction "goto", celle-ci génère un code difficilement lisible.

Dans ton cas, un simple appel à la fonction est requis :
f
onction1(){
blabla;
fonction2();
}; 

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 avril 2015 à 19:56
Bonjour,

De manière générale il faut éviter de mélanger fonctions et goto (voire même bannir le goto tout simplement). Tu pourrais faire directement :

fonction1() { 
    blabla; 
    fonction2(); 
} 
 
fonction2(){ 
    blabla; 
    fonction3(); 
}


"est-ce que ça risquerait pas de lancer fonction après fonction sans jamais les finir ou peut-être que ça les fermerait pas bien"
Le problème n'est pas spécifique au goto, il existe aussi avec les fonctions, on appelle ça de la récursivité croisée (ou récursion mutuelle), si c'est mal géré ça peut planter (erreur de type stack overflow).
Pour éviter ce genre de problème, il faut bien gérer ses cas d'arrêts et/ou mettre en place de la récursion terminale (ce qui est le cas dans tes exemples).
0
OtaksMaster Messages postés 19 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 1 décembre 2015 2
26 avril 2015 à 20:09
ok merci beacoup
0