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 :

les paramètres [Débutant(e)]


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut les paramètres
    Bonsoir,

    Je trouve vraiment des difficultés de définir les paramètres à attribuer à une fonction ,et je sais bien qu'il n'y est pas fait au hasard .

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    le type  Fonction   (  paramètres );
     
    {
     
    les instructions
     
    }
    et merci

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    J'ai du mal à comprendre ton problème.

    Tu dois transmettre à ta fonction toutes les informations dont elle a besoin.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int addition(int a, int b)
    {
              return a+b;
    }
    Chaque paramètre est séparé par une virgule et est constitué d'un type et d'un nom facultatif si le paramètre n'est pas utilisé dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Type1 fonction(Type1 nom1, Type2)
    {
               return nom1;
    }
    Quand tu veux transmettre des données, tu as deux choix, les passer par :
    - copie ;
    - pointeur ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void fonction(int a)//copie d'un int
    void fonction(int * a)//pointeur sur un int
     
    void fonction(int * a)//copie d'un pointeur sur un int
    void fonction(int ** a)//pointeur de pointeur sur un int
    Les pointeurs seront utilisés quand :
    - tu veux éviter la copie car la variable transmise est "trop grosse" (surtout pour le C++);
    - tu veux modifier la valeur de la variable dans la fonction appelante.

    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
    void foo(int a)
    {
           a++;
    } 
     
    void foo2(int * a)
    {
           (*a)++;
    }
     
    int a = 0;
    foo(a);
    //a vaut 0 car foo reçoit une copie de a;
    foo2(&a);
    //a vaut 1 car on a donné à foo2 un pointeur sur un a.
    On a aussi le mot clé "const" qui va s'appliquer sur l'élément à sa gauche et par défaut à sa droite pour le rendre constant (ou l'inverse j'ai un doute) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const int a; // int constant, on ne peut pas modifier la valeur de a;
    const int * a; //pointeur sur un int constant, on ne peut pas modifier la valeur pointée par a;
    int const * a; //idem précédant
    int * const a; //pointeur constant sur un int, on ne peut pas modifier a mais on peut modifier la valeur pointée par a
    const int * const a; //on ne peut ni modifier la valeur de a ni l'int pointé par a.
    /!\ Les tableaux (ex. int a[X]) sont, quand ils sont passé en paramètres d'une fonction sont équivalents à passer un pointeur (ex. int * a), c'est la seule exception.

    Les pointeurs sont des variables qui contiennent l'adresse d'une autre variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int a = 0;
    int * b; // il doit contenir l'adresse d'un int
    &a; //adresse de la variable a
    b = &a; //b contient l'adresse de la variable a
    *b; //variable pointée par b donc a.
     
    a = 6;
    *b; // vaut 6
    Mais bon, n'importe quel cours/tutoriel de C devrait te dire cela (et sûrement bien mieux que moi).

  3. #3
    Membre régulier Avatar de JulieCarree
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 50
    Points : 94
    Points
    94
    Par défaut
    Bonjour silver4,
    ayant connu le même probleme, enfin je crois;
    quand tu écris une fonction et/ou une procédure:
    a) ex: tu souhaites simplement afficher un message genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void disBonjour (void);
    {
        printf ("Hello world !\n");
    }
    ta fonction n'a besoin d'aucuns paramètres à traiter donc tu mets void en paramètre dans la déclaration de ta foncion et tu l'appelle par b) ex: tu souhaites traiter une variable donc il faut la transmettre à ta fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     void foisDeux (int variable);
    {
        int resultat = variable * 2;
        printf ("variable fois 2 = %d\n", resultat);
    }
    Ta fonction a besoin d'un paramètre a traiter donc tu le mets avec son type en paramètre dans la déclaration de ta foncion et tu l'appelle par ----

    Voila le B.A.BA pour écrire des fonctions simplissimes vu par un autodidacte, les explications de Neckara étant beaucoup plus pertinentes mais peut-être un peu complexes pour débuter.
    Dans l'espoir de pouvoir t'aider, ayant connu les mêmes difficultés lorsque j'ai découvert les fonctions en programmation et que le compilo m'envoyait des messages incompréhensibles .
    "if it quacks like a duck then it's a duck"

  4. #4
    Candidat au Club
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    oui ,exactement passer un argument à une fonction n'est pas fait au hasard ,
    c'est à dire
    une Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int addition(int a);
    {
    int b 
              return a+b;
    }
    Mon compilateur m'affiche une erreur (structurale) des arguments insuffisantes
    pour ma fonction (addition).

    Autrement faire passer une argument à une fonction doit être suffisant ,le problème est encore plus compliqué lorsque ma fonction est plus (grande ) donc il n' a pas une chose déterminante ()???
    à mon avis ().
    est ce qu 'il y a une solution ,désolé je suis débutant et je veux au moins comprendre .

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Mon compilateur m'affiche une erreur (structurale) des arguments insuffisantes
    pour ma fonction (addition).
    Pourrais-tu nous montrer cette erreur ?

    Autrement faire passer une argument à une fonction doit être suffisant ,le problème est encore plus compliqué lorsque ma fonction est plus (grande ) donc il n' a pas une chose déterminante ()???
    à mon avis ().
    est ce qu 'il y a une solution ,désolé je suis débutant et je veux au moins comprendre .
    Je ne comprends absolument pas ce que tu essayes de nous dire.

  6. #6
    Candidat au Club
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Une exemple:

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int addition(int a, int b);
     
    int main(void)
    {
        int result = addition(2, 3);
        printf("Résultat : %d", result);
        return 0;
    }
     
    int addition(int a)
    {
              int b;
        return a+b;
    L'erreur est (conflit de type pour addition ) ,c'est à dire que les arguments attribués à la fonction addition sont insuffisants ()

    Je ne veux pas compliquer les choses ,mais comprendre (me baser suffisamment )!!!.

    la correction est :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int addition(int a, int b);
     
    int main(void)
    {
        int result = addition(2, 3);
        printf("Résultat : %d", result);
        return 0;
    }
     
    int addition(int a, int b)
    {
     
        return a+b;

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonsoir,

    Tu déclares une fonction avec deux paramètres et tu la définies avec un seul paramètre, c'est normal que le compilateur rouspète !

    La déclaration : void mafonction(void); permet de dire au compilateur qu'il existe une fonction nommée "maFonction" qui retourne un void et qui ne prend rien en paramètre.

    Pour la déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void mafonction(void)
    {
         //
    }
    Tu dis au compilateur ce que dois faire ta fonction "maFonction".

    Si la "signature" de la fonction lors de la déclaration n'est pas la même que lors de la définition, le compilateur ne va pas comprendre.

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 62
    Points : 162
    Points
    162
    Par défaut
    Tu cherches du polymorphisme ??

    J'arrive pas à voir le problème non plus =/

  9. #9
    Candidat au Club
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonsoir
    Neckara a compris mon problème ().

  10. #10
    Candidat au Club
    Homme Profil pro
    lycéen
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    comment je peux me renseigner et approfondir à propos de ce sujet (les fonctions) du point de vue structurelle et apprendre la base svp().

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2008
    Messages : 282
    Points : 939
    Points
    939
    Par défaut Réponse "classique"
    Rendu là, tu affirmes avoir besoin de cours/tutoriels. Cela va donc être une réponse classique :
    - En haut de l'écran : menu langages -> item "C" (mais ça, on y est déjà), il ne te restes plus qu'à appuyer sur le bouton "Tutoriels C",
    - Tu mélanges les mots cours/tutoriel, programmation/langage, et "c" sur google. Tu y trouveras des cours de profs de fac ou d'école, éventuellement téléchargeables (ne t'arrêtes pas à la première page de réponse).

    Bonne lecture !
    poke 1024,0; poke 214,214

  12. #12
    Membre régulier Avatar de JulieCarree
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 50
    Points : 94
    Points
    94
    Par défaut
    Bonjour,
    essaie de rentrer "Anne Canteau cours c" dans un moteur de recherche, c'est pas mal, voir mieux que bien, à mon avis.
    Courage silver4
    "if it quacks like a duck then it's a duck"

  13. #13
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Mais je pense pas que le problème soit purement la connaissance du langage ,enfin pour créer de bonne fonction y a qu'un méthode l'expérience et elle s'acquiert que par la pratique et l'observation des autres fonctions (par exemple des fonction de la lib standard , SDL,opengl ect).
    Donc pour ma part si il sait faire des fonction ben qu'il en créer même plusieurs s'il le faut et qu'il s'amuse a les utilisé il remarquera que certaine fonction sont plus facile a manipulé que autre.

Discussions similaires

  1. [Débutant] Récupérer les paramètres d'une routine
    Par nifty dans le forum Assembleur
    Réponses: 5
    Dernier message: 18/04/2005, 14h35
  2. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 11h33
  3. Changer les paramètres régionaux
    Par STEF_1 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2004, 15h39
  4. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  5. Réponses: 4
    Dernier message: 04/07/2003, 19h13

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