Outils pour utilisateurs

Outils du site


issue98:tutoriel_javascript

In Part 2, we covered JavaScript Objects and Functions, and introduced the Questions and Solutions section; in this part we are going further and we will do some basic programming on the server side using node (don't be scared, it will be easy). Node (http://nodejs.org) is a JavaScript runtime environment based on Google Chrome's V8 JavaScript engine. We can think of it like the Java or .NET runtime environment for java or .net code, but this one executes JavaScript and it has very good performance. The installation on any platform can be done using the package managers, since node is available in almost all the package repositories; on Ubuntu we will go with the traditional: sudo apt-get install nodejs After the installation, we can validate if everything was installed correctly using the: nodejs -v The result of this command should display something like v0.12.4 (this is the latest version of node at the publication date).

Dans la partie 2 de la série, nous avons traité des Objets et Fonctions Javascript, et présenté la section Questions et Solutions ; dans cet article, nous allons poursuivre en faisant un peu de programmation de base, côté serveur, en utilisant node (pas de panique, ce sera facile).

Node (http://nodejs.org) est un environnement d'exécution Javascript basé sur le moteur Javascript V8 de Google Chrome. Nous pouvons le voir comme l'environnement d'exécution de Java ou .NET pour le code java ou .net, mais celui-ci exécute Javascript et sa performance est très bonne.

L'installation sur toute plateforme peut être faite en utilisant un gestionnaire de paquets, car node est disponible dans pratiquement tous les dépôts logiciels ; sous Ubuntu, nous y allons avec le traditionnel :

sudo apt-get install nodejs

Après installation, nous pouvons vérifier que tout est bien en place avec :

nodejs -v

Le résultat de cette commande devrait afficher quelque chose comme v0.12.4 (c'est la dernière version à la date de cette publication).

We will write a lotto number generator application which is capable of generating random numbers between one and 90, it will generate five numbers which we could play on lotto later :-) Shown above we have the source code. In the first line we are writing a message to the console, notifying the users about what the program will do. Next we define an array called predefinedNumbers. Arrays in JavaScript can be created using the index [] operator or using the new Array(item1, item2, item3) constructor. The predefinedNumbers will store the initial numbers from one till 90, and this will be the array which we will select the generated numbers from. The next line of code is the for cycle which fills the predefinedNumbers array with the numbers from one to 90. The for cycle in JavaScript is very similar to other for cycles which we can find in C-Syntax based languages. After prefilling the numbers, we log a message (Initialized the set of numbers). Then we create a new empty array (lottoNumbers) which will hold the results. After this comes the most complex part of the program, the generation of random numbers (shown right). We have a for cycle which has five iterations, because we want to generate five lotto numbers. We create two temporary variables, isCorrectNumber is a flag which will signal if the number we generated was generated before or not, and we will use this to generate numbers till these are not correct. The other variable is selectedNumber, this will hold the selected (generated) number which is selected based on the selectedNumberIndex variable from the predefinedNumbers array. The calculation of selectedNumberIndex seems a little odd, but lets analyze it. We say the selectedNumberIndex should be equal to a number which is generated Math.random() method, is multiplied by 1000, we take the mathematical floor of the value and calculate the remainder when divided by 90 (ie, 0-89).

Nous allons écrire une application de génération de nombre du loto, qui soit capable de générer des nombres aléatoires entre 1 et 90 ; il générera cinq nombres permettant ensuite de jouer au loto :-).

Le code source est présenté ci-dessus.

À la première ligne, nous avons écrit un message pour la console, indiquant aux utilisateurs ce que fera le programme. Ensuite, nous définissons une matrice appelée predefinedNumbers. Dans Javascript, les matrices peuvent être créées en utilisant l'opérateur d'index [] ou en utilisant le nouveau constructeur Array(item1, item2, item3) (Matrice(article1, article2, article3)). Initialement, predefinedNumbers va stocker les nombres de 1 à 90 et les nombres générés seront sélectionnés à partir de cette matrice.

La ligne de code suivante est une boucle for qui remplit la matrice predefinedNumbers avec les nombres de 1 à 90. La boucle for du Javascript est très proche des boucles for qu'on trouve dans les langages basés sur la syntaxe C. Après ce remplissage initial, nous envoyons un message (Initialized the set of numbers - Le jeu de nombres est initialisé). Puis, nous créons une nouvelle matrice vide (lottoNumbers) qui contiendra les résultats. Après cela, vient la partie la plus compliquée du programme, la génération des nombres aléatoires (ici à droite).

Nous avons une boucle for à cinq itérations, parce que nous voulons générer cinq nombres pour le loto. Nous créons deux variables temporaires. isCorrectNumber est un indicateur qui signalera si le nombre généré a déjà été généré avant ou non, et nous l'utiliserons pour générer des nombres tant qu'ils ne seront pas correct. L'autre variable est selectedNumber qui contiendra le nombre sélectionné (généré) depuis la matrice predefinedNumbers sur la base de la variable selectedNumberIndex.

Le calcul de selectedNumberIndex peut paraître un peu bizarre, mais analysons-le. Nous disons que selectedNumberIndex doit être égal à un nombre qui est généré avec la méthode Math.ramdom(), multiplié par 1000, dont on extrait la partie entière pour calculer le reste de la division par 90 (soit un résultat de 0 à 89).

Lets take a concrete example: Math.random() returns 0.7323351332452148, multiply by 1000 will result in 732.3351332452148, we take the floor of this which will be 732, and we take the remainder when divided by 90, which is 12. We use this calculated number (12) as an index to select a number from the predefinedNumbers array and we analyze the selected number, if that was already selected then we set the isCorrectNumber to false, otherwise to true. In case the number we selected from predefinedNumbers was selected before, we restart the process, we generate a new number with Math.random(), multiply, floor, divide by 90, take the reminder, select the number, and check if that is correct or not. When we finished the generation of numbers we write the result to the console. We can run the script from command line by typing in: nodejs lottoGenerator.js or: node lottoGenerator.js I would be happy to hear from you! Please let me know what topics you are interested in.

Prenons un exemple concret : Math.random() retourne la valeur 0,7323351332452148, qui multipliée par 1000 donne 732,3351332452148 ; nous prenons la partie entière, soit 732, et nous calculons le reste de la division par 90, qui est 12.

Nous utilisons le nombre calculé comme un index pour choisir un nombre dans la matrice predefinedNumbers et nous analysons le nombre sélectionné ; s'il a déjà été sélectionné, alors nous positionnons l'indicateur isCorrectNumber à faux, autrement à vrai. Dans le cas où le nombre sélectionné aurait déjà été choisi précédemment, nous recommençons le processus (génération d'un nouveau nombre avec Math.random(), multiplication, partie entière, reste de la division par 90, sélection du nombre) finissant par le contrôle d'un possible choix précédent, ou non. Quand nous avons fini la génération des nombres, nous écrivons le résultat sur la console.

Nous pouvons lancer le script en ligne de commande en tapant :

nodejs lottoGenerator.js

ou :

node lottoGenerator.js

Je serais heureux d'avoir vos retours ! S'il vous plaît, faites-moi connaître les sujets qui vous intéressent.

issue98/tutoriel_javascript.txt · Dernière modification : 2015/07/20 14:07 de auntiee