/* Syntaxe de javascript
 * R209
 */

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

// 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
function nomDeLaFonction(a, b) {
    //                   ^  ^
    //                   `--`-- paramètres formels
    var x = a+b
    return x
}

// Appel de fonction
var z = nomDeLaFonction(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])
}