TD 1
Plus ou moins
Un jeu, son arbre, et le code qui va avec
Partie 1
Le jeu
Les règles
- L’ordinateur choisit un nombre entre 1 et 100.
- Le joueur a 6 essais pour le deviner.
- À chaque essai, l’ordinateur indique s’il faut proposer plus grand ou plus petit.
À vous de jouer
Tous ensemble
Faisons deux ou trois parties : une gagnée, une perdue.
- La classe propose un nombre, on le saisit.
- On lit la réponse de l’ordinateur, et on recommence.
Notez au passage tous les messages différents que le jeu sait afficher.
Partie 2
Exercice 1
Quel message dois-je afficher au joueur ?
Plus grand !
Plus petit !
Gagné !
Perdu !
Attention, c’est un programme
- Aucune intervention humaine entre le point d’entrée de l’arbre et les solutions.
- L’arbre répond pour une tentative du joueur.
- Si le joueur gagne en 4 essais, l’arbre est joué 4 fois en entier.
À vous
Dessinez l’arbre qui répond à la question, avec ses quatre actions.
Au tableau
Chacun son tour
- Un premier élève écrit le problème principal et les quatre actions.
- Un deuxième ajoute la condition qu’il pose en premier.
- Les suivants complètent, une condition à la fois.
- On termine en rejouant une partie complète sur l’arbre du tableau.
Quelque chose à retenir de cet exercice ?
Cherchons ensemble
- Par quoi avez-vous commencé pour dessiner votre arbre ?
- Combien de fois l’arbre est-il joué dans une partie de six essais ?
- Aviez-vous tous le même arbre que votre voisin ?
Partie 3
Exercice 2
Le même jeu, écrit en JavaScript
/* Quel message dois-je afficher ? */
function getLabel(essai) {
if (nbEssai >= 6) {
return 'Perdu !';
}
if (essai === hasard) {
return 'Gagné !';
}
if (essai < hasard) {
return 'Plus grand !';
}
return 'Plus petit !';
}
Chaque « if » est une condition, chaque « return » une action.
Lire le code comme un arbre
À vous
Dessinez l’arbre qui correspond exactement à ce code, sans regarder le vôtre.
Comparez ensuite les deux arbres, condition par condition. Une différence change le résultat du jeu. Laquelle, et dans quel cas ?
Au tableau
Ensemble
- On dessine l’arbre du code à côté de celui de l’exercice 1.
- On les superpose du regard, condition par condition.
- On cherche une partie où les deux arbres ne disent pas la même chose.
La différence
- Le code teste le nombre d’essais avant de vérifier si le joueur a trouvé.
- Votre arbre pose « Est-ce le bon nombre ? » en premier.
Un joueur qui devine le bon nombre à son sixième essai reçoit « Perdu ! ».
On peut le vérifier tout de suite sur la démo.
Le code corrigé
/* Quel message dois-je afficher ? */
function getLabel(essai) {
if (essai === hasard) {
return 'Gagné !';
}
if (nbEssai >= 6) {
return 'Perdu !';
}
if (essai < hasard) {
return 'Plus grand !';
}
return 'Plus petit !';
}
Deux conditions échangées, et le jeu devient juste.
Ce que dit cet exercice
- L’ordre des conditions change le résultat. Deux arbres avec les mêmes losanges ne disent pas la même chose.
- Un arbre juste dans 99 % des cas reste un arbre faux.
- Un programme se lit comme un arbre, et un arbre s’écrit presque comme un programme.
Partie 4
Exercice 3
Une variante
Le jeu affiche « Chaud ! » lorsque le nombre proposé est à moins de 5 du nombre secret.
À vous
Modifiez votre arbre pour tenir compte de cette règle.
Un seul losange suffit : où le placer ?
Au tableau
Ensemble
- Quelqu’un vient glisser le nouveau losange dans l’arbre du tableau.
- On rejoue trois cas : une victoire, un sixième essai raté, et un nombre tout proche.
- Si un cas donne le mauvais message, on déplace le losange et on recommence.
La correction
Le placer plus haut ferait afficher « Chaud ! » à la place de « Gagné ! » ou de « Perdu ! ».
Ce qu’il faut retenir de ce TD
- L’ordre des conditions change le résultat.
- L’arbre est rejoué en entier à chaque événement, ici à chaque tentative du joueur.
- Les réponses possibles au problème principal sont les actions en bout de chemin : les lister, c’est déjà avoir la moitié de l’arbre.