Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 35

programmation modulaire en C++



  1. #1
    corty84

    programmation modulaire en C++


    ------

    Bonjour tout le monde, je suis débutant en programmation C++ et j'entame la programmation modulaire avec un programme très simple pour expérimenter ce concept nouveau pour moi.
    j'ai écrit exactement comme sur le bouquin mais a la compilation j'ai ce message d'erreur:

    obj\debug\valeur o. No such file or directory

    voici les trois fichiers que j'ai écrits:

    Code:
    -----------------------------------------fichier main.cpp----------------------------------------
    
    #include <iostream>
    #include "ajouteDeux.h"
    
    using namespace std;
    
    int main()
    {
        int a(2), b(2);
        cout << "valeur de a : " <<   a << endl;
        cout << "valeur de b : " << b << endl;
        b = ajouteDeux(a);
        cout << "valeur de a : " << a << endl;
        cout << " valeur de b : " << b << endl;
        return 0;
    }
    
    
    ----------------------------------------fichier .h ------------------------------
    
    #ifndef AJOUTEDEUX_H_INCLUDED
    #define AJOUTEDEUX_H_INCLUDED
    
    int ajouteDeux(int);
    
    #endif // AJOUTEDEUX_H_INCLUDED
    
    ------------------------------------- fichier .cpp ------------------------------
    
    #include "ajouteDeux.h"
    
    int ajouteDeux(int nombreRecu)
    {
       int valeur(nombreRecu + 2 );
       return valeur;
    
    --------------------------------------------------------------------------------

    Je ne comprends pas où et pourquoi ça coince, j'ai dû faire une erreur mais pas moyen de l'identifier, pourriez-vous éclairer ma lanterne SVP ?
    Cordialement.
    Merci.

    -----
    Dernière modification par JPL ; 16/01/2022 à 19h50. Motif: ajout de la balise Code (#) pour garder l’indentation

  2. Publicité
  3. #2
    CM63

    Re : programmation modulaire en C++

    Bonjour,

    Dans le source que tu as collé il manque une accolade fermante à la fin, est-ce que c'est juste une erreur de copier-coller?
    Déjà de base.

  4. #3
    umfred

    Re : programmation modulaire en C++

    c'est bien ajouteDeux.h et ajouteDeux.cpp le nom des fichiers .h et .cpp dont tu as copié/collé le code ?

    c'est quoi le but de l'instruction du code ?
    Code:
    int valeur(nombreRecu + 2 );
    le compilateur/linker cherche la définition d'un fonction valeur qu'il ne trouve pas.

    ce ne serait pas plutôt simplement:
    Code:
    int valeur=nombreRecu + 2;

  5. #4
    pm42

    Re : programmation modulaire en C++

    Citation Envoyé par umfred Voir le message
    c'est quoi le but de l'instruction du code ?
    C'est une initialisation de la variable entière valeur avec la syntaxe C++ au lieu de =. Normalement, ça marche très bien même si pour les entiers, flottants, etc, on peut préférer le = en effet.

    Citation Envoyé par umfred Voir le message
    le compilateur/linker cherche la définition d'un fonction valeur qu'il ne trouve pas.
    Je ne pense pas. Le message laisse plutôt penser qu'il cherche un fichier valeur.o ce qui laisserait entendre que le problème n'est pas dans le code mais dans la configuration du projet.

  6. A voir en vidéo sur Futura
  7. #5
    umfred

    Re : programmation modulaire en C++

    Citation Envoyé par pm42 Voir le message
    C'est une initialisation de la variable entière valeur avec la syntaxe C++ au lieu de =. Normalement, ça marche très bien même si pour les entiers, flottants, etc, on peut préférer le = en effet.
    oups, au temps pour moi, je ne connaissais pas cette notation (il faudrait que je regarde un peu les cours récents de c++)

    Je ne pense pas. Le message laisse plutôt penser qu'il cherche un fichier valeur.o ce qui laisserait entendre que le problème n'est pas dans le code mais dans la configuration du projet.
    effectivement, plutôt un fichier valeur.o

    besoin d'un café ce midi ^^

  8. #6
    CM63

    Re : programmation modulaire en C++

    Je pense qu'il ne trouve pas valeur.o parce que la compilation n'a pas marché, et elle n'a pas marché juste parce qu'il manque l'accolade fermante à la fin. Mais attendons que Corty84 revienne.
    Déjà de base.

  9. Publicité
  10. #7
    Bounoume

    Re : programmation modulaire en C++

    néanmoins je pense que, si le compilateur C++ a bien reçu en entrée ces fichiers source manifestement incorrects, il aurait dû envoyer un message du genre 'syntax error....in xxx.....line....xxx./....' dans le flux de sortie. Et ensuite seulement il aurait abandonné sans produire le fichier objet en .o
    ils ne mouraient pas tous, mais tous étaient frappés (les animaux malades de la peste)!

  11. #8
    CM63

    Re : programmation modulaire en C++

    Oui Corti84 nous a donné les messages de l'éditeur de lien mais peut-être pas ceux du compilateur.
    Déjà de base.

  12. #9
    Jack
    Modérateur

    Re : programmation modulaire en C++

    Citation Envoyé par umfred Voir le message
    oups, au temps pour moi, je ne connaissais pas cette notation (il faudrait que je regarde un peu les cours récents de c++)
    Il me semble que cette syntaxe n'est plus recommandée. Actuellement, c'est plutôt :
    Code:
    int valeur{nombreRecu + 2 };
    Mais pour ma part, je continue avec le =.

  13. #10
    corty84

    Re : programmation modulaire en C++

    Bonsoir a tous et merci pour vos réponses.
    pour vous en dire plus j'apprends sur un windows 8.1 avec codeblock comme IDE ( installé en décembre 2021 ), le code est celui du livre " programmez en C++ " de Matthieu Nebra et Matthieu Schaller (2015)
    l'absence de l'accolade fermante est bien une erreur de copier-coller désolé.
    Peut-être que la solution est dans l'un des messages mais étant débutant c'est pas évident à aborder. Peut-être devrais-je essayer avec un autre IDE, mais ça soulève le souci de la portabilité non ? le code est absolument fidèle au livre pour aborder la modularité, et le résultat est frustrant, c'est rien de la dire.
    j'espère que ces quelques infos vous aiderons à comprendre le problème.
    Merci encore pour votre aide.
    Cordialement.

  14. #11
    Jack
    Modérateur

    Re : programmation modulaire en C++

    Tu as peut-être mal configuré Code::Blocks.

    Tu parles de portabilité, mais de quoi? Du code ou de l'IDE?
    S'il s'agit du code, du C++ n'utilisant que la bibliothèque standard sera toujours portable.

    Si tu ne développes que sous Windows, je te conseille Visual Studio qui demande il vrai de la place sur le disque mais qui est incomparablement mieux foutu que C::B.

    Un dernier exemple en date: j'utilisais C::B sous linux avec une Raspberry Pi. Impossible de trouver la cause d'un plantage de mon appli, le pilotage du debugger par C::B étant par moment infoutu de rentrer correctement dans certaines fonctions, voire de rafraichir la valeur de certaines variable.
    Un développement distant avec Visual Studio m'a enfin permis de tracker le bug. Je pense que je vais faire une croix définitivement sur C::B.

    Sinon, pour du C++, il y a également le framework Qt avec Qt Creator comme IDE. Mais on peut aussi développer avec Qt intégré dans Visual Studio, Qt Creator étant fiable mais d'une ergonomie qui m'exaspère personnellement.

  15. #12
    CM63

    Re : programmation modulaire en C++

    Le fait qu'il ne trouve pas le fichier valeurs.o tendrait à prouver qu'il y a une erreur de compilation. N'aurais-tu pas un autre message avant ce message? Le message que tu nous signales concerne l'"édition de liens", l'opération qui se fait après la compilation. Ici, il y aurait une erreur de compilation, telle qu'une erreur de syntaxe, donc la compilation n'a pas pu se faire, donc le fichier vaeurs.o n'a pas pu être créé, donc l'édition de lien ne peut pas se faire. Ton message concerne la deuxième opération, il faudrait retrouver le message concernant la première.
    Déjà de base.

  16. Publicité
  17. #13
    corty84

    Re : programmation modulaire en C++

    ah oui en effet, j'ai le message suivant:
    WARNING: Can't read file's timestamp C:\Users\perso\Desktop\formati on c++\testModularité\valeur.cpp
    si ça peut t'aider CM63.
    Merci

  18. #14
    vgondr98

    Re : programmation modulaire en C++

    Bonjour,
    Il s'agit peut-être d'un problème d'encodage. Cela donne quoi en retirant l'accent à testModularité ?

  19. #15
    CM63

    Re : programmation modulaire en C++

    Citation Envoyé par corty84 Voir le message
    ah oui en effet, j'ai le message suivant:
    WARNING: Can't read file's timestamp C:\Users\perso\Desktop\formati on c++\testModularité\valeur.cpp
    si ça peut t'aider CM63.
    Merci
    Ce message-là est un "warning" donc en principe ce n'est pas bloquant, il prévient juste qu'il ne parvient pas à lire la date d'un fichier ("timestamp").
    N'y a-t-il pas plutôt un message libellé "syntax error" ou "fatale error" qui ferait qu'il ne peut pas terminer la compilation, et donc il ne fait pas l'édition de lien.

    Après si tu l'as pris dans un bouquin ce serait étonnant qu'il y ait une erreur de syntaxe. Il faudrait plutôt regarder du coté du paramétrage de ton IDE.

    Est-ce que tu as la configuration:
    - un fichier main.cpp qui contient ce qu'il y a sous la ligne "---------------- fichier main.cpp ---------------------",
    - un fichier ajouteDeux.h qui contient ce qu'il y a sous la ligne "------------------- fichier .h ------------------",
    - un fichier ajouteDeux.cpp qui contient ce qu'il y a sous la ligne "------------------ fichier .cpp ------------------",

    Si on compilait à la main au lieu d'utiliser l'IDE, on ferait :

    cc -o main.o main.cpp
    cc -o ajouteDeux.o ajouteDeux.cpp

    Ou quelque chose comme ça, et on aurait uniquement les messages d'erreur de compilation. Et ensuite on ferait l'édition de lien en faisant quelque chose comme cela :

    cc main.o ajouteDeux.o -o ajouteDeux

    Et là on aurait les erreurs d'édition de lien. S'il n'y a pas d'erreur, le logiciel généré s'appelle ajouteDeux, tout court, sans extension (le dernier argument de la commande).
    Déjà de base.

  20. #16
    corty84

    Re : programmation modulaire en C++

    je rentre juste du travail, j'ai trouvé un peu plus d'infos dans le "build log":


    -------------- Build: Debug in testModularité (compiler: GNU GCC Compiler)---------------

    WARNING: Can't read file's timestamp: C:\Users\perso\Desktop\formati on c++\testModularité\valeur.cpp
    g++.exe -o bin\Debug\testModularité.exe obj\Debug\ajouteDeux.o obj\Debug\main.o obj\Debug\valeur.o
    g++.exe: error: obj\Debug\valeur.o: No such file or directory
    Process terminated with status 1 (0 minute(s), 0 second(s))
    1 error(s), 1 warning(s) (0 minute(s), 0 second(s))

  21. #17
    corty84

    Re : programmation modulaire en C++

    oui CM63 j'ai bien les trois fichiers que tu cites, j'ai oublié de le dire dans mon précédent message.

  22. #18
    Jack
    Modérateur

    Re : programmation modulaire en C++

    Tu es bien sûr que tous tes fichiers font partie du projet et apparaissent bien dans la rubrique "Source" de ton onglet "Project"?

  23. Publicité
  24. #19
    corty84

    Re : programmation modulaire en C++

    Bonjour Jack, j'ai regardé dans la rubrique "sources" et "projects" et j'ai ça:

    Sources:

    ajouteDeux.cpp
    main.cpp
    valeur.cpp

    Headers:

    ajouteDeux.h

    oui mais là il y a un souci, c'est en l'écrivant qu'un détail me saute aux yeux, est-ce qu'un fichier peut être à la fois en .cpp et en .h ?? ajouteDeux en l'occurance a les deux extensions.

  25. #20
    CM63

    Re : programmation modulaire en C++

    Citation Envoyé par corty84 Voir le message
    est-ce qu'un fichier peut être à la fois en .cpp et en .h ?? ajouteDeux en occurrence a les deux extensions.
    Non seulement il peut mais il doit : dans le .h tu mets les prototypes des routines ou classes utilisées dans les cpp . Et dans les .cpp tu as l'instruction "include ajouteDeux.h"

    Donc apparemment ce serait bon du coté des fichiers source. Ce serait plutôt dans le paramétrage du IDE qu'il y aurait un problème, mais là je ne connais pas.

    Mais , parlons en général, le principe d’un IDE ou d’une make file c’est : « je compile les .cpp dont les .o sont plus anciens ou n’existent pas ». Et là apparemment il n’arrive pas à trouver la date d’un fichier et donc il n’arrive pas à compiler.

    Essaie de modifier tous les .cpp en tapant un caractère puis en l’effaçant, ou en ajoutant une ligne vide, ça va réactualiser les dates des fichiers et peut-être le débloquer. Inutile de faire cela dans le .h, uniquement dans les .cpp .
    Déjà de base.

  26. #21
    Jack
    Modérateur

    Re : programmation modulaire en C++

    je veux bien essayer de mon côté si tu réussis à zipper le dossier contenant le projet. Comme ça risque de ne pas passer en pièce jointe, tu pourrais le déposer sur un site tel que celui-ci : https://wetransfer.com/

  27. #22
    corty84

    Re : programmation modulaire en C++

    je vais essayer CM63, merci.
    le fichier a été zippé et téléchargé sur wetransfert mais il me faut une adresse mail pour l'envoyer apparemment

  28. #23
    corty84

    Re : programmation modulaire en C++

    bon j'ai essayé ce que tu as suggéré CM63 mais ça n'a rien donné, désolé, l'IDE est en cause apparemment.
    Jack, le lien de transfert est le suivant:
    https://we.tl/t-1w1ScTSzG5
    merci
    Dernière modification par corty84 ; 22/01/2022 à 20h59.

  29. #24
    Bounoume

    Re : programmation modulaire en C++

    au passage, une remarque naïve:
    dans la rubrique"sources".... tu es censé avoir déclaré:

    Sources:
    ajouteDeux.cpp
    main.cpp
    valeur.cpp
    Headers:
    ajouteDeux.h


    Le fichier 'valeur.cpp' , existe-t-il? , dans le même répertoire que 'main.cpp' et que 'ajouteDeux.cpp' ? peux-tu en lister le contenu?
    Dernière modification par Bounoume ; 22/01/2022 à 22h04.
    ils ne mouraient pas tous, mais tous étaient frappés (les animaux malades de la peste)!

  30. Publicité
  31. #25
    Jack
    Modérateur

    Re : programmation modulaire en C++

    Citation Envoyé par Bounoume Voir le message
    au passage, une remarque naïve:
    dans la rubrique"sources".... tu es censé avoir déclaré:

    Sources:
    ajouteDeux.cpp
    main.cpp
    valeur.cpp
    Headers:
    ajouteDeux.h


    Le fichier 'valeur.cpp' , existe-t-il? , dans le même répertoire que 'main.cpp' et que 'ajouteDeux.cpp' ? peux-tu en lister le contenu?
    très bien vu: le fichier n'existe pas. En tout cas pas dans le fichier qui a été envoyé, d'où le message d'erreur.
    Dernière modification par Jack ; 22/01/2022 à 23h01.

  32. #26
    CM63

    Re : programmation modulaire en C++

    Et si le système recherche un valeur.o, ne serait-ce pas parce qu'il ne comprend pas cette syntaxe:

    Code:
    int valeur(nombreRecu + 2 );
    Parce que tu aurais dans ce système une valeur ancienne de C++ . Il ne comprend pas qu'on appelle le constructeur de int , il croit qu'on appelle le constructeur d'une classe valeur, il recherche le valeur.o et il ne le trouve pas.

    Essaie la syntaxe suivante:

    Code:
    int valeur;
    valeur = nombreRecu + 2 ;
    Peut-être qu'on peut faire directement :

    Code:
    int valeur = nombreRecu + 2 ;
    Déjà de base.

  33. #27
    Jack
    Modérateur

    Re : programmation modulaire en C++

    Citation Envoyé par CM63 Voir le message
    Et si le système recherche un valeur.o, ne serait-ce pas parce qu'il ne comprend pas cette syntaxe:

    Code:
    int valeur(nombreRecu + 2 );
    Parce que tu aurais dans ce système une valeur ancienne de C++ . Il ne comprend pas qu'on appelle le constructeur de int , il croit qu'on appelle le constructeur d'une classe valeur, il recherche le valeur.o et il ne le trouve pas.
    Je ne pense pas que ce type de confusion puisse se produire:
    - en C++, int n'est pas une classe, donc pas de problème de constructeur
    - valeur ne peut non plus être pris pour une classe, vu la présence de int devant.

    En principe, vu qu'il s'agit d'un C::B récent, le compilateur associé doit l'être également.

    Le problème vient tout bonnement de l'absence de "valeur.cpp", empêchant la génération de "valeur.o" et par conséquent "valeur.exe" (si l'OS est Windows)

  34. #28
    CM63

    Re : programmation modulaire en C++

    Mais quel serait le rôle de ce valeur.cpp, que veux-tu y mettre comme code?
    Déjà de base.

  35. #29
    Jack
    Modérateur

    Re : programmation modulaire en C++

    Ca c'est un autre problème. Mais en l'état, il n'a en effet pas l'air d'apporter grand chose. Il suffit juste de le virer du projet dans ce cas.

  36. #30
    corty84

    Re : programmation modulaire en C++

    bon sang je me suis trompé, valeur cpp est un ancien fichier que j'avais supprimé, j'avais le nom en tête et je l'ai bêtement écrit, vraiment désolé.
    j' ai essayé de réécrire avec la syntaxe que tu as proposée, le message est le même.
    je n'ai donc que:

    main.cpp
    ajouteDeux.cpp
    et:
    ajouteDeux.h

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. calcul modulaire
    Par nioney111 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 07/06/2013, 13h47
  2. Inverse Modulaire et RSA
    Par oignon57 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 01/03/2011, 23h14
  3. programmation modulaire
    Par ensayste dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 05/12/2010, 14h40
  4. Bézout Modulaire
    Par kvf300 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 14/11/2009, 09h44
  5. Arithmètique Modulaire
    Par Haexyrus dans le forum Mathématiques du collège et du lycée
    Réponses: 6
    Dernier message: 27/12/2007, 20h37