LIFAP5 - TP1 : premiers pas en javascript

Un projet de départ vous est fourni, il comprend un fichier LIFAP5-TP1.html qui charge LIFAP5-TP1.js. Le fichier LIFAP5-TP1.js comprend tout l’outillage de base pour la gestion des événements de LIFAP5-TP1.html. Copiez les deux fichiers sur votre compte en faisant clic-droit “Save Link As…”, puis ouvrez LIFAP5-TP1.html dans firefox et éditez LIFAP5-TP1.js avec votre éditeur préféré pour répondre aux exercices suivants. Utilisez les outils de développement (F12) de firefox pour activer la console javascript et mettre au point vos programmes.

Exercice 0 : Tutoriel

  1. Ouvrir la page http://devdocs.io/javascript/ dans une nouvelle fenêtre.

  2. Exécuter les commandes suivantes dans la console pour expliquer ce que fait l’opérateur typeof : typeof "John"; typeof 3.14; typeof NaN; typeof false; typeof [1,2,3,4]; typeof {name:'John', age:34}; typeof new Date(); typeof function () {}; typeof myCar; typeof null; typeof undefined;

  3. Ouvrir le fichier LIFAP5-TP1-equality.js, réfléchir pour prévoir la valeur de retour attendue puis vérifier dans la console. Résumer la différence entre les comparaisons == et ===

  4. Écrire la fonction iterate_array(arr) qui va afficher les éléments du tableau passé en paramètre dans la console. Tester différentes variantes avec :

  1. Définir la fonction fibonacci(n) qui pour n > 1 renvoie un tableau de longueur n contenant les n premiers termes de la suite de Fibonacci, e.g., fibonacci(8) = [0,1,1,2,3,5,8,13]

  2. Définir l’objet my_object qui contient un champ x, un champ y et une méthode do() qui va afficher les valeurs des champs x et y dans la console.

Exercice 1 : 99 Bottles of Beer

  1. Écrire un programme qui génère les paroles de “99 Bottles of Beer” et renvoie une chaîne les contenant. Complétez pour cela la fonction bottles(beers) de LIFAP5-TP1.js.

  2. Analyser la fonction bottles(beers) avec JSHint ou ESLint. Configurer l’outil choisi pour accepter la syntaxe ES6 et autoriser les affichages dans la console.

  3. Redéfinir votre fonction pour utiliser les Template literals

Exercice 2 : fonction range

La fonction range(stop, [start], [step]) prend trois arguments en paramètre et renvoie le tableau des entiers compris entre start (inclus) et stop (exclu) avec un pas de step :

Exemples :

  1. Complétez la fonction range(stop, start, step) de LIFAP5-TP1.js.

  2. Analyser la fonction range(stop, start, step) avec JSHint ou ESLint.

Exercice 3 : calculatrice polonaise inverse

L’exercice consiste à écrire une calculatrice qui évalue des expressions arithmétiques en notation polonaise inverse. La principale fonction à réaliser est evaluate(expr) qui renvoie la valeur de l’expression expr passée en paramètre sous forme d’une chaîne de caractères. L’expression est construite à partir d’entiers et des opérations +, -, * et /.

Par exemple l’expression 5 1 2 + 4 * + 3 -, écrite 5 + ((1 + 2) * 4) - 3 dans la notation infixe usuelle, doit s’évaluer en 14. L’expression vide doit s’évaluer en 0.

Pour simplifier l’exercice, on supposera que les entiers et les opérateurs sont toujours séparés par des espaces dans l’expression fournie en paramètre, ainsi, 1 3 + est une expression valide mais 1 3+ ne l’est pas. De même, on ne gérera pas les erreurs comme la division par zéro où les chaînes invalides.

  1. Complétez la fonction evaluate(expr) de LIFAP5-TP1.js.

  2. Analyser la fonction evaluate(expr) avec JSHint ou ESLint.

Conseils pour l’exercice :