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 :

Passage de paramètre à un programme


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 110
    Par défaut Passage de paramètre à un programme
    Bonjour,

    Je viens de commencer l'apprentissage du langage C.
    J'ai une question toute simple. Je voudrais écrire un programme qui s'appelle GetDouble, je lui passe comme paramètre un nombre (réel) et il me retourne son double.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    Salut,
    Il faut que tu fasses une fonction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double getDouble(double r){
         return ...
    }
    Ensuite, tu appels ta fonction dans un main, ect.
    Il ne te reste plus qu'à trouver quoi mettre à la place des ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 110
    Par défaut
    Est-ce que je pourrais faire quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <stdio.h>
    double main(double x)
    {
      return 2*x
    }

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    double getDouble(double r){
         return r*2;
    }
     
    int main(){
    double x=2;
    double Dx=getDouble(x);
    printf("%d", Dx);
    }
    Ou alors tu peux faire rentrer une valeur à l'utilisateur avec un scanf.
    Il vaut mieux créer une fonction à l'extérieur du main et l'appeler après dans le main.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 110
    Par défaut
    Comment appeler ce programme GetDouble à partir d'un autre programme C ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    Pour cela, il vaut mieux que tu fasses des recherches sur la programmation modulaire en C, cela sera d'ailleurs bien mieux expliqué que par moi..

    Désolé.

  7. #7
    Membre émérite
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 335
    Par défaut
    Vu ton niveau en C, le mieux que tu as à faire est de lire un tutoriel en C depuis la première page (tu trouvera la réponse à ta question et aux 36 autres qui arriveront si on te donne une réponse toute cuite). Ça tombe bien, il y en a de très bons sur Développez.

    Aussi, les gens sur le forum sont des humains qui t'aident bénévolement. Un peu de politesse et marquer ce que tu as essayé me semble un minimum.

    Peut être que ce qu'il demandait était de passer un argument au programme C de type double.

    Si c'est le cas, un code de ce style fait l'affaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    double f(double d){
        return 2*d;
    }
    int main(int argc, char** argv) {
        return f(atof(argv[1])); // Atof fait str to float
    }
    Pour appeler ce programme depuis un autre programme C, regarde du coté de la famille de fonction exec (comme execve).

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 110
    Par défaut
    Bonjour,

    Justement dès la lecture des premières pages du tutorial C j'ai commencé à me poser des questions.
    J'ai appris que le programme C est une fonction spéciale qui s'appelle main() alors je le suis posé les questions ci-dessus.

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Nombre pi Voir le message
    J'ai appris que le programme C est une fonction spéciale qui s'appelle main() alors je le suis posé les questions ci-dessus.
    C'est vrai. "main()" est la première fonction appelée par l'exécutable qui démarre. Si pas de "main" alors pas de programme.

    Toutefois cette fonction est un peu figée dans sa définition. Déjà elle ne peut-être que du type "int" (et pas double comme tu as tenté). Et ensuite sa valeur retournée ne peut-être comprise qu'entre 0 et 255 (troncature si ça dépasse). Cette valeur permet de détecter depuis l'OS si le programme s'est bien déroulé (retour 0) ou s'il y a eu un souci (retour autre).
    Et enfin elle ne prend que 0, 1, 2 ou 3 paramètres.
    • Si pas de paramètre, alors pas de paramètre
    • Si un paramètre (traditionnellement on le nomme "argc" pour "arg count") alors c'est le nombre d'arguments passés au programme (un argument est une chaine tapée entre le nom du programme et la touche <return> ce qui permet de rendre le programme paramétrable => ex cat toto => le programme "cat" est appelé avec l'argument "toto" sensé être un nom de fichier => le programme "cat" pourra alors traiter le fichier "toto").
    • Si deux paramètres, alors le second (traditionnellement nommé "argv" pour "arg values") est la liste des arguments. Chaque argument étant une chaine, ça se traduit par un char * et une liste de chaine se traduira alors par un char **). Ainsi argv[1] contient le premier argument, argv[2] le second et etc. Et argv[0] contient le nom du programme lui-même (ainsi le programme se connait).
    • Si trois paramètres, alors le 3° (traditionnellement nommé "envp" pour "environment program") contient les variables de ton environnement (là aussi une liste de chaines donc là aussi un char **)


    Citation Envoyé par Nombre pi Voir le message
    Je voudrais écrire un programme qui s'appelle GetDouble, je lui passe comme paramètre un nombre (réel) et il me retourne son double.
    Le problème vient de ton emploi maladroit du verbe "retourne". Car un programme ne peut retourner qu'un code d'état compris entre 0 et 255. En revanche il peut afficher des trucs, ou bien écrire ces trucs dans un mécanisme de communication (fichier, pipe, socket, ipc, etc etc etc). D'ailleurs la différence entre "afficher "et "écrire" n'existe en fait pas car en réalité quand il affiche, en fait il écrit dans le fichier "écran". Donc pour résumer, un programme ne peut qu'écrire des trucs.
    Donc là tu dois préciser ton besoin...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2006
    Messages : 110
    Par défaut
    Bonjour et merci beaucoup Sve@r pour votre réponse et vos explications si claires et si précises.
    J'en ai appris plus et mieux que d'après le tuto.
    Je vous explique maintenant les raisons qui me poussent à apprendre le langage C.
    Je réalise des développements sur un serveur AS/400 en CL et en COBOL.
    Ces langages étant pauvres j'aimerais alors développer des fonctions en C que j'appellerais à partir de CL ou de COBOL.

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Nombre pi Voir le message
    Je réalise des développements sur un serveur AS/400 en CL et en COBOL.
    Ces langages étant pauvres j'aimerais alors développer des fonctions en C que j'appellerais à partir de CL ou de COBOL.
    Ouch !!! Toi tu fais pas semblant... Es-tu sûr que ce soit possible d'abord ?

    Je viens de trouver ce lien qui en parle. Mais il me semble que ce lien le fait dans l'autre sens (C qui appelle du COBOL).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 477
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouch !!! Toi tu fais pas semblant... Es-tu sûr que ce soit possible d'abord ?
    Salut !
    Techniquement oui, c'est possible. Ma seule expérience de l'AS/400 a duré un mois pendant l'année 2000, sur un modèle « récent » (qui tenait déjà dans une tour format PC et pas dans un appareil qui avait la taille d'un meuble).

    Et effectivement, c'est un des rares ordinateurs « répandus » qui ne s'appuie pas sur le C. À l'époque, on avait justement un spécialiste AS/400 qui était en train d'essayer un compilateur C sur cette même machine.

Discussions similaires

  1. Format verrouillé si passage d'un paramètre au programme
    Par m4k-Hurrican dans le forum AS/400
    Réponses: 4
    Dernier message: 20/02/2017, 11h35
  2. Passages de paramètres à un programme
    Par Elendhil dans le forum C++
    Réponses: 0
    Dernier message: 03/06/2008, 09h47
  3. passage de paramètres à un programme
    Par habasque dans le forum NetBeans
    Réponses: 2
    Dernier message: 07/05/2007, 17h50
  4. Réponses: 4
    Dernier message: 02/05/2007, 16h18
  5. Réponses: 2
    Dernier message: 09/06/2006, 19h34

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