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 :

la programmation modulaire


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Par défaut la programmation modulaire
    Bonjour,

    Pour un programme qui comporte deux modules ,le premier module contient six fonctions et le deuxième quatres fonctions ,
    je veux utiliser 3 ou plus de modules par exemple pour le module de six fonctions ,je veux les diviser en deux modules ,
    alors comment procéder pour faire tout cela,

    merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Peux-tu préciser ta question ? Qu'entends-tu par module ? des fichiers ? Peux-tu monter exactement ce que tu souhaites faire ?

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Si le sens de ta question est de savoir le nombre d'unité de compilation (de "couples" de fichiers *.cpp / *.h ) que tu peux créer, tu es totalement libre.

    En fonction des besoins, tu peux en effet envisager:
    • de regrouper toutes les déclarations de fonctions dans un seul fichier d'en-tête et leur implémentation dans un seul fichier *.cpp
    • de regrouper toutes les déclarations de fonctions dans un seul fichier d'en-tête et leur implémentation dans plusieurs fichiers *.cpp
    • de placer une déclaration de fonction par fichier d'en-tête et de regrouper toutes les implémentations dans un seul fichier *.cpp
    • de placer une déclaration de fonction par fichier d'en-tête et une implémentation de fonction par fichier *.cpp
    • de regrouper seulement certaines déclarations de fonctions dans un fichier et / ou de regrouper seulement certaines implémentations dans un fichier *.cpp
    Le tout étant, en gros, de respecter un minimum de logique, qui pourrait se traduire par:
    • le fait de veiller à ce que les fonctions (qu'il s'agisse de leur déclaration ou de leur implémentation) soient regroupées de manière cohérente (par exemple, par objectif poursuivi par les différentes fonctions)
    • le fait de trouver une "granularité" qui te permettra de travailler "sereinement"
    • le fait d'éviter autant que possible les dépendances inutiles
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Par défaut programmation modulaire
    voila les differents programme:
    je vois plus ou es le probleme:

    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"dot.h"
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
    void saisir_point(point &p)
    {
        cout << "Tapez l'abscisse du point : "; cin >> p.x;
        cout << "Tapez l'ordonnée du point : "; cin >> p.y;
    }
     
    void afficher_point(point p)
    {
        cout << "Abscisse du point : " << p.x << endl;
        cout << "Ordonnée du point : " << p.y << endl;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #ifndef POINT_H
    #define POINT_H
     
    struct point
    {
        double x,y;
    };
     
    void saisir_point(point &p);
    void afficher_point(point p);
     
    #endif

    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
    #include "fract.h"
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
     void saisie_fract (fract &F)
           {
                cout<< "donnez la valeur de numerateur de la fraction "<<endl;
                cin>>F.N;
                cout<<endl;
                cout<< "donnez la valeur de denominateur de la fraction "<<endl;
                cin>>F.D;
                cout<<endl;
                }
           void affichage_fract (fract F)
           {
                cout<<F.N<<"/"<<F.D<<endl;
                cout<<endl;
                }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef FRACT_H
    #define FRACT_H
     
    struct fract
    {
        double N,D;
    };
     
    void saisie_fract(fract &F);
    void affichage_fract(fract F);
     
     
    #endif
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include "fraction.h"
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
           fract add_fract (fract A,fract B)
           {
                  fract C;
                  C.N=((A.N*B.D)+(B.N*A.D));
                  C.D=A.D*B.D;
                  return (C);
                  } 
           fract diff_fract (fract A,fract B)
           {
                  fract C;
                  C.N=((A.N*B.D)-(B.N*A.D));
                  C.D=A.D*B.D;
                  return (C);
                  }  
           fract pro_fract (fract A,fract B)
           {
                  fract C;
                  C.N=A.N*B.N;
                  C.D=A.D*B.D;
                  return (C);
                  }    
            fract rapp_fract (fract A,fract B)
           {
                  fract C;
                  C.N=A.N*B.D;
                  C.D=A.D*B.N;
                  return (C);
                  } 
                    void reduct_fract(fract F,fract &M)
    { double x,y;
      x=F.N;
      y=F.D;
        while (x!=y)  
        {
        if (x>y)
        x=x-y;
        else 
        y=y-x;
        }
        M.N=F.N/x;
        M.D=F.D/x;
        cout<<"la reduction de la fraction "<<F.N<<"/"<<F.D<<"est:"<< M.N<<"/"<<M.D<<endl; 
    }
    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
    #ifndef FRACT_H
    #define FRACT_H
     
    struct fract
    {
        double N,D;
    };
     
     
    fract add_fract(fract A, fract B);
    fract diff_fract(fract A, fract B);
    fract pro_fract(fract A, fract B);
    fract rapp_fract(fract A, fract B);
    void reduct_fract(fract F,fract &M);
     
    #endif
    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
    #include"point.h"
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
    void distance(point a, point b)
    {
        double dx,dy,d;
        dx = a.x - b.x;
        dy = a.y - b.y;
        d=sqrt( dx*dx + dy*dy );
        cout << "La distance de X à Y est : " << d << endl;
     
    }
     
    void milieu(point a, point b, point &m)
    {
        m.x = (a.x + b.x) /2;
        m.y = (a.y + b.y) /2;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef POINT_H
    #define POINT_H
     
    struct point
    {
        double x,y;
    };
     
    void distance(point a, point b);
    void milieu(point a, point b, point &m);
     
    #endif

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #include "dot.h"
    #include "point.h"
    #include "fract.h"
    #include "fraction.h"
    #include <iostream>
    #include <cmath> 
    using namespace std;
     
     
            int main()
            {
                fract a,b;
                fract add,diff,pro,rapp;
                fract ADD,DIFF,PRO,RAPP;
     
                cout<<" saisie de la fraction F1 "<<endl;
                saisie_fract (a);
                cout<<" saisie de la fraction F2 "<<endl;
                saisie_fract (b);
                 add =add_fract (a,b);
                 diff=diff_fract (a,b);
                 pro =pro_fract (a,b);
                 rapp=rapp_fract (a,b);
     
    cout<<"votre fraction addition vaut   "<<"=";
     
                affichage_fract (add);
                reduct_fract(add,ADD);
    	        cout<< " FIN "<<endl;
     
    cout<<"votre fraction difference vaut   "<<"=";
     
                affichage_fract (diff);
                reduct_fract(diff,DIFF);
    	        cout<< " FIN "<<endl;
     
    cout<<"votre fraction produit vaut   "<<"=";
     
                affichage_fract (pro);
                reduct_fract(pro,PRO);
    	        cout<< " FIN "<<endl;
    cout<<"votre fraction rapport vaut   "<<"=";
     
                affichage_fract (rapp);
                reduct_fract(rapp,RAPP);
    	        cout<< " FIN "<<endl;
     
        point X,Y,Z;
     
     
        cout << "SAISIE DE X" << endl;
        saisir_point(X);
     
        cout << "SAISIE DE Y" << endl;
        saisir_point(Y);
     
    //    distance(X,Y);
     
     
        milieu(X,Y,Z);
        cout << "AFFICHAGE DU POINT Z" << endl;
        afficher_point(Z);
     
     
    system("PAUSE");
    return 0;
    }

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Le principal problème est que tu as deux fichiers qui définissent la structure fract et le symbole préprocesseur FRACT_H...

    Si j'en juge par le code, le premier fichier est très certainement nommé fract.h et l'autre... fraction.h
    Du coup, lors de l'édition de liens, le système "perd la boule", ne sachant pas trop quelle structure fract il s'agit d'utiliser.

    L'idéal serait, très certainement, de fusionner ces deux fichier de telle manière à ce qu'il n'y ai qu'un définition de la structure fract du symbole préprocesseur FRACT_H

    tu pourrait aussi envisager de fusionner les fichiers *.cpp correspondants
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 117
    Par défaut programmation modulaire
    Ce que vous avez dit c est certainement juste,mais moi je veux plus que deux modules c'est pour cela que j'essaye de procéder comme précedemment .bref je veux savoir comment dissocier 2 modules point et fract en plusieurs modules

    merci

Discussions similaires

  1. L'interet de la programmation modulaire.
    Par giggs dans le forum C
    Réponses: 3
    Dernier message: 01/11/2006, 12h35
  2. programmation modulaire en C
    Par lastrecrue dans le forum GTK+ avec C & C++
    Réponses: 11
    Dernier message: 28/06/2006, 21h03
  3. programmation modulair en C
    Par argon dans le forum C
    Réponses: 32
    Dernier message: 26/06/2006, 10h10
  4. programmation modulaire
    Par barbarello dans le forum C++
    Réponses: 2
    Dernier message: 19/02/2006, 13h04
  5. [Projet] Programmation modulaire d'un projet.
    Par loverdose dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/11/2005, 21h59

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