Comme pour les TP précédents, on vous demande de créer un
répertoire tp4 qui contiendra les exercices de cette feuille de TP et de
faire un compte rendu de TP en HTML.
Ce TP sera noté, mais vous pouvez bien sûr demander de l'aide à vos enseignants :
le but de la note est de vous pousser à travailler sérieusement et de vous donner une
idée de votre niveau de compréhension du cours.
Vous devez uploader ce TP (compte-rendu, feuille CSS et un fichier HTML par exercice) sur e-learning avant le
mardi 20 février à 22h. Les retards ne seront
pas autorisés.
Les éléments suivants seront pris en compte dans la note :
- Le code html produit pour le compte-rendu et les exercices passe les tests du validateur W3.org sans erreurs.
- Une feuille de style externe permet une mise en forme élégante du compte-rendu.
- Les réponses formulées dans le compte-rendu sont claires et respectent la syntaxe française (ou éventuellement anglaise pour les étudiants étrangers).
- Lorsque cela est demandé, le code JavaScript produit répond aux attentes en respectant les éventuelles contraintes imposées.
- Le code JS est commenté à bon escient.
- Le code JS produit respectent les règles de forme et de syntaxe usuelles et vues en cours, notamment l'usage des indentations, des accolades `{}`, du point-virgule `;` et des mots-clés `let / const`.
Des pénalités éventuelles seront appliquées si les consignes sont mal respectées, et en cas de
plagiat. La frontière entre le fait de se faire aider et celui de plagier est parfois confuse pour certain-e-s d'entre vous. Le plagiat résulte d'un travail effecué sous la dictée (d'un camarade, de chatGPT, ...) ou reproduit à partir d'un modèle produit par un tiers (travail d'un autre étudiant ou code trouvé sur le web). Les modifications mineures telles que le renommage des variables ou la modification des commentaires ne changent rien à l'acte de plagiat et restent détectables.
Vous êtes encouragés à lire l'intégralité du sujet du TP pour comprendre où on souhaite
que vous alliez.
Attention : Chaque fois que l'on vous demande
de réécrire une fonction ou de remplacer votre code par un nouveau code,
il faudra mettre l'ancien code en commentaire et surtout pas
le supprimer. Sinon, votre chargé de TP ne sera plus en mesure de vérifier que l'ancien
code répondait à la question précédente.
Cet exercice montre comment utiliser les outils de
developpement présents sur les navigateurs, comme la console.
On cherche à faire un damier avec des cases blanches et noires
et la diagonale affichée en marron.
Attention : Chaque fois que l'on souhaitera donner
un style spécifique à tel ou tel élément HTML, on lui donnera une classe on un ID
et on créera le sélecteur CSS correspondant : écrire des informations de
style en dur dans une balise HTML, c'est une méthode de sauvages !
On peut améliorer la
"beauté" du code, et le rendre un peu plus professionnel, en évitant de
passer en paramètre un booléen pour dire s'il faut dessiner ou non la
diagonale.
-
Copiez-collez le document exo2b.html et nommez
exo3.html votre copie.
Ci-dessous, vous effectuerez vos modifications
sur ce nouveau document exo3.html.
-
Faites en sorte que la fonction makeCell
prenne un argument supplémentaire, qui sera la couleur (black, white ou brown) de la case.
Par exemple, si j'appelle makeCell("table-1","brown"),
on dessinera une case de classe "brown", qui aura vocation
à être dessinée en marron comme indiqué dans les informations de style du document.
-
Définissez une fonction color(i,j) qui renvoie la couleur de la case en ligne i et colonne
j d'un damier carré sans cases marron (comme à la question 6 de l'exercice 2).
-
Redéfinissez la fonction makeSquare pour que,
outre l'identifiant du tableau à transformer et la dimension de la grille qu'elle doit
dessiner, le troisième argument que
prend cette fonction soit non plus un booléen qui dira si on doit peindre
(ou non) en marron la diagonale de la grille,
mais une fonction d'affichage qui associera à paire (i,j)
la couleur de la case en ligne i et colonne
j.
Notez que dans cette question, la fonction makeSquare prend en troisième argument une fonction, comme la fonction doItTwice vue en cours.
Par exemple, si j'appelle makeSquare(3, "table-4", color), où color est la fonction de la question 3,
on dessinera 3×3 cases, et la case en ligne 1 et colonne 2 sera de couleur
color(1,2).
-
Définissez enfin une fonction diagonalColor dont le seul
argument est un booléen, et telle que l'appel à
makeSquare(size, id, diagonalColor(true))
transformera la table d'identifiant id en une grille dont la diagonale sera marron, tandis que l'appel à
makeSquare(size, id, diagonalColor(false))
transformera cette table en une grille dont la diagonale n'aura pas de couleur particulière
(par rapport aux autres cases de la grille).
© Université Gustave Eiffel