![[LOGO]](css/UGE.png) |
Boucles et fonctions en Javascript |
Comme pour les TPs 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.
Exercice 1 : Affichage de formes dans la console
On cherche à afficher des formes simples dans la console.
- Recopiez la page Web exo1.html dans votre répertoire tp4.
- On souhaite afficher des croix qui formeront un triangle rectangle isocèle.
La fonction triangleRectangle(n) doit permettre d'afficher un tel triangle de côté n.
Par exemple, triangleRectangle(4) permet d'afficher les lignes
.
..
...
....
Remplir le corps de la fonction triangleRectangle de manière adéquate puis la tester avec plusieurs valeurs de n.
- On souhaite maintenant disposer d'un triangle isocèle dont l'axe de symétrie est vertical.
La fonction triangleIsocèle(n) doit permettre d'afficher un tel triangle de hauteur n et de base 2n-1.
Par exemple, triangleIsocèle(4) permet d'afficher les lignes
.
...
.....
.......
Remplir le corps de la fonction triangleIsocèle de manière adéquate puis la tester avec plusieurs valeurs de n.
- On souhaite ensuite disposer d'un rectangle.
La fonction rectangle(a,b) doit permettre d'afficher un tel rectangle de hauteur a et de largeur b, sans compter les cases occupées par les bords du rectangle.
Par exemple, rectangle(4,6) permet d'afficher les lignes
+------+
| |
| |
| |
| |
+------+
Remplir le corps de la fonction rectangle de manière adéquate puis la tester avec plusieurs valeurs de a et b.
- On souhaite enfin disposer d'un carré.
La fonction carré(n) doit permettre d'afficher un tel carré de côté n, sans compter les cases occupées par les bords du carré.
Par exemple, carré(4) permet d'afficher les lignes
+----+
| |
| |
| |
| |
+----+
Remplir le corps de la fonction carré de manière adéquate puis la tester avec plusieurs valeurs de n.
- Le corps de la fonction carré doit prendre au plus une ligne, facile à lire et à comprendre.
Si ce n'est pas le cas, commentez votre code et réécrivez la fonction carré de sorte à satisfaire cette nouvelle contrainte.
-
Dernière mission : on souhaite écrire une variante de la fonction rectangle en utilisant des fonctions ad hoc plutôt que console.log ; cette variante s'appellera rectangle2.
Les fonctions que l'on utilisera, et qui ont été créées uniquement pour les besoins de ce TP, sont :
- print(s), qui permet d'afficher un seul caractère (stocké dans une chaîne de caractères s) dans la console et ne revient pas à la ligne ;
- newLine(), qui permet de revenir à la ligne ;
On n'oubliera pas de revenir à la ligne après avoir affiché la ligne du bas du rectangle.
Attention ! Donner comme argument à la fonction print une chaîne de caractères contenant autre chose qu'un unique caractère déclenchera une erreur.
Attention ! Tenter d'appeler directement la fonction console.log() déclenchera une erreur.
Exercice 2 : Le lièvre et la tortue
Le lièvre et la tortue font la course : la tortue avance souvent, mais peu à chaque fois, tandis que le lièvre avance rarement, mais beaucoup à chaque fois.
On souhaite modéliser leur course en utilisant un
dé à 20 faces :
- On lance le dé, et on note n son résultat ;
- Si n vaut 14 ou moins, c'est la tortue qui avance de n ;
- Si, au contraire, n vaut 15 ou plus, c'est le lièvre qui avance de n.
Le premier qui franchit la ligne d'arrivée a gagné le droit de voir son histoire immortalisée dans une fable de La Fontaine.
- Recopiez la page Web exo2.html dans votre répertoire tp4.
-
Écrire une fonction uniforme(borne) qui prend en argument un entier borne strictement positif et renvoie un entier choisi uniformément au hasard parmi 1, 2, …, borne.
-
Écrire une fonction étape() qui simule un lancer de dé et son effet sur les positions du lièvre et de la tortue :
- elle lance le dé pour obtenir un entier n entre 1 et 20 ;
- elle renvoie un tableau résultat de taille 2, tel que résultat[0] soit l'avancée du lièvre et résultat[1] soit l'avancée de la tortue juste après le lancer de dé :
ainsi, résultat vaut [0,n] si n vaut 14 ou moins, et [n,0] si n vaut 15 ou plus
-
Écrire une fonction course(l) qui simule une course de longueur l entre le lièvre et la tortue, et renvoie "lièvre" si le lièvre a gagné la course, ou "tortue" si la tortue a gagné la course.
-
Organiser 10000 courses de longueur 5000. Parmi le lièvre et la tortue, y en a-t-il un qui semble gagner beaucoup plus souvent que l'autre ?
Pour les amateurs de mathématiques : comment aurait-on pu, ne serait-ce qu'intuitivement, prévoir un tel résultat ?
© Université Gustave Eiffel