Échauffement

Testez votre compréhension des références et des tableaux en javascript en indiquant ce que fait ce programme (j'ai trouvé cette question dans un examen final de IFT1015):

var myPrint = function (s,t) {
    print(s);
    for (var i=0; i<t.length; ++i)
	print(t[i].join("\t"));	     
    print("---");
};

var change1 = function (nb) {
    nb = 0;
    return nb;
};

var change2 = function (t1,t2) {
    t1[0] = t2[1];
    t1[1] = t2[2];
};

var change3 = function(t1,t2) {
    t1 = t2;
    t1[0] = t2[2];
};

var t1 = [[1,2],[3]];
var t2 = [[8,9],[10,11,12],[13]];

myPrint("t1",t1);
var v = change1(t1[1][0]);
myPrint("apres change1, t1",t1);

change2(t1,t2);
myPrint("apres change2, t1",t1);

change3(t1,t2);
myPrint("apres change3, t1",t1);
myPrint("apres change3, t2",t2);

Pile

Une pile est une structure de données où les données sont récupérées en ordre inverse de leur ajout dans la structure. Ainsi, si on ajoute dans cet ordre 3, 2 et 1 dans une pile, on récupère dans cet ordre 1, 2 et 3. Vous allez dans cet exercice créer un objet Pile. Vous pouvez à l'interne ranger les valeurs spécifiées par l'utilisateur dans un tableau. Voici quelques services que vous pourriez offrir:

  1. empiler une valeur (en sommet de pile)
  2. dépiler la valeur en sommet de pile
  3. vider la pile de ses valeurs
  4. retourner sans la dépiler la valeur en sommet de pile
  5. vérifier si une pile est vide ou non
  6. retourner le nombre de valeurs rangées dans la pile

Vous réfléchirez avant de coder votre solution à la signature de toutes les méthodes que vous allez implémenter. Chaque méthode de votre objet devra être commentée de manière concise mais claire. Vous fournirez un test unitaire mettant en oeuvre chacune des méthodes implémentées.