Université de la Réunion Faculté des Sciences et Technologies ...
12 pages
Français

Université de la Réunion Faculté des Sciences et Technologies ...

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
12 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

  • cours - matière potentielle : des instructions
  • mémoire
Université de la Réunion Faculté des Sciences et Technologies Département de Biochimie et Biologie Moléculaire Histoire des Sciences et Bioinformatique (S33BC23) Algorithmique TD2 Le jeu du pendu Un(e) étudiant(e) décide d'écrire l'algorithme permettant de programmer le jeu du pendu. L'algorithme écrit par cet(te) étudiant(e) est présenté sur la dernière page. - Corrigez les erreurs commises par cet(te) étudiant(e).
  • jeu du pendu
  • comparaisons ⇒
  • nbalea ←
  • bloc d'instruction de la boucle
  • string variable
  • nbtrouve old
  • instruction
  • instructions
  • saisie
  • mot
  • mots
  • lettre

Sujets

Informations

Publié par
Nombre de lectures 60
Langue Français

Extrait

Université de la Réunion
Faculté des Sciences et Technologies
Département de Biochimie et Biologie
Moléculaire

Histoire des Sciences et Bioinformatique
(S33BC23)
Algorithmique

TD2


Le jeu du pendu

Un(e) étudiant(e) décide d’écrire l’algorithme permettant de programmer le
jeu du pendu. L’algorithme écrit par cet(te) étudiant(e) est présenté sur la
dernière page.

- Corrigez les erreurs commises par cet(te) étudiant(e).

- Quel sera le résultat de l’algorithme sachant que la fonction Alea() a
-19renvoyé la valeur 1,6.10 et que l’utilisateur a saisi successivement les
lettres « a », « e », « r », « s », « n », « o », « c », « j », « l », « p », « i », « d »,
« g », « v », « m », « u », « b », « i » ?
Écrivez toutes les lignes affichées à l’écran en précisant à quel moment
l’utilisateur rentre les lettres
Précisez les valeurs des variables stockant le nombre de lettres trouvées et le
nombre d’essais restants.

- Quelle instruction utiliser afin de ne pas entrer dans la boucle POUR si le
mot ne contient pas la lettre entrée par l’utilisateur ? Pourquoi l’étudiant(e) a
eu raison de ne pas rajouter cette instruction ?

- Transformez l’algorithme afin qu’il prenne son dictionnaire de mot (tableau
dico) à partir d’un fichier.
- Transformez l’algorithme afin qu’il permette de respecter les conditions de
victoire du jeu et de faire l’affichage attendu lors du jeu du pendu.

Exemple d’affichage :

Le mot à deviner est « cacahuètes ».
L’utilisateur rentre la lettre « a » :
$ _ a _ a _ _ _ _ _ _
L’utilisateur rentre la lettre « e » :
$ _ a _ a _ _ _ _ e _
L’utilisateur rentre la lettre « i » :
$ _ a _ a _ _ _ _ e _

|
|
|
|
|

L’utilisateur rentre la lettre « z » :
$ _ a _ a _ _ _ _ e _
_ _ _ _ _
|
|
|
|
|


L’affichage final si l’utilisateur ne trouve pas le mot sera :
$ _ a _ a _ _ _ _ e _
_ _ _ _ _
|/ |
| O
| -|-
| / \
|

Le mot mystère était : cacahuètes

L’affichage final si l’utilisateur ne trouve pas le mot sera :
$ c a c a h u è t e s
$ Vous avez trouvé le mot mystère. Félicitations !!! Les erreurs sont indiquées en vert et les corrections en rouge.
Le caractère # permet d’insérer des commentaires dans le code.

Tableau dico(9) en stringue # le type stringue n’existe pas ⇒ string ou
caractère ; le tableau dico va contenir 11 cases par la suite donc il faut qu’on
déclare un tableau à 11 cases ⇒ dico(10)
Variables nb-alea, nbess@i, nbtrouve, nbtrouve old en numérique # /!\ pas
de – ni de @ et encore moins d’espaces dans les noms des variables ⇒
remplacez partout par nbalea, nbessai et nbtrouveold
De plus, on utilise la variable i par la suite mais elle n’est pas définie ⇒
Variable i en numérique
Variables mot et lettre en thong # pas de et pour séparer les noms des
variables ⇒ mot, lettre ; le type thong n’existe pas non plus ⇒ string

DEBUT
dico(0) = bioinformatique ; dico(1) = biochimie ; dico(2) = bioénergétique ;
dico(3) = physique ; dico(4) = physiologie ; dico(5) = botanique ;
dico(6) = zoologie ; dico(7) = enzymologie ; dico(8) = probabilités ;
dico(9) = gène ; dico(10) = anglais # pas de signe = pour l’affectation
seulement pour les comparaisons ⇒ remplacez tous les = par des ← pour les
instructions d’affectation.
nb-alea = Entier(Alea()+9) # la fonction Alea() renvoie un nombre réel
compris entre 0 et 1. Si on souhaite pouvoir sélectionner un mot parmi
l’ensemble des mots du dictionnaire, il faut que le nombre soit compris entre
0 et 10. Pour cela, il faut multiplier la valeur retournée par Alea() par 10. Mais
attention puisque les indices du tableau doivent être des nombres entiers.
Donc on utilise la fonction Ent() – pas Entier() qui n’existe pas – afin de ne
prendre que la partie entière du nombre aléatoire généré ⇒ Ent(Alea()*10)
mot = dico[nb-alea] #En algorithmique on utilise les () pour les tableaux ⇒
dico(nbalea)

