Apprendre et enseigner le développement informatique par l'algorithmie.

TD 1 - Plus ou Moins

Ce premier TD a pour objectif de vous montrer la proximité entre les arbres de décision que l'on va créer dans le prochains TDs et le code d'un programme informatique.

Présentation du jeu

Nous allons créer l’arbre de décision du jeu « Plus ou moins ».

Les règles du jeu sont les suivantes :

  • L’ordinateur choisit un nombre entre 1 et 100 ;
  • Le joueur a 6 essais pour deviner le nombre choisi par l’ordinateur ;
  • À chaque essai, l’ordinateur indique s’il faut proposer plus grand ou plus petit.

Voici une démo

Plus ou moins ?

J'ai choisi un nombre entre 1 et 100.

sauras-tu le deviner en moins de 6 essais ?

1. Exercice 1

Le but de l’exercice est de réaliser l’arbre de décision qui va répondre à la question : « ​Quel message dois-je afficher au joueur ? ». Cela peut être « Plus grand ! », « Plus petit ! », « Gagné ! », ou « Perdu ! ».

Attention, nous utilisons l’arbre de décision pour représenter un programme informatique. Il ne peut pas y avoir d’intervention humaine entre le point d’entrée de l’arbre et les solutions. Autrement dit, l’arbre de décision aura pour but de définir le message à afficher pour chaque tentative du joueur. Si le joueur gagne en 4 essais, l’arbre de décision devra être joué entièrement 4 fois.

Arbre de décision du jeu du plus ou moins répondant à « Quel message afficher au joueur ? ». Il teste si le nombre proposé est égal au nombre secret, si c’est le 6e essai, puis s’il est plus petit que le nombre secret, pour afficher « Gagné ! », « Perdu ! », « Plus grand ! » ou « Plus petit ! ».

2. Code observation

Observez bien le code du programme informatique du jeu ci-dessous. Sa structure est très proche de l’arbre que l’on a créé. Sans comprendre le détail de la syntaxe, vous devriez être capable d’identifier les lignes qui correspondent aux conditions et celles aux actions.

/* 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 !';
}
Code du choix du message
Pour les élèves

Dessinez l’arbre de décision 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 ?

Le code teste le nombre d’essais avant de vérifier si le joueur a trouvé.

Un joueur qui devine le bon nombre à son sixième essai reçoit donc « Perdu ! » alors qu’il a gagné. Vous pouvez le vérifier sur la démo en haut de page.

Dans votre arbre, la condition « Est-ce le bon nombre ? » arrive avant « A-t-il utilisé ses 6 essais ? ». C’est le bon ordre : on regarde la victoire en premier.

/* 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 !';
}
Le code corrigé

3. Une variante

Le jeu affiche désormais « Chaud ! » lorsque le nombre proposé est à moins de 5 du nombre secret.

Pour les élèves

Modifiez votre arbre pour tenir compte de cette règle. Un seul losange suffit : où le placer ?

Après « Est-ce le 6e essai ? » et avant « Le nombre proposé est-il plus petit ? ».

Le placer plus haut ferait afficher « Chaud ! » à la place de « Gagné ! » ou de « Perdu ! » : l’ordre des conditions change le résultat, encore une fois.

4. Ce qu’il faut retenir

  • L’ordre des conditions change le résultat. Deux arbres avec les mêmes losanges ne disent pas la même chose.
  • L’arbre est rejoué en entier à chaque événement, ici à chaque tentative du joueur.
  • Les réponses possibles à la question principale sont les actions en bout de chemin : les lister, c’est déjà avoir la moitié de l’arbre.