l'exercice

Parent Previous Next


Présentation de l'exercice


Ce TP sera consacré à un exercice bien particulier : la conversion d'un nombre en toutes lettres. Ainsi, si l'utilisateur entre le nombre « 41 », le script devra retourner ce nombre en toutes lettres : « quarante-et-un ». Ne vous inquiétez pas : vous en êtes parfaitement capables, et nous allons même vous aider un peu avant de vous donner le corrigé !


La marche à suivre



Pour mener à bien votre exercice, voici quelles sont les étapes que votre script devra suivre (vous n'êtes pas obligés de faire comme ça, mais c'est conseillé) :




L'orthographe des nombres



Dans le cas de notre exercice, nous allons employer l'écriture des nombres « à la française », c'est-à-dire la version la plus compliquée… Nous vous conseillons de faire de même, cela vous entraînera plus qu'en utilisant l'écriture belge ou suisse. D'ailleurs, puisque l'écriture des nombres en français est assez tordue, nous vous conseillons d'aller faire un petit tour ici afin de vous remémorer les bases.

Pour information, nous allons employer les règles orthographiques de 1990 (oui, vous lisez bien un cours de programmation !), nous écrirons donc les nombres de la manière suivante : cinq-cent-cinquante-cinq.
Et non pas comme ça : cinq cent cinquante-cinq.

Vu que nous avons déjà reçu pas mal de reproches sur cette manière d'écrire, nous préférons maintenant vous prévenir afin de vous éviter des commentaires inutiles.



À noter que vous n'êtes pas obligés de respecter toutes ces règles orthographiques, ce qui compte c'est que votre code puisse afficher les nombres en toutes lettres, les fautes orthographiques sont secondaires.


Tester et convertir les nombres



Afin que vous puissiez avancer sans trop de problèmes dans la lecture de votre code, il va falloir étudier l'utilisation des fonctions parseInt() et isNaN().

Retour sur la fonction parseInt()



Concernant parseInt(), il s'agit juste d'un approfondissement de son utilisation étant donné que vous savez déjà vous en servir. Cette fonction possède en réalité non pas un mais deux arguments. Le deuxième est très utile dans certains cas, comme celui-ci par exemple :

Code : JavaScript 

1

alert(parseInt('010')); // Affiche : « 8 »


Et là vous constatez que le chiffre affiché n'est pas 10 comme souhaité mais 8 ! Pourquoi ? Tout simplement parce que la fonction parseInt() supporte plusieurs bases arithmétiques, ainsi on peut lui dire que le premier argument est en binaire. La fonction nous retournera alors le nombre en base 10 (notre propre base de calcul, le système décimal) après avoir fait la conversion base 2 (système binaire) base 10 (système décimal). Donc, si nous écrivons :

Code : JavaScript 

1

alert(parseInt('100', 2)); // Affiche : « 4 »



nous obtenons bien le nombre 4 à partir de la base 2, c'est bon !

Mais tout à l'heure le deuxième argument n'était pas spécifié et pourtant on a eu une conversion aberrante, pourquoi ?


Tout simplement parce que si le deuxième argument n'est pas spécifié, la fonction parseInt() va tenter de trouver elle-même la base arithmétique du nombre que vous avez passé en premier argument. Ce comportement est stupide vu que la fonction se trompe très facilement, la preuve : notre premier exemple sans le deuxième argument a interprété notre nombre comme étant en base 8 (système octal) simplement parce que la chaîne de caractères commence par un 0.

Bref, pour convertir correctement notre premier nombre, il nous faut indiquer à parseInt() que ce dernier est en base 10, comme ceci :

Code : JavaScript

1

alert(parseInt('010', 10)); // Affiche « 10 »



Maintenant nous obtenons bien le nombre 10 ! Rappelez-vous bien ce deuxième argument, il vous servira pour le TP et, à n'en pas douter, dans une multitude de problèmes futurs !

La fonction isNaN()



Jusqu'à présent, pour tester si une variable était un nombre, vous utilisiez l'instruction typeof, sauf qu'elle pose problème :

Code : JavaScript 

1

2

3

var test = parseInt('test'); // Contient au final la valeur « NaN »


alert(typeof test); // Affiche « number »



Voilà le problème : notre variable contient la valeur NaN qui signifie Not a Number et pourtant l'instruction typeof nous renvoie « number » en guise de type, c'est assez contradictoire non ? En fait, typeof est limité pour tester les nombres, à la place mieux vaut utiliser la fonctionisNaN() (is Not a Number) :

Code : JavaScript 

1

2

3

var test = parseInt('test'); // Contient au final la valeur « NaN »


alert(isNaN(test)); // Affiche « true »



Pourquoi true ? Tout simplement parce que isNaN() renvoie true quand la variable n'est pas un nombre, et false dans le cas contraire.


Il est temps de se lancer !



Vous voilà maintenant prêts à vous lancer dans l'écriture de votre code. Nous précisons de nouveau que les nombres à convertir vont de 0 à 999, mais rien ne vous empêche de faire plus si le cœur vous en dit. Évitez de faire moins, vous manqueriez une belle occasion de vous entraîner correctement. 


Si vous trouvez ça compliqué, rassurez vous : ça l'est !

Bon courage !


Créé avec HelpNDoc Personal Edition: Création d'aide CHM, PDF, DOC et HTML d'une même source

Site à deux balles