Types de données

Dans les exemples rencontrés jusque maintenant nous n'avons défini en Javascript que des variables dont la valeur était un nombre. Il est possible de manipuler des variables dont les valeurs sont autres que numériques : des textes, des images, des dates, des sons, etc. Comme cela a déjà été dit on parle alors de types des données. Les opérations qui peuvent être appliquées sur une variable diffèrent selon son type (c'est-à-dire, en Javascript, le type de la valeur à laquelle la variable est liée) .

Un type de données est défini par un ensemble de valeurs et les opérations qui s'appliquent sur ces valeurs.

Les chaînes de caractères (String)

Un type de données fréquemment utilisé en programmation est le type chaîne de caractères car il permet la manipulation de données textuelles. Ce type est appelé String dans la quasi-totalité des langages de programmation, y compris Javascript. On abbréviera souvent la dénomination en chaîne.

La valeur d'une chaîne de caractères est constituée d'une séquence de caractères. Les valeurs sont représentées par la suite des caractères encadrée par des délimiteurs. Ces délimiteurs peuvent en Javascript être des apostrophes ' ou des guillemets ", mais une chaîne commencée par un délimiteur se termine par le même. Les délimiteurs ne font pas partie de la chaîne.

Voici quelques exemples de valeurs possibles pour des chaînes de caractères :

"ceci est une chaine de caractères"
'ceci aussi'
""
"0n peut !_Mettre_! d3s c@r@ctère5 quelc0nqueS !%$^"
'1234'
"Il faut le même délimiteur ' pour finir et commencer une chaîne "   
'   on peut avoir des espaces en début et en fin, l'espace est un caractère !   '

La chaîne vide est le cas particulier de la chaîne qui ne contient aucun caractère.

Manip 1:
Définissez une page HTML qui définit une variable langage dont la valeur est la chaîne de caractères "Javascript" et qui contient le texte J'apprends le javacript. La modification de la valeur de la variable doit modifier le texte.

Les guillemets et les apostrophes peuvent être utilisés indifféremment, ce qui est utile pour les chaînes devant inclure ces caractères ' ou "

 
 " C'est une chaîne de caractères."
 'Ceci est une "chaîne" de caractères.'
On peut également utiliser la barre oblique inverse pour indiquer qu'un guillemet ou une apostrophe doivent être pris pour leur valeur littérale, et non comme délimiteur:
 "Ceci est une \"chaîne\" de caractères."
 
Manip 2:
On souhaite écrire une page qui reprend la fable de Jean de La fontaine intitulé " Le corbeau et le renard" mais avec la possibilité de pouvoir facilement créer des variantes en changeant les noms des animaux.
  1. Faites une recherche pour trouver la fable.
  2. Ecrivez une page HTML de telle manière que deux modifications permettent de modifier les noms.
  3. Testez votre solution.

Quelques manipulations

Les opérations qui s'appliquent sur une donnée dépendent de ce type. Ainsi il est possible de faire sur des chaînes de caractères des manipulation qui n'ont pas de sens avec des nombres. Par exemple les chaînes de caractères dispose d'une propriété length qui permet d'obtenir la longueur d'une chaîne, c'est-à-dire le nombre de caractères qui la compose.

La syntaxe d'utilisation s'appuie sur une notation pointée : si chaine est une chaîne de caractère chaine.length est une expression dont la valeur est la longueur de chaine

Cette propriété n'a cependant aucun sens pour une donnée de type numérique.

Manip 3
Créez une page HTML dans laquelle sont définies deux variables, l'une de type chaîne de caractères, l'autre numérique et qui tente d'afficher la valeur de la propriété length pour chacune de ces variables.
Ques constatez-vous ?

Par ailleurs certaines opérations qui ont un sens sur les nombres en ont un autre avec les chaînes de caractères. C'est le cas de l'opérateur + dont la sémantique change selon le type des données auxquelles on l'applique.
L'opérateur + permet de cocaténer des chaines de caractères, c'est à dire de les mettre "bout à bout".

