/* Syntaxe de javascript
 * M2105
 */

// Déclarations de variables : le mot clef var.
var x = 0;
var b = true;
var chaine = "Bonjour";

// À noter : les instructions se terminent par un ';'

// Types et opérateurs :
// un seul type numérique : les flottants
x = x + 2 * 3 / 7;

b = ! (true || false) && b;

chaine = chaine + " à tous";

/*********************************
 *       Conditionnelles         *
 *********************************/

// Pas de 'then' mais des accolades.
// la condition entre parenthèses
if (b) {
    x = x+1;
} else {
    x = x-1;
}

/***********************************
 *          Itérations             *
 ***********************************/
// Itérations non bornées
while (b) {
    b = false;
}

// Itérations bornées
for (var i=0; i < 17; i=i+1) {
    // ^^^     ^^^     ^^^
    //  |       |       `- passage à l'itération suivante
    //  |       `--------- condition de sortie de boucle
    //  `----------------- initialisation
    alert(i);
}

/*****************************************
 *           Tableaux (arrays)           *
 *****************************************/
// initialisation
var t = [];

// cases numérotées à partir de 0
t[0] = false;
t[1] = true;
alert(t[0]);
alert(t.length);

// parcours d'un tableau
for (var i=0; i<t.length; i=i+1) {
    //alert(i);
}

/****************************************
 *              Fonctions               *
 ****************************************/
// Définition de fonction
nomDeFonction = function(a, b) {
    //                   ^  ^
    //                   `--`-- paramètres formels
    var x = a+b;
    return x;
}

// Appel de fonction
var z = nomDeFonction(7, 12);

/****************************************
 *       Tableaux associatifs           *
 *           (Hashtables)               *
 ****************************************/
// Déclaration
var d = {};
var dictionnaire = {
    "alpha": 1,
    "beta" : 2,
    "omega": 23,
};

// remplissage
d["true"] = false;
d["alpha"] = "omega";

// accès
var chose = dictionnaire["alpha"];
var truc  = dictionnaire.beta;

// parcours
for (var clef in dictionnaire) {
    alert("Dictionnaire " + clef + " -> " + dictionnaire[clef]);
}