La consommation de nos véhicules est une de nos préoccupation récentes, soit pour l'écologie, soit et surtout pour notre porte feuille, avec les prix du pétrole qui prennent des ailes ces derniers temps, on est bien content de pouvoir savoir combien on consomme et ainsi pouvoir mieux gérer notre conduite.
Je vais donc dans cet article aborder le sujet sous 2 aspects:

  1. Celui pour tout le monde
  2. Celui, plus technique, pour les initiés (ou pas...)
La raison de cette séparation tient dans le fait que pour effectuer les calculs décris dans la première partie, j'ai réaliser ma première application avec interface (en java), et que cet aspect n'est que peu intéressant pour des personnes non initiées.

A-Comment calculer sa consommation?
Calculer une consommation d'essence n'est pas difficile, il suffit de savoir jouer avec les unités. Cette consommation s'exprime en "litre au 100" ou plutôt en "litre pour 100 km" pour être exact.  
Pour la calculer, rien de plus simple:
[Quantité en litre]*100/[Nombre de kilomètres]

Ce calcul s'obtient en faisant une règle de 3 ou un produit en croix, au choix.
Les données à utiliser ne sont pas n'importe lesquels, l'idéal pour gérer une consommation, est de remettre à 0 le compteur de distance à chaque plein afin de voir, au moment où on repasse à la pompe, combien de kilomètres on a parcouru. Si vous n'avez pas de compteur numérique (très anciens véhicules), vous pouvez noter la valeur du compteur totalisant les kilomètres de la voiture au moment du plein et avant le nouveau.
En complément, il est préférable de consommer toute l'essence (dans la limite du raisonnable, la zone rouge n'est pas conseillée...) du réservoir pour avoir des valeurs cohérentes.
A ce moment là, la quantité d'essence que vous allez remettre (en faisant un plein complet) sera la quantité d'essence (en litres) que vous avez consommée durant votre dernier "trajet" (distance totale parcourue avec le plein).
Bien évidemment, certains pourront me dire que cette méthode est dépassée, ce qui ne sera pas faux vue que les voitures modernes avec ordinateur de bord vous donnent toutes les infos concernant votre consommation: consommation moyenne, consommation instantanée, distance parcourue, distance restante,...
L'avantage est de pouvoir très bien gérer sa conduite à l'aide de la consommation instantanée (à regarder avec modération, la route passe avant!), mais malheureusement, les voitures un peu ancienne n'ont pas ces infos.
C'est donc la raison d'être du programme que j'ai réaliser. Celui-ci effectue les calculs suivants:
  1. Consommation moyenne
  2. Tarifs (€/km et km/€)
  3. Distance maximum parcourable
  4. Tous (les 1, 2 et 3 en 1 fois)

