IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

addition avec appel à une fonction


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Points : 9
    Points
    9
    Par défaut addition avec appel à une fonction
    Bonjour à tous,
    Voila je doit faire un programme qui additionne 2 nombres mais qui doit faire appel à une fonction.

    Ce que j'ai fait ne fait pas appel à la fonction, j'aimerai donc SVP que vous me donniez quelques astuces pour y arriver.
    --------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
     
     
    {
      int Resultat, Nombre1, Nombre2;                           // On declare les variables Resultat, Nombre1 et Nombre2
     
      printf("Entrez le nombre 1 : ");                          // Demande d'entrer le nombre 1
      scanf("%d", &Nombre1);
      printf("Entrez le nombre 2 : ");                         // Demande d'entrer le nombre 2
      scanf("%d", &Nombre2);
     
     
      Resultat = Nombre1 + Nombre2;                            // Il excute le calcul
     
     
      printf ("%d + %d = %d\n", Nombre1, Nombre2, Resultat);   // Et on affiche l'addition à l'écran
     
      return 0;
     
    }
    -----------------------------------------------------

    Merci à tous

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Voici une solution toute simple : on crée une fonction calcul qui fait l'addition et renvoie le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
     
    /* fonction qui réalise l'opération */
    int calcul(int a, int b) 
    {
        return a + b;
    }
     
    int main(void)
    {
        /* On declare les variables Resultat, Nombre1 et Nombre2 */
        int Resultat, Nombre1, Nombre2; 
     
        /* Demande d'entrer le nombre 1 */
        printf("Entrez le nombre 1 : "); 
        scanf("%d", &Nombre1);
        /* Demande d'entrer le nombre 2 */
        printf("Entrez le nombre 2 : ");
        scanf("%d", &Nombre2);
     
        /* calcul */
        Resultat = calcul(Nombre1, Nombre2);
     
        /* Et on affiche l'addition à l'écran */
        printf ("%d + %d = %d\n", Nombre1, Nombre2, Resultat); 
     
        return 0;
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse.
    mais j'ai quelques questions

    ----- Resultat = calcul(Nombre1, Nombre2);-------------

    quand tu écrit sa, tu demande que pour trouver le "resultat", il doit utiliser la fonction "calcul"?

    je voudrai savoir aussi pourquoi tu as rajouter ----int main (void)---- à la fin de la fonction?

    pourquoi tu as mis --------------return a+b;----------

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Citation Envoyé par TGV6975 Voir le message
    Merci pour ta réponse.
    mais j'ai quelques questions

    ----- Resultat = calcul(Nombre1, Nombre2);-------------

    quand tu écrit sa, tu demande que pour trouver le "resultat", il doit utiliser la fonction "calcul"?
    Non, on demande d'utiliser immédiatement la fonction calcul() avec les valeurs actuelles, puis de stocker le résultat de cet appel dans resultat. Si Nombre1 et Nombre2 sont modifiés par la suite, resultat ne sera pas affecté.

    je voudrai savoir aussi pourquoi tu as rajouter ----int main (void)---- à la fin de la fonction?
    Parce que c'est la forme standard de main() (enfin, une des deux formes standard). En pratique ça ne change rien vu qu'il s'agit là d'une définition et non d'une déclaration, mais ça permet de prendre l'habitude.
    Car dans les déclarations simples en C, int UneFonction(); est différent
    de int UneFonction(void);.

    pourquoi tu as mis --------------return a+b;----------
    Euh... Tu as appris en cours ce qu'était une fonction, non?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    lol
    Oui j'ai bien appris mais j'ai pas très bien compris toute les étapes!!

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Qu'est-ce que tu ne comprends pas dans une fonction aussi petite?
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* fonction qui réalise l'opération */
    int calcul(int a, int b) 
    {
        return a + b;
    }
    Note: Je ne vais pas pouvoir répondre aux prochains message avant un moment, j'ai 1h30 de transports.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Points : 9
    Points
    9
    Par défaut
    Ben je ne comprend pas le rôle de "return a+b"?!

  8. #8
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 334
    Points
    2 334
    Par défaut
    Il va falloir songer a reprendre les bases ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* fonction qui réalise l'opération */
    int calcul(int a, int b) 
    {
        return a + b;
    }
    int calcul(int a, int b)

    int : type de retour de la fonction
    calcul : nom de la fonction
    (int a, int b) : passage des parametre : la fonction calcul prend deux variable de type int.

    return a + b;

    dans l'ordre, on fait a + b, donc on obtient le resultat et ensuite pon execute le return.


    Si ca peut t'aider,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* fonction qui réalise l'opération */
    int calcul(int a, int b) 
    {
        return a + b;
    }
    equivaut strictement a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* fonction qui réalise l'opération */
    int calcul(int a, int b) 
    {
        int Resultat = a + b;
        return Resultat ;
    }
    ou meme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /* fonction qui réalise l'opération */
    int calcul(int a, int b) 
    {
        int Resultat;
        Resultat = a + b;
        return Resultat ;
    }

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 387
    Points : 23 703
    Points
    23 703
    Par défaut
    Citation Envoyé par TGV6975 Voir le message
    quand tu écrit sa, tu demande que pour trouver le "resultat", il doit utiliser la fonction "calcul"?

    je voudrai savoir aussi pourquoi tu as rajouter ----int main (void)---- à la fin de la fonction?

    pourquoi tu as mis --------------return a+b;----------
    je ne comprend pas le rôle de "return a+b"?!
    Est-ce que tu sais ce qu'est − en soi − une fonction ? Avant d'être un outil en informatique, c'est avant tout une entité mathématique dont la valeur est fonction d'un paramètre, que tu lui passes.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         e = 2,718 ...
         π = 3.141 ...
    cos(1) = 0,540 ...
    Dans le cas de cos(1), c'est l'expression entière qui a une valeur, qui peut être éventuellement substituée par sa forme numérique, exactement comme pour les constantes que je cite à côté. Or, pour déterminer la valeur de cette fonction, il faut l'avoir définie au préalable. Si celle-ci est égale à une formule algébrique, alors il faut effectuer le calcul en question. Ça, ce sont des mathématiques du niveau du collège.

    En C, c'est exactement la même chose, sauf que ta fonction n'est pas simplement définie en algèbre, mais à l'aide d'un passage de code entier. Par conséquent, lorsque ta fonction apparaît ailleurs et qu'il faut en déterminer la valeur, alors le travail en cours va être temporairement mis en suspens pour aller exécuter le morceau de code que tu as associé à ta fonction, jusqu'à que celui-ci se décide à renvoyer cette valeur. À ce stade, le traitement reprend là où il avait été interrompu avec le résultat attendu.

    Lorsque tu fais return dans le code d'une fonction, le programme la quitte. Mais si tu t'es retrouvé dans ce programme, c'est que quelque chose cherche à l'évaluer. Il faut donc quitter la fonction avec un résultat, quel qu'il soit, mais de préférence le bon.

    Tu pourrais très bien passer par une étape intermédiaire du style

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int calcul (int a,int b)
    {
        int resultat;
     
        resultat = a + b;
     
        return resultat;
    }

    ... mais cela n'aurait aucun intérêt : autant renvoyer directement « a + b », puisque pour en connaître la valeur, cette expression sera également évualuée, exactement de la même façon.

Discussions similaires

  1. Appeler une fonction avec un tableau en parametre ?
    Par devoluti0n dans le forum C++
    Réponses: 9
    Dernier message: 11/04/2008, 16h21
  2. Réponses: 4
    Dernier message: 24/08/2007, 15h56
  3. [JQUERY] Comment appeler une fonction php avec jquery
    Par popogendarme dans le forum jQuery
    Réponses: 1
    Dernier message: 20/03/2007, 16h07
  4. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo