Ce projet a été réalisé dans le cadre scolaire où il nous a été demandé d'implémenter une interface web en HTML, CSS, JavaScript pour représenter les grands nombres réels.
Pour ce projet, nous devions être 4 mais pour diverses raisons nous n'étions que 2. On s'est réparti les tâches du mieux qu'on le pouvait. J'ai préféré me mettre sur les fonctions de base comme la soustraction que gérer de manière très théorique et abstraite l'algorithme pur. De plus, l'algorithme était le point fort de mon collègue.
L'interface que nous avons créée contient un champ texte pour récupérer l'expression arithmétique (ex : 10+2) en notation polonaise inverse (ex : 10 2 +).
Le JavaScript gère la logique de l'interface.
L'expression est traitée sous forme de chaine du début (récupération du champ texte) à la fin (affichage du résultat).
Les nombres sont représentés sur 128 bits en notation binaire ce qui nous permet de gérer un certain nombre de réels.
Dans ce cadre, on peut noter que nous avons travaillé avec une vigule fixe (64 bits en partie entière, 64 bits en partie décimale), ce qui nous permet d'avoir une meilleure précision du résultat sur les grands nombres.
Nous avons donc laissé de côté la virgule flottante qui fait des arrondis via la norme IEEE754, ce qui fausse les résultats.
On a utilisé les entiers signés pour gérer les entiers négatifs via la méthode du bit de signe.
C'est une méthode facile à utiliser par rapport à celle du complément à 2.
La méthode du bit de signe utilise le bit de poids fort qui devient négatif et ça donne la valeur absolue du nombre en binaire.
Nous avons eu à faire face aux défis spécifiques des grands réels comme le dépassement de capacité, la perte de précision et l'accumulation des erreurs d'arrondi quand les nombres sont trop grands ou trop petits.
Nous avons implémenté quelques fonctions de base comme l'addition, la soustraction, la multiplication et la division.
Nous devions faire la conversion pour calculer et représenter ces grands nombres réels (saisi et résultat de l'utilisateur en décimal et calcul en binaire).
Nous avons versionné notre code avec Git.
Les compétences mises au profit de ce projet ont été l'HTML, le CSS, le JavaScript et l'algorithme.
Je peux conclure ce projet en notant qu'on pourrait faire des améliorations.
J'ai trouvé ce projet un peu complexe pour 2 personnes. Il nous a fallu nous organiser entre notre temps sur le projet, la compréhension que j'ai trouvé très théorique et abstraite ainsi que la complexité que cela représente.
Voici un aperçu de l'interface.