Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
20 juin 2014 5 20 /06 /juin /2014 07:15

Voici que je viens de passer ma nuit à développer un vrai utilitaire utile: il permet de calculer le nombre de jours entre deux dates mais, surtout, de savoir à quel jour de la semaine correspond une date...

Utile pour ceux dont on pourrait penser qu'ils n'ont pas besoin des mathématiques tels les écrivains et ce quel que soit leur style...

La version .exe (mais zippé) dont le nom est "Calendrier" se trouve au lien suivant: http://1drv.ms/1CVZdnU .

Enfin quelques explications pour les développeurs:

Le noyau du programme, en code source Visual Basic pour "consoles", est:

Calendrier6.JPG

Les Sub joursemaine() et entredeuxdates() font toutes deux appel aux fonctions ecart et joursannee. En développant le tout un par un on a:

Calendrier1.JPG

Calendrier2.JPG

Calendrier3.JPG

Cette Sub recommencer() est un de mes grands classiques.

Calendrier4.JPG

Calendrier5.JPG

Cela n'a pas l'air trop difficile sauf que j'étais parti d'un présupposé de départ faux: celui du jour du 01/01/1583. Et comme j'étais parti d'une donnée fausse j'ai cherché pendant des heures à déboguer un programme qui n'en avait pas besoin, modifiant les lignes de code, remplaçant une simple équation de division par 7 par une boucle comme dans la Sub joursemaine(), cherchant s'il n'y avait pas des arrondis "à la hussarde" qui faisaient déconner mon programme.

Mais finalement j'en suis arrivé à ce résultat.

Néanmoins en cas d'erreurs se présentant, merci de laisser un commentaire avec les données entrées, celles reçues constituant une erreur et celle que l'on devrait recevoir sans erreur...

Mais normalement il ne devrait plus y avoir d'erreurs. Seulement des améliorations quant à la rapidité peuvent être apportées.

--------------------------------------------------------------

AJOUT/MODIFICATION du 22/06/2014:

J'ai amélioré la Sub joursemaine() en la rendant plus rapide (c'est à peine perceptible sur certaines dates) de la manière suivante:

CalendrierAmelioration.JPG

On y voit le remplacement de la boucle d'addition apr la fameuse division par 7 qui était présente avant que je ne mette en tête de déboguer un programme qui n'en avait pas besoin. En effet mon erreur était la suivante:

Le 15/10/1582, premier jour du calendrier grégorien est un Vendredi. Si je fais +16+30+31 j'arrive à 77 jours soit 11 semaines soit également un Vendredi. Oui mais pour la date du 31/12/1582! Le 01/01/1583 est quant à lui un Samedi...

Partager cet article

Repost0

commentaires

Présentation

  • : Town Ground anc. Igor Gorovitch
  • : Créations électroniques d'un dissident du numérique bien intégré. Musique style 90's et (un peu) programmation style années 1980 (80's). Les eighties au cœur.
  • Contact

Recherche