Page 2 sur 2

Posté : 12 avr. 2008 23:22
par real34
Mick@el a écrit :

Code : Tout sélectionner

int main(void)
{
   if (!machin())
      goto err;

   // Blabla

   if (!truc())
      goto err;

   // Blabla

   if (!bidule())
      goto err;

   printf("Ca marche !\n");
   return 0;

err:
   printf("Oups !\n");
   return -1;
}
On ne va pas troller sur le goto ... mais dans les langages récents les exceptions sont utilisées pour faire ce genre de choses ;)

Le goto sert juste à revenir au niveau ASM dans le cadre d'optimisation d'un programme ... dans la plupart des cas les instructions ifThenElse/for/while reviennent au même, la clarté et facilité de compréhension en plus ! Dans des cas très précis le goto peut être utilisé, mais c'est vraiment des cas très rare. Du coup, je pense sincèrement que ne jamais programmer en utilisant des goto (je vous jure qu'on peut y arriver ! ;) ) est une très bonne habitude qui aboutit dans 99% des cas à un code plus propre et maintenable ...

Ici par exemple pour un traitement des erreurs propres et sans utiliser les exceptions, on pourrait faire :

Code : Tout sélectionner

int main(void)
{
   int err = 0;
   if (!machin()){err = 1;} // On peut remplacer 1 par une constante #define ;)
   else {
      // Blabla
      if (!truc()){err = 2;}
      else {
          // Blabla
          if (!bidule()){err=3;}
          else{
             printf("Ca marche !\n");
          }
       }
     }

     // Ici le traitement des erreurs
     switch err
        case 1 : /* blabla */ break;
        case 2 : /* blabla */ break;
        case 3 : /* blabla */ break;
        default : return 0;
   return -1;
}

Posté : 13 avr. 2008 01:45
par Mick@el
real34 a écrit :
Mick@el a écrit :

Code : Tout sélectionner

int main(void)
{
   if (!machin())
      goto err;

   // Blabla

   if (!truc())
      goto err;

   // Blabla

   if (!bidule())
      goto err;

   printf("Ca marche !\n");
   return 0;

err:
   printf("Oups !\n");
   return -1;
}
On ne va pas troller sur le goto ... mais dans les langages récents les exceptions sont utilisées pour faire ce genre de choses ;)

Le goto sert juste à revenir au niveau ASM dans le cadre d'optimisation d'un programme ... dans la plupart des cas les instructions ifThenElse/for/while reviennent au même, la clarté et facilité de compréhension en plus ! Dans des cas très précis le goto peut être utilisé, mais c'est vraiment des cas très rare. Du coup, je pense sincèrement que ne jamais programmer en utilisant des goto (je vous jure qu'on peut y arriver ! ;) ) est une très bonne habitude qui aboutit dans 99% des cas à un code plus propre et maintenable ...

Ici par exemple pour un traitement des erreurs propres et sans utiliser les exceptions, on pourrait faire :

Code : Tout sélectionner

int main(void)
{
   int err = 0;
   if (!machin()){err = 1;} // On peut remplacer 1 par une constante #define ;)
   else {
      // Blabla
      if (!truc()){err = 2;}
      else {
          // Blabla
          if (!bidule()){err=3;}
          else{
             printf("Ca marche !\n");
          }
       }
     }

     // Ici le traitement des erreurs
     switch err
        case 1 : /* blabla */ break;
        case 2 : /* blabla */ break;
        case 3 : /* blabla */ break;
        default : return 0;
   return -1;
}
Heu, attends, t'as vu le niveau d'indentation que ça fait ?
Et je te parles pas des if (...) { } c'est encore pire

(et pour les exceptions en C ...)

Posté : 13 avr. 2008 18:02
par Mick@el
J'utilise pas argc et argv, donc autant pas les mettre

Posté : 14 avr. 2008 01:14
par GregLand
Dis donc... avant de te lancer dans la programmation, apprends a utiliser Google... :D

Dans le champ de recherche, tapes :
Image

Ce sera déjà un bon début Image