Manip 4:
  1. Créez une page HTML dans laquelle sont définies deux variables chaine1 et chaine2 de type chaîne de caractères que vous initialiserez et qui affiche le résultat de l'expression chaine1 + chaine2.
  2. Affichez la page plusieurs fois en changeant les valeurs d'initialisation des deux chaines.
  3. Si cela n'a pas encore été fait, faites un test avec des chaines qui ne sont composées que de caractères correspondant à des chiffres. Cela change-t-il la description que vous venez de rédiger ?

Identificateurs et chaines de caractères

Il est très important de bien faire la différence entre identificateurs des variables et chaînes de caractères. S'ils peuvent se ressembler dans leur forme  : une séquence de caractères, les chaînes de caractères se caractérisent par la présence des délimiteurs. Mais la différence principale réside dans ce que réprésente l'un ou l'autre et est notamment visible au niveau de leur évaluation. Ainsi une chaîne de caractères est une expression constante qui s'évalue en elle-même, sa valeur est donc... une chaîne de caractères. Alors qu'un identificateur de variable s'évalue en la valeur associée à la variable : un nombre, une couleur ou même une chaîne de caractères, mais de manière fortuite.

Manip 5:
On considère la séquence de code suivante :
 var exemple = 42;
 
 document.writeln("valeur de la variable exemple : ");
 document.writeln(exemple);
 document.writeln("<br/>");

 document.writeln('valeur de la chaine "exemple" : ');
 document.writeln("exemple");
  document.writeln("<br/>");
 
  1. Qu'affiche cette portion de code (si on la place dans la balise script au sein d'une page HTML).
  2. Testez votre réponse en écrivant et visualisant une telle page.
  3. Modifiez l'initialisation de la variable ainsi :
     var exemple = "un texte"; 
    et reprenez les deux questions précédentes.

Attention, la confusion entre identificateur de variable et chaîne de caractères est une source d'erreur courante chez des débutants en programmation, en particulier lorsque la variable a une valeur de type chaîne.

Les Nombres (Number)

En javascript, les nombres sont en virgule flottante, mais ils peuvent avoir une partie décimale ou non.
S'ils n'ont pas de virgule, ils sont traités comme des entiers en base 10 dans l'intervalle [-2 53 ; 2 53].
La représentation à virgule flottante est composée d'une partie entière et d'une partie décimale séparées par un point ( et non d'une virgule).On peut également utiliser la notation scientifique.

-1000 est un entier.
0 est un entier.
2534 est un entier.
144.006 est un nombre décimal à virgule flottante.
-2.3  est un nombre décimal à virgule flottante.
1.95e-2 est un nombre décimal à virgule flottante en notation scientifique.
Les chaînes peuvent être converties en valeurs numériques au moyen des fonctions parseInt et parseFloat, selon le type de valeur que l'on souhaite obtenir.
Manip 6:
On considère la séquence de code suivante :
  var sNum = "1.2345e3";
 document.writeln("<p>"+parseFloat(sNum)+"</p>");
 document.writeln("<p>"+parseInt(sNum)+"</p>");
 document.writeln("<p>"+parseInt(parseFloat(sNum))+"</p>");
 var fValue=parseFloat("1.45cm");
 document.writeln("<p>"+fValue+"</p>");
 var rValue=parseInt("33.08");
 document.writeln("<p>"+rValue+"</p>");
 

Intégrer ces lignes de code entre deux balises script puis charger la page HTML et observer les résultats obtenus.


Les opérateurs arithmétiques sont les suivants:

          + addition;
          - soustraction;
	  * multiplication;
	  / division;
	  % reste de la division(modulo);
Manip 7:
Créer une page HTML réalisant la somme de deux réels. Les réels seront saisis en utilisant des boîtes de dialogue avec la méthode prompt

Le type boolean (valeur logique)

Le type boolean peut prendre deux valeurs: true(vrai) ou false(faux). Elles ne sont pas placées entre guillemets.
Un chapitre sera consacré ultérieurement au calcul booléen.