Ce programme a été réaliser en java, il est donc nécessaire d'avoir java d'installer sur votre ordinateur pour l'utiliser.(Télécharger Java)
Il suffit de remplir les champs à votre disposition puis d'appuyer sur "calculer" pour obtenir les résultats dans les cases disponibles. Les résultats et valeurs sont conservés quel que soit le mode, bien que les résultats s'effacent si un nouveau, différent, est calculé. Le bouton effacer sert donc à réinitialiser tous les champs.
Ce calculateur vous permet aussi de connaître différents indicateurs comme le prix au kilomètre, qui peut être utile si vous avez à facturer un trajet. Vous pouvez aussi calculer la distance théorique maximum que vous pouvez parcourir avec 1 plein. Ce calcul n'est pas précis, il donne un ordre d'idée car il se base une consommation moyenne fixe, ce qui est très difficile à avoir pour un trajet inconnu.
Pour vous donner des idées de la précision de ce calcul: j'ai fait 429.3 km avec 26.6 litres, ma consommation a été de 6.2 L/100, mon réservoir fait 30L env., je pouvais donc parcourir théoriquement 483 km.
En réalité, il me restait une pastille, qui correspond environ à 3L (30L/10 pastilles), soit 48 km (à 6.2L/100), cela nous mène à 477 km soit un peu moins que celle calculée. Vous comprendrez donc que la distance donnée pour ce calcul n'est pas garantie, je ne pourrais donc être tenu responsable de quoi que ce soit!
B-Aspects Technique
Je ne suis qu'un débutant en programmation, j'apprends le C lors de mes cours d'informatique, mais on est loin d'avoir vu le principal. Toutefois, je voulais créer un petit programme avec un interface, seulement voilà, les interfaces graphiques en C, c'est pas très accessible (à mon goût) aux débutants comme moi. Il me fallait donc trouver quelque chose de plus simple, j'avais connaissance du java et notamment du fait qu'il soit multiplateforme, je me suis donc dit que l'aspect graphique était plus accessible (pas d'API win32 effrayante ^^), visiblement je ne m'étais pas trop trompé. Après quelques tutoriels et le bon choix de logiciel, j'ai pu faire ce que vous voyez plus haut.
Durant cette expérience, je me suis étonné de voir qu'en dehors des principes liés au java, celui-ci avait des similarités intéressantes avec le C. Je ne maîtrise pas la notion d'objet donc j'ai fait au plus facile. Le code est par conséquent très loin d'être parfait! Mon but était d'obtenir une interface utilisateur qui puisse faire fonctionner les calculs, et je dois dire que j'ai trouvé ça relativement accessible. L'interface facilite pas mal la gestion des choix (il suffit que l'utilisateur coche la case, on vérifie qu'elle soit cochée et c'est bon), et le fait de pouvoir, à l'aide d'un simple clique, ajouter un action (du code) à un élément graphique est vraiment appréciable.
On remarquera certains détails:
  • Le code est dans la partie affichage du programme, ce qui est déconseillé normalement
  • Aucune gestion des erreurs n'est effectuée (je songe à la rajouter par contre)
  • La fenêtre n'est pas programmée pour démarrer au milieu de l'écran
  • J'ai choisi d'utiliser l'index pour la liste déroulante, par facilité; mais ce choix ne me paraît pas idéal pour une liste non fixée (ce n'est pas le cas ici).
  • On perd l'avantage du "printf" utilisé en C pour débuter et qui permet d'arrondir les float à n décimale ( %.2f pour 2 décimales), il m'a fallu chercher un autre méthode (mais elle fonctionne).
  • L'interface offre l'avantage de gérer les accents, pas comme la console en C
Pour développer ce programme, j'ai utilisé NetBeans qui permet justement de programmer à la volée l'interface. Au cas où, cher lecteur, vous seriez un débutant en programmation et que vous souhaiteriez vous aussi faire un petit programme avec une interface utilisateur, je vais donner quelques liens. Cependant, je me permet de rappeler que, pour moi, rien ne vaut les explications d'un professeur.
Pour commencer avec les interfaces graphiques, il faut d'abord comprendre quelques concepts, je vous conseil donc le tutoriel "Création interface graphique avec swing: les bases" qui se trouve dans la rubrique java sur developpez.com (site que je vous recommande!).
Vous pouvez éventuellement lire "Penser en Java v2" qui m'a semblé intéressant mais que je n'ai pas pris le temps de lire bien loin.
Les tutoriels de NetBeans sont aussi intéressant, notamment "Designing a Swing GUI in NetBeans IDE" et "Introduction to GUI building" qui m'a permis de comprendre comment faire interagir le code avec l'interface.
Avec plus d'exigence en fonctionnalités, il faut connaître les propriétés de chaque éléments, une petite recherche m'a menée à des "Java Programming Notes" qui m'ont été super utiles, soit pour comprendre comment fonctionnait les éléments, soit pour justement directement trouver les commandes.
Enfin, pour comprendre quelques détails, j'ai utilisé une vidéo youtube qui reprend un peu certains principes utilisés dans mon programme (en fait c'est plutôt l'inverse, mais bon ^^') pour voir comment tout ça se mettait en place; la vidéo n'est réellement intéressant qu'à partir de 5:45.
Je pense qu'avec tout ça, si vous avez quelques connaissances en C, vous devriez pouvoir initier quelques projet avec un interface basique bien que c'est un peu comme faire passer la charrue avant les bœufs, je dois l'avouer!
Si vous remarquez des bugs dans le programme, n'hésitez pas à laisser un commentaire. C'est aussi valable si vous avez des questions autres! :-)