ECRIRE « Vous avez 10 essais pour deviner toutes les lettres du mot
mystère. En cas d’échec, vous perdez 1 essai jusqu’à ce qu’il ne vous en reste
plus. Si vous trouvez le mot mystère avant qu’il ne vous reste plus d’essais,
vous gagnez. Sinon vous serez pendu sur la place publique (mwouahahah).
»
nbess@i = 10
nbtrouve = 0

TANTQUE nbess@i > 0
ECRIRE « Entrez une lettre minuscule »
LIRE lettre
nbtrouve old = nbtrouve POUR i = 0 A Len(« mot ») #on souhaite parcourir l’ensemble de la chaîne
de caractère contenue dans la variable mot et pas la chaîne de caractère
« mot » ⇒ mot
SI L == Mid(mot, i, 1) #la variable L n’a pas été déclarée à l’inverse de la
variable lettre permettant de stocker la lettre saisie par l’utilisateur. De plus,
la variable i commence à 0 or la position 0 n’existe pas pour la chaîne de
caractère mot. En outre, une instruction SI doi contenir un ALORS après la
condition pour savoir quand la condition est terminée ⇒ SI lettre ==
Mid(mot, i+1, 1) ALORS
nbtrouve = nbtrouve + 1
FINSI
i = i + 1 #voir ligne suivante
FINPOUR #l’instruction FINPOUR n’existe pas !!! ⇒ remplacez par i
SUIVANT

SI nbtrouve == nbtrouve old
nbess@i = nbess@i – 1
ECRIRE « La lettre », lettre, « n’est pas dans le mot mystère. »
ECRIRE « Il vous reste », nbess@i, « essai(s). »
SINON nbtrouve == Len(« mot ») #l’instruction SINON ne doit pas contenir
de condition puisqu’elle définit tous les autres cas. Si une condition est
nécessaire il faut utiliser l’instruction SINONSI et terminer la condition par
un ALORS ; même correction que précédemment pour mot ⇒ SINONSI
nbtrouve == Len(mot) ALORS
ECRIRE « Vous avez trouvé le mot mystère. Félicitations !!! »
FINSI

SI nbess@i == 0
ECRIRE « Vous n’avez pas trouvé le mot mystère dans la limite de 10
essais. Qu’on apporte la corde !!! »
FINSI
#la boucle TANTQUE n’a pas été fermée. L’ensemble des instructions
précédentes devant se trouver dans la boucle TANTQUE, il faut fermer cette
boucle à ce niveau ⇒ FINTANTQUE
FIN

- Résultat de l’algorithme

-19Si la fonction Alea() renvoie 1,6.10 nbalea sera égal à 0 car la partie entrière
-19 -18de 1,6.10 * 9 = 1,44.10 sera 0.
La variable mot contiendra la chaîne de caractère « bioinformatique ». La taille de la variable mot sera donc 15. Donc lorsque la variable nbtrouve
sera égale à 15 l’algorithme considérera que l’utilisateur aura trouvé le mot
mystère.

$ Vous avez 10 essais pour deviner toutes les lettres du mot mystère. En cas
d’échec, vous perdez 1 essai jusqu’à ce qu’il ne vous en reste plus. Si vous
trouvez le mot mystère avant qu’il ne vous reste plus d’essais, vous gagnez.
Sinon vous serez pendu sur la place publique (mwouahahah)

$ Entrez une lettre minuscule
$ a # lettre saisie par l’utilisateur
La lettre est trouvée 1 fois dans le mot donc nbtrouve = 1 ; pas d’erreur donc
nbessai = 10

$ Entrez une lettre minuscule
$ e # lettre saisie par l’utilisateur
La lettre est trouvée 1 fois dans le mot donc nbtrouve = 2 ; pas d’erreur donc
nbessai = 10

$ Entrez une lettre minuscule
$ r # lettre saisie par l’utilisateur
La lettre est trouvée 1 fois dans le mot donc nbtrouve = 3 ; pas d’erreur donc
nbessai = 10

$ Entrez une lettre minuscule
$ s # lettre saisie par l’utilisateur
$ La lettre s n’est pas dans le mot mystère.
$ Il vous reste 9 essai(s)
èrenbtrouve = 3 ; 1 erreur donc nbessai = 9

$ Entrez une lettre minuscule
$ n # lettre saisie par l’utilisateur
La lettre est trouvée 1 fois dans le mot donc nbtrouve = 4 ; pas d’erreur donc
nbessai = 9

$ Entrez une lettre minuscule
$ o # lettre saisie par l’utilisateur
La lettre est trouvée 2 fois dans le mot donc nbtrouve = 6 ; pas d’erreur donc
nbessai = 9

$ Entrez une lettre minuscule
$ c # lettre saisie par l’utilisateur
$ La lettre c n’est pas dans le mot mystère. $ Il vous reste 8 essai(s)
èmenbtrouve = 6 ; 2 erreur donc nbessai = 8

$ Entrez une lettre minuscule
$ j # lettre saisie par l’utilisateur
$ La lettre j n

  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents