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 :

Fonction - Notions


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Artiste
    Inscrit en
    Octobre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Artiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2015
    Messages : 30
    Par défaut Fonction - Notions
    Bonjour !,

    Ce sont mes premiers pas... ma question est basique et concerne les valeurs renvoyées dans un p'tit calcul d'une fonction.

    Je n'arrive pas à comprendre pourquoi mes variables a et b ne donnent pas les bons résultats dans la ligne :
    cout << "La valeur renvoyee de " << a << " est : " << b << endl;

    Voici le petit code complet :
    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
     
    #include <iostream>
    using namespace std;
    int renvoie(); // déclaration de la fonction 2
    int b = 0; int a = 0;
    void main()
    {
    	cout << "Deuxieme fonction" << endl;
    	int a = renvoie(); // Appel de la fonction 2
    	cout << "La valeur renvoyee de " << a << " est : " << b << endl;
    }
    int renvoie() // définition de la fonction 2
    {
    	cout << "Taper un chiffre : "; cin >> a;
    	int b = a + 2;
    	return a,b;
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    dans le desordre
    - portee des variables
    - operateur ,
    - une fonction retourne 1 ou 0 valeur, pas 2

    a et b sont globales, c'est mal
    dans saisie tu declares b local, ce qui masque le b global
    l'operateur , est un truc chelou a ne quasiment jamais utiliser, a fortiori pour un debutant, et dans ce cas il retourne a (je crois)
    du coup ton a doit etre bon dans l'affichage, mais ton b ne bougera jamais de 0
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    Artiste
    Inscrit en
    Octobre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Artiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2015
    Messages : 30
    Par défaut
    Coucou Bousk,

    Merci de cette réponse hyper rapide .

    Ok je comprends presque ta réponse... (excuse moi, il y a une semaine je ne savais même pas ce qu'était un IDE par exemple).

    En effet b est toujours = 0.
    a prend la valeur : 4

    Du coup, j'ai encore 2 questions :

    1) b est initialisé localement parce qu'il est initialisé dans la def de la fonction ? c'est ce que tu veux dire ? (j'ai compris pour l'initialisation global).

    2) A quoi sert une fonction, si je peux même pas coder un calcul et renvoyer le résultat ? C'est ce que je voulais faire ici. Il me semblait qu'une fonction avait pour objectif d'alléger le programme. En imaginant que celui-ci comporte beaucoup d'appels à la fonction et que celle-ci (la fonction) soit rempli d'un calcul complexe et long....

    Sinon évidement, le calcul de b peut se faire dans la fonction principale... ça je sais faire

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    rectification, l'opérateur virgule évalue d'abord son opérande gauche, puis son opérande droit, et retourne la valeur de ce dernier.
    Du moins, tant qu'il n'a pas été surchargé.

    Ici, return a,b; est équivalent à (a) ; return b;.

  5. #5
    Membre averti
    Homme Profil pro
    Artiste
    Inscrit en
    Octobre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Artiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2015
    Messages : 30
    Par défaut
    Oups... c'est pas clair
    J'ai oublié de dire : a prend la valeur de 4 si je tape 2, 6 si je tape 4....

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par leternel Voir le message
    rectification, l'opérateur virgule évalue d'abord son opérande gauche, puis son opérande droit, et retourne la valeur de ce dernier.
    Du moins, tant qu'il n'a pas été surchargé.

    Ici, return a,b; est équivalent à (a) ; return b;.
    Ha ben merde, je pensais le contraire^^ (evaluation de droite a gauche, retour du dernier element a gauche - choix arbitraire)

    Citation Envoyé par Zestedelune Voir le message
    Oups... c'est pas clair
    J'ai oublié de dire : a prend la valeur de 4 si je tape 2, 6 si je tape 4....
    Oui puisque tu retournes tout simplement a+2 en fait que tu stockes dans a par retour
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre averti
    Homme Profil pro
    Artiste
    Inscrit en
    Octobre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Artiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2015
    Messages : 30
    Par défaut Sujet clos
    Merci à vous 2, Bousk et Leternel,

    Le code suivant fonctionne même si je suis un peu déçu de ne pas pouvoir mettre ma formule mathématique dans la fonction.

    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
    #include <iostream>
    using namespace std;
    int renvoie(); // déclaration de la fonction 2
    void main()
    {
     
    	cout << "Deuxieme fonction" << endl;
    	int a = renvoie(); // Appel de la fonction 2
    	int b = a + 2;
    	cout << "La valeur renvoyee de " << a << " est : " << b << endl;
    }
    int renvoie() // définition de la fonction 2
    {
    	int a = 2;
    	cout << "Taper un chiffre : "; cin >> a;
    	return a;
    }

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    T'imagines bien que c'est possible, sinon on serait bien embeter depuis le temps.
    http://c.developpez.com/faq/?page=Le...s-d-une-valeur
    Ou bien en retournant une struct.
    En C++ tu peux aussi utiliser une reference (mais je trouve rien dans la FAQ).
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Membre averti
    Homme Profil pro
    Artiste
    Inscrit en
    Octobre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Artiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2015
    Messages : 30
    Par défaut
    Merci Bousk !

    J'aurais du fouiller un peu avant d'ouvrir un sujet. Bon, on va dire que c'était pour me présenter.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction include et notion de temps
    Par renaud26 dans le forum Langage
    Réponses: 1
    Dernier message: 22/05/2007, 17h57
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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