Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec les fonctions

problème avec "return"

Sujet résolu
    26 mai 2006 à 22:02:40

    Bonjours,j'ai un problème avec la création de fonction.Je n'arrive pas à comprendre à quoi sert "return" enfin plutot je n'arrive pas à comprendre qu'est ce qu'il fait.Pouvez vous m'aider svp
    • Partager sur Facebook
    • Partager sur Twitter
    http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
      26 mai 2006 à 22:31:22

      C'est ce que "retourne" la fonction. Quand la fonction s'arrête, elle revoie la valeur précédée de return.
      Exemple:

      // Fonction : son type est le type de ce qu'elle retourne. Ici un int.
      int somme(int a, int b)
      {
      return a+b;
      }

      void main(void)
      {
      int resultat = 0, a = 4, b = 3;
      //on affecte à resultat ce que retourne la fonction somme, soit la some de a et b.
      resultat = somme(a, b);
      printf("%d", &resultat);
      getchar();

      return 0;
      // main n'a pas besoin de retourner une valeur, donc on lui fait renvoyer 0
      }

      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2006 à 22:36:51

        Mais quand on met "return" cela sert a pouvoir utiliser se que "return" renvoie dans une autre fonction?
        • Partager sur Facebook
        • Partager sur Twitter
        http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
          26 mai 2006 à 23:00:32

          En partie.
          En fait return sert à l'origine à terminer la fonction, mais on en profite souvent en meme temps pour lui affecter une valeur.
          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2006 à 23:03:57

            Ok merci
            • Partager sur Facebook
            • Partager sur Twitter
            http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
              27 mai 2006 à 11:59:16

              Donc si j'ai bien compris on pourais toujours ne rien renvoyé c'est sa?
              • Partager sur Facebook
              • Partager sur Twitter
              http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
                27 mai 2006 à 12:02:44

                oui en mettant Void a la place de Int devant la fonction et ne pas mettre de return a la fin
                • Partager sur Facebook
                • Partager sur Twitter
                  27 mai 2006 à 12:22:52

                  Une fonction, en maths, est quelque chose qui transforme un nombre en un autre. On le note :
                  f(x) = 3x+2

                  En C, c'est pareil, sauf qu'on peut utiliser d'autres types que des nombres. Ca donne par exemple :
                  int f(int x)
                  {
                      int resultat = 3*x + 2;
                      return resultat;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 mai 2006 à 14:13:49

                    L'exemple de remram est tout à fait adapté à ta situation et je pense que tu dispose des informations necessaires ;)
                    En général un return sert aussi à indiquer si la fonction a "foiré" ou non.

                    exemple :

                    bool error = 0;

                    void main(void)
                    {
                    error = maFonction();

                    if(error)
                    printf("ça a planté !");

                    else
                    printf("ca marche");
                    }


                    (où maFonction retourne 1 si elle a planté, et 0 si tout s'est bien passé)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mai 2006 à 14:59:48

                      Citation : kidpaddle2

                      void main(void)</code>


                      Pas du C standard.

                      http://mapage.noos.fr/emdel/notes.htm#typemain
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !
                        27 mai 2006 à 17:21:05

                        Excuse j'avais oublié ;)

                        A vrai dire je n'utilise pas le main console donc on a vite fait d'oublier :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 mai 2006 à 20:15:38

                          Alors si j'ai bien tout compris "return" sert à marquer la fin de la fonction et aussi a renvoyer une valeur qui est utilisable dans les autre fonctions c'est sa?
                          • Partager sur Facebook
                          • Partager sur Twitter
                          http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
                            27 mai 2006 à 20:25:26

                            Citation : Ten

                            Alors si j'ai bien tout compris "return" sert à marquer la fin de la fonction et aussi a renvoyer une valeur qui est utilisable dans les autre fonctions c'est sa?


                            ça...

                            Oui. Il est conseillé de n'avoir qu'un seul return par fonction et que celui-ci soit la dernière ligne de la fonction. Le code est plus clair...
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Music only !
                              27 mai 2006 à 21:39:19

                              Ok merci a vous
                              • Partager sur Facebook
                              • Partager sur Twitter
                              http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
                                29 mai 2006 à 10:50:44

                                J'ai encore une question sur les fonction(décidement j'ai rien comprie) : lorsque l'on créer une fonction à quoi servent les paramètres?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
                                  29 mai 2006 à 13:00:40

                                  La plupart des fonctions ont besoin de données pour pouvoir travailler : ceux sont les arguments.
                                  Ils permettent à la fonction d'utiliser les variables qu'on lui envoie. Si on ne lui envoie pas d'arguments, la fonction fait toujours la même chose. Pour que la fonction "s'adapte" au programme, il faut qu'on puisse changer les valeurs qu'elle utilise. Exemple :

                                  //Fonction qui renvoie toujours la même valeur :
                                  int volumeCarre1()
                                  {
                                      int volume = 10 * 10 * 10;
                                      return volume;
                                  }

                                  //Fonction qui "s'adapte" au programme :
                                  int volumeCarre2(int cote)
                                  {
                                      int volume = cote * cote * cote;

                                      return volume;
                                  }

                                  Là, le main pourra appeller la fonction volumeCarre2 en lui envoyant une longueur de coté différente à chaque fois :

                                  int volume_10cm = 0, volume_50cm = 0, volume_100cm  = 0;

                                  volume_10cm = volumeCarre2(10);
                                  volume_50cm = volumeCarre2(50);
                                  volume_100cm = volumeCarre2(100);

                                  on aura volume_10cm = 1 000, volume_50cm = 125 000, volume_100cm = 1 000 000.
                                  J'espère que tu as compris sinon dit ce que tu ne comprend pas.

                                  [EDIT]je modifie les erreurs que l'on me signale plus bas (merci kidpaddle2). Les étourderies me perdront[/EDIT]
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 mai 2006 à 16:55:17

                                    Tu oublies la déclaration de volume au niveau du type :
                                    C'est pas :
                                    int volumeCarre2(int cote)
                                    {
                                        volume = cote * cote * cote;

                                        return volume;
                                    }
                                    mais
                                    int volumeCarre2(int cote)
                                    {
                                        int volume = cote * cote * cote;

                                        return volume;
                                    }


                                    De plus, dans ton cas, tu dois mettre :
                                    volume_10cm = volumeCarre2(10);
                                    volume_50cm = volumeCarre2(50);
                                    volume_100cm = volumeCarre2(100);


                                    Horribles les erreurs d'inattention pas vrai ? :p
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      29 mai 2006 à 18:03:09

                                      Donc les parametres se sont les variable que l'on vas utiliser dans la fonction si j'ai bien comprie
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
                                        29 mai 2006 à 18:13:24

                                        Oui, ceux sont les variables que la fonction va utiliser et dont la valeur peut être changée par le programme en fonction du contexte.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          29 mai 2006 à 18:21:26

                                          Ok merci à vous pour vos explications
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
                                            29 mai 2006 à 18:39:52

                                            N'oublie pas que les paramètres doivent être des pointeurs si tu compte changer la valeur de variables. (les fonctions créent une sorte de copie de celles ci pour travailler)
                                            Tu devrais être au point avec tout cela.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              31 mai 2006 à 15:34:32

                                              Merci à vous
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas

                                              Problème avec les fonctions

                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                              • Editeur
                                              • Markdown