Nous utiliserons le langage Javascript. Il s'agit d'un langage
de programmation qui permet d'ajouter des traitements au sein d'une
page web (au format HTML).
L'utilisation de code dans le langage Javascript au sein d'une
page HTML permet d'obtenir une page dont le contenu (ou du moins une
partie de celui-ci) est calculée par le traitement réalisé en
Javascript. On peut ainsi produire des pages "dynamiques" et
dont le contenu peut par exemple s'adapter à un contexte particulier
qui peut être le résultat de choix de l'utilisateur de la page.
Le code Javascript est interprété par le navigateur, comme
celui-ci interprète le code HTML et la feuille de style CSS. Le
code Javascript doit être placé dans une balise HTML
particulière, la balise script
. La balise ouvrante
contient une information supplémentaire précisant qu'il s'agit de
code Javascript. Une première manière de procéder consiste à placer
le code Javascript directement dans la page HTML, au sein de la
balise script
comme ceci :
<html> ... <body> du code HTML ici <script type="text/Javascript"> ... CODE JAVASCRIPT ICI ... </script> du code HTML ici </body> </html>
Cela a pour effet d'alourdir un peu le code HTML écrit mais tout à un coût. De plus ce code n'est "visible" que pour le rédacteur de la page.
Une page HTML peut contenir plusieurs balises de script.
Comme cela a déjà été vu avec le code HTML, l'écriture de code informatique nécessite le respect d'une syntaxe précise. Une partie du travail d'apprentissage d'un langage de programmation consiste donc à en connaître la syntaxe. La bonne utilisation de cette syntaxe afin de produire des codes dont l'exécution aboutit au résultat souhaité est évidemment une seconde partie essentielle de cet apprentissage.
Pour définir (on utilise également le verbe déclarer) une
variable en Javascript il faut utiliser le mot-clé var
suivi de l'identificateur (le nom) de
la variable que l'on souhaite déclarer. Par exemple :
;
qui
conclut l'instruction de déclaration. Il représente le caractère de
"fin de phrase". Même si cela n'est pas obligatoire il est très
vivement conseillé, et presque toujours observé, d'aller à la ligne
après chaque instruction.
var uneVariable;
Les identificateurs doivent respecter certaines règles : ils sont
composés de lettres (il faut éviter les accents), de chiffres, du
caractère dollar ($) et de caractères de soulignement ('_'), sans
espace et ne doivent pas commencer par un chiffre. De plus certains
noms sont interdits car déjà utilisés par le langage, on parle
de noms réservés. C'est par exemple le cas du
mot var
et on comprend bien pourquoi.
Les noms de variables suivants sont donc autorisés :
x y$ x1 laTemperature une_autre_temperature _duree_en_secondes $nomArtiste
temperature
, nomDuJour
ou couleurDAffichage
à t
, n
ou c
. Même si cela implique que le code à écrire est plus
long, tous les programmeurs s'accordent à dire que cela facilite
beaucoup la production et la lecture du code.
Enfin, le langage fait la distinction entre les majuscules et les
minuscules. Les variables d'identificateurs temperature
et Temperature
sont donc différentes.
Utiliser une variable c'est utiliser son identificateur dans une expression. Celui-ci est évalué à la valeur de la variable. Il faut donc attribuer une valeur à la variable. On parle d'initialisation de la variable.
Une variable est un couple (identificateur, valeur). Nous avons pour
l'instant défini l'identificateur mais aucune valeur n'a été
associée. Pour attribuer, ou affecter, une valeur à une
variable on utilise l'opérateur
d'affectation =
. Il s'agit d'un opérateur binaire,
l'opérande de gauche est l'identificateur de la variable dont on fixe
la valeur et l'opérande de droite est une expression dont la valeur
est affectée à la variable.
identificateur = valeur;
Chaque affectation sur une variable modifie sa valeur, la valeur précédente est oubliée.
Il est possible d'affecter une valeur à une variable en même temps que sa déclaration.
//
désignent des
commentaires, le texte qui suit ces lignes est ignoré par le
langage. Les commentaires sont utilisés par le programmeur pour
laisser des "notes" dans le code qu'il a écrit. Ces informations sont
à destination des autres programmeurs (ou lui-même) et sont destinées
à faciliter la compréhension du code écrit. Un commentaire doit donc
être concis, précis et informatif.
Tout bon programmeur se doit de laisser des commentaires dans le
code qu'il produit.
/*
et */
.
var temperature; // définit la variable temperature temperature = 37; // fixe la valeur de temperature à 37 var _duree_en_secondes = 324; // définit la variable et fixe sa valeur à 324 _duree_en_secondes = 238; // modifie la valeur de la variable qui vaut maintenant 238
La partie droite d'une affectation peut en fait être une expression. Cette expression sera évaluée (calculée) et c'est le résultat de cette évaluation qui constituera la valeur affectée à la variable.
var n = 12+5; // la variable n est créée avec la valeur 17 var numero = 10+n; // la variable numero est créée avec la valeur 27 numero = numero+1; // modifie la valeur de numero qui vaut maintenant 28
Pour un premier exemple, nous allons faire très simple en créant et initialisant 2 variables numériques et en affichant dans la page le résultat de leur produit.
Pour pouvoir réaliser l'affichage nous allons utiliser une instruction particulière :
document.writeln(expression);
dont l'exécution produit l'écriture du résultat de l'évaluation
de expression
dans la page HTML à l'endroit où
cette instruction Javascript est placée. Ce code (devenu HTML) est
ensuite interprété par le navigateur pour son affichage.
Il faut donc créer une page HTML dans laquelle on va placer d'une part le code de déclaration des variables :
<script type="text/Javascript"> var nombre1 = 12; var nombre2 = 20; </script>
puis d'autre part le message qui affiche leur produit :
<p> Le résultat du produit est <script type="text/Javascript"> document.writeln(nombre1*nombre2); </script>. </p>
Le résultat du produit de 12 et 20 est 240.On modifiera la feuille de style pour que les valeurs des 2 nombres soient affichées en vert.
nombre1
(et uniquement à cet endroit) 12 par 22.
Une portion de code Javascript délimité par la
balise script
peut contenir plusieurs expressions
Javascript. C'était le cas ci-dessus avec le bloc de déclaration des
deux variables nombre1
et nombre2
. On
parle alors de séquence
d'instructions et ces expressions sont évaluées les unes
après les autres dans leur ordre d'écriture.
Le ;
déjà évoqué est le séparateur entre les
expressions d'une séquence.
Nous commençons à écrire du code et risquons très vite d'être
confrontés au problème des erreurs dans le code, erreurs de syntaxe
notamment. Un des problèmes des programmeurs, en particulier les
débutants, est de savoir trouver ces erreurs.
Heureusement il existe des outils qui facilitent ce travail. Ceux-ci
disposent d'un analyseur syntaxique (comme les validateurs HTML
ou CSS déjà étudiés) capable de trouver les erreurs de syntaxe dans un
code et, le plus souvent, de transmettre un message indiquant où se
trouve l'erreur et quelle en est la cause probable.
Il est important et même indispensable de savoir retrouver les erreurs
et comprendre les messages d'erreur afin de pouvoir corriger le code
en autonomie.
En ce qui nous concerne nous allons utiliser l'outil Firebug pour
retrouver ces erreurs.
<script type="text/Javascript"> document.wrteln(nombre*nombre2); </script>
Une zone s'active en bas de la fenêtre du navigateur. Pour ce premier contact avec Firebug nous allons nous contenter du premier onglet intitulé "Console". Dans cette zone nous trouvons affichés la portion de code Javascript qui pose problème, un message d'erreur en rouge, le nom du fichier contenant l'erreur et le numéro de la ligne dans le fichier qui contient l'erreur.
Le message d'erreur, "nombre is not defined"
, nous indique que l'on
utilise une variable nombre
qui n'est pas définie, et en
effet puisque c'est nombre1
que nous voulions utiliser à
cet endroit.
writeln
). Corrigez et vérifiez que tout est
correct maintenant.
Les messages d'erreur sont hélas parfois moins explicites, c'est pourquoi il faut apprendre à analyser le code... Parfois une seule erreur peut par propagation en générer plusieurs au niveau de l'interprète.
nombre2
en la remplaçant par :
va nombre2 = 20;
nombre1
:
<script type="text/Javascript"> var nombre1; </script>Rechargez la page, que constate-t-on ?
L'affichage de la valeur de nombre1
montre que celle-ci à
une valeur indéfinie (undefined
) ce qui est différent
d'une variable non définie, comme c'était le cas
de nombre
précédemment. C'est subtil mais différent
malgré tout...
On constate que l'affichage de l'évaluation du produit des
deux nombres produit une valeur particulière NaN
(pour
"Not a Number"). Ce résultat indique que l'opération
de multiplication n'a pu être réalisée car la variable nombre1
n'était
pas liée à une valeur numérique.
Les variables, une fois définies, n'existent pour autant pas "partout". Vérifions-le rapidement :
nombre1
et qui en affiche la valeur (afin de
vérifier que la variable est définie). nombre1
mais sans la définir (déclarer) auparavant.
La variable nombre1
est bien définie dans la première
page, mais pas dans la seconde. On dit que
la portée de sa définition est limitée
à la page dans laquelle elle est définie. On dit que sa définition
reste locale à la page qui la définit.
La notion de règles de portée sur les variables existe dans tous les langages, même si elles peuvent varier dans leur forme. Nous aurons l'occasion de voir d'autres règles de portée appliquées par Javascript.
Sans surprise, comme on a pu le constater dans les différentes
activités précédentes, le résultat d'une expression telle
que nombre1*nombre2
par exemple, dépend de la valeur
des variables nombre1
et nombre2
au moment
où l'expression est évaluée.
De même pour qu'une expression ait une valeur, donc du sens, il faut que les variables qui y apparaissent aient été préalablement définies. L'absence de valeur (non initialisation) d'une variable, même définie, pose également problème.
Il est donc indispensable d'avoir en permanence la connaissance des variables définies et de leurs valeurs afin d'écrire des expressions d'une part qui ont un sens et d'autre part qui ont la valeur attendue. On appelle environnement le contexte dans lequel on réalise une évaluation.
Certaines variables ont une portée locale, la valeur d'un environnement est donc définie localement.
On peut affecter une valeur à une variable en utilisant une boîte de dialogue.
La méthode prompt
affiche une boîte de dialogue contenant un message, un champ de texte
et les boutons OK et Annuler.
Elle prend pour paramètre le message ainsi qu'une valeur par défaut pour le champ texte:
Exemple:
var reponse=prompt("Indiquer votre pays d'origine:","France");La valeur de la variable est une chaîne de caractères (objet String).
nombre1
et nombre2
avec des boîtes de dialogues.