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 :

Quelques instructions dans ce programme que je ne le comprend pas


Sujet :

C

  1. #1
    Membre régulier
    Femme Profil pro
    Électricité CFO CFA
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Électricité CFO CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Points : 119
    Points
    119
    Par défaut Quelques instructions dans ce programme que je ne le comprend pas
    Bonjour à tous.
    Je suis débutante dans langage C,et il y a des instructions que je ne comprend pas à quoi ça servent.
    J'ai ce programme:
    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>
    float X,Y;
    float somme(float a,float b)
    {
          float c;
          c=a+b;
          return(c);
          }
          void affichage(float d)
          {
               printf("la somme de %f+%f=%f\n",X,Y,d);
          }
    int main(int argc, char *argv[])
    {
      float Z=0.0;
    scanf("%f",&X);
    scanf("%f",&Y);
      Z=somme(X,Y);
      affichage(Z);
      system("PAUSE");	
      return 0;
    }
    Mes questions:
    Est-ce que on peut ignorée cette partie puisque on a déclarer dans le programme principale main.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
          float c;
          c=a+b;
          return(c);
          }
    .
    Et je trouve un erreur dans cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     void affichage(float d)
    .
    parce que on a mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    float c;
          c=a+b;
          return(c);
    .
    donc normalement le variable est c ,non pas d
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     }
          void affichage(float c)
          {
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     }
          void affichage(float d)
          {
    .
    Merci d'avance.
    Cordialement
    قال رسول ألله صلى الله عليه وسلم : " من سلك طريقا يلتمس فيه علما سهل الله له به طريقا إلى الجنة "

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Les variables locales se moquent du nom qu'elles avaient dans la fonction qui appelle.
    Seul importe le nom dans la fonction présente.

    D'ailleurs, il est possible qu'elle n'ait pas de nom du tout dans la fonction appelante:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /*Variables globales */
    float X, Y;
     
    void affichage(float d) /* d est une variable locale. */
    {
    	printf("la somme de %f+%f=%f\n",X,Y,d);
    }
     
    int main(void)
    {
    	X = 4.2;
    	Y = 0.8;
    	affichage(X+Y);
    	return 0;
    }
    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.

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Pour en rajouter sur ce que dit Médinoc, les arguments qui figurent dans l'appel d'une fonction ne sont pas des variables mais des valeurs. Si on met le nom une variable, cela sera compris par "la valeur de la variable".
    De même les fonctions retournent une valeur, pas une variable. Si on retourne le nom d'une variable, cela sera compris par "la valeur de la variable".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    float somme(float a,float b)
    {
          float c;
          c=a+b;
          return(c);
    }
    s'écrit aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    float somme(float a,float b)
    {
          return a+b;
    }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre régulier
    Femme Profil pro
    Électricité CFO CFA
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Électricité CFO CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Points : 119
    Points
    119
    Par défaut
    Salut à tous.

    Merci beaucoup pour vos réponse ,mais franchement je ne rien a compri.
    Comment d est une variable locale,on a pu le nommée c ?Quelle est son interret d'être nommée d différent de c.
    Et pour quoi on a déclarer c puisque on ne la pas utiliser?

    Cordialement.
    قال رسول ألله صلى الله عليه وسلم : " من سلك طريقا يلتمس فيه علما سهل الله له به طريقا إلى الجنة "

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par autoin Voir le message
    Salut à tous.
    ... ,mais franchement je ne rien a compri.
    Comment d est une variable locale,on a pu le nommée c ?Quelle est son interret d'être nommée d différent de c.
    Et pour quoi on a déclarer c puisque on ne la pas utiliser?
    Je crois que tu n'as pas compris ce qui se passe lorsqu'on appelle une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        affichage(Z);
    ...
          void affichage(float d)
          {
               printf("la somme de %f+%f=%f\n",X,Y,d);
          }
    Au moment de l'exécution de affichage(Z), il y a création d'une variable (locale) nommée d qui reçoit la valeur passée en argument lors de l'appel de la fonction (ici la valeur de la variable Z de main).Ensuite, la fonction fait le traitement souhaité sur sa variable d (qui est une copie de Z de main). A la fin de la fonction, la variable d, créee par l'appel à la fonction, est automatiquement détruite.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Tu comprendras peut-être mieux si je change les noms encore plus:
    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
    30
    #include <stdio.h>
    #include <stdlib.h>
     
    float g_X, g_Y;
     
    float somme(float lun, float lautre)
    {
    	float lasomme;
    	lasomme = lun+lautre;
    	return(lasomme);
    }
     
    void affichage(float variableaafficher)
    {
    	printf("la somme de %f+%f=%f\n", g_X, g_Y, variableaafficher);
    }
     
    int main(int argc, char *argv[])
    {
    	float Z=0.0;
     
    	scanf("%f", &g_X);
    	scanf("%f", &g_Y);
     
    	Z=somme(g_X,g_Y);
    	affichage(Z);
     
    	system("PAUSE");	
    	return 0;
    }
    Comme tu le vois, le nom d'une variable locale n'est important que dans la fonction où elle se trouve...
    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
    Membre régulier
    Femme Profil pro
    Électricité CFO CFA
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Électricité CFO CFA
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Points : 119
    Points
    119
    Par défaut
    Salut .

    Merci à tous ,j'ai bien compri maintenant.

    Cordialement.
    قال رسول ألله صلى الله عليه وسلم : " من سلك طريقا يلتمس فيه علما سهل الله له به طريقا إلى الجنة "

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre une pause dans un programme
    Par PNL dans le forum Général Java
    Réponses: 12
    Dernier message: 28/01/2016, 00h54
  2. Erreur dans mon programme que je n'arrive pas à corriger
    Par alex7443 dans le forum Débuter
    Réponses: 3
    Dernier message: 25/03/2009, 14h46
  3. s'amuser dans la programmation en tant que métier ?
    Par Bruno75 dans le forum Etudes
    Réponses: 9
    Dernier message: 02/02/2006, 21h36
  4. [VB.NET]Lancement d'un programme que s'il n'est pas lancé
    Par cyrcroix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2005, 14h05
  5. Commencer dans la programmation mais que choisir ?
    Par Invité dans le forum Débuter
    Réponses: 19
    Dernier message: 21/12/2004, 12h10

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