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 :

Programme calculatrice GTK+3 Linux.


Sujet :

C

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Programme calculatrice GTK+3 Linux.
    Salut les C,

    je vient de publier sur mon site de programmation mon premier programme C ayant une GUI (GTK+3) pour Linux et j'ai un (gros) problème pour voir si il ne serai pas possible de créer une version Windows, ne serai ce que pour voir le rendus dans Windows.

    Le programme porte le nom bizarre de Ghobdcalc (Graphical Hexadecimal Octal Binar Decimal Calculator) basé sur une library personnelle dont il existe a l'heure actuel que les fichiers de développement disponible dans l'index de mon site.

    Le programme est une calculatrice multibases comme son nom l'indique avec quelques fonctionnalités supplémentaire d'ordre trigonométrique et de génération de feuille de calcule dans divers formats ainsi qu'une fonction de mémorisation de valeurs pour usage ultérieur.

    A noter que le programme n'a pas été baclé ce n'est pas le terme mais je voulais implémentés quelques fonctionnalités supplémentaires, ce que je n'ai put faire par manque de motivation.
    Quelques précisions a ce sujet sont donnés dans le README disponible dans divers formats.

    Je vous invite donc, si le cœurs vous en dit, de voir un peu mon programme.

    Si vous voulez simplement le tester: essayer de le crasher pour voir si une erreur de segmentation se produit.

    Si vous voulez aller plus loin et jeter un coup d'œil au code source, vous pourrez me dire ce que vous en pensez, car en tant qu'autodidacte l'on est livré a soit-même et l'on ne connaît pas forcément les bonnes manières appris dans une école ou centre de formation.

    Si vous doutez de l'exactitude des calcules j'avoue que le plus gros problèmes a été les chiffres a virgules et la précision d'affichage car un:

    1.0002 + 2

    peut facilement se transformer en:

    3.00019999999999

    suivant la précision choisis dans un sprintf().

    Si vous doutez de la conversion entre différentes bases visualiser plutôt la library sur laquelle est basé le programme: hobdcalc.


    Après sachez donc que si ça ne vous intéresse pas je le comprendrai parfaitement, mais je préfère de loin des insultes ou critiques sévères que l'indifférence si vous avez choisis de voir et que vous avez quelques chose a dire.
    Je ne sais si la publicité est admise dans un forum d'entre aide mais l'on apprend de ses erreurs et surtout des autres encore plus en tant qu'autodidacte et c'est dans ce but que je poste, pour apprendre.

    PS: Si quelque chose vous gêne dans le format de fichier: paquetage deb il existe un tarball du programme dans l'index de mon site.

    Comme dit au-dessus je suis ouvert a toutes formes de critiques donc je vais commencer:
    -) Je n'ai pas commenter les callback de la GUI (habitude que j'ai prise en python) car je pense que la GUI va de soit si ont la connaît.

    PS: je me suis casser les dents 2 fois avant de réussir le programme: une première fois avec une IHM ncurses et la deuxième en tant que interpréteur calculatrice. Je suis donc content d'avoir réussis cette fois.

    Je vous remercie pour vos avis et réponses éclairées.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    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 189
    Points : 17 141
    Points
    17 141
    Par défaut
    tu sais qu'un nombre à virgule flottante (float ou double) n'est pas précis en base 10, par construction?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Je sais,

    Il faut savoir que:

    type float précision 6 maximale codé sur 4 bytes.
    type double précision 15 maximale codé sur 8 bytes.
    type long double précision 19 maximale codé sur 10 bytes.

    Je pense que le manque d'exactitude vient du codage interne des float, double, long double sous forme de:
    mantisse, exposant, signe.
    Le nombre de bits attribuer a la mantisse et a l'exposant dépendent du type et un bit pour le signe (d'ailleurs je crois que le 10 ième byte du long double ne sert que a stocker le signe).

    L'ordinateur ne peut pas stocker les valeurs exactes selon ce système de codage, mais des valeurs très proches.

    La FPU (Floating-Point Unit) qui sert (servait) a stocker les nombre a virgule est composé de 8 registre de de 80 bits (10 bytes) sur un ordinateur 32 bits.

    Mais actuellement ont joue avec des registres XMM (128 bits) ou YMM (256 bits) sur les machines 64 bits.

    Ont peut stocker plusieurs nombres a virgules a la fois dans un registre:

    -) 4 floats (simple précision.) XMM.
    -) 2 double (double précision.) XMM.

    Et effectuer des opérations simultanément sur plusieurs nombres (Simple Instruction Multiple Data) dans ces registres.

    Mais je pense que calculer en interne sous forme de long double et fournir le résultat sous formes de double est une bonne approche.
    Souvent les calculatrices sont beaucoup plus limitée que la mienne par exemple une précision fixe de %.6f avec un champs d'entrer de chiffre tout aussi limité.
    Ma calculatrice autorise 19 chiffres pour les entrées que ça soit un entier ou un nombre a virgule an base décimale.

    Si l'on a un résultat comme évoquer plus haut:

    3.00019999999999

    avec un sprintf() avec une précision du formateur supérieur a 4 chiffres après la virgule tout rentre dans l'ordre fournissant le résultat:
    3.0002 car c'est arrondis au chiffre supérieur en cascade (la série de 9). Mais je ne prétend nullement que ma calculatrice ne se plante pas pour certaines valeurs, j'ai fait de mon mieux c'est tout.

    Et la plupart des nombres a virgule dans les autres bases sont infinis si l'on cherche le codage exact.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

Discussions similaires

  1. [Ada] Ada et Gtk sous Linux
    Par gos77 dans le forum Ada
    Réponses: 2
    Dernier message: 03/10/2012, 19h43
  2. Programmation C et GTK sous linux
    Par crtx_omar dans le forum GTK+
    Réponses: 9
    Dernier message: 11/02/2008, 11h52
  3. Réponses: 4
    Dernier message: 24/10/2005, 08h36

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