Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Jeu du"Plus ou Moins"

Posté par
emiline520
26-08-11 à 10:43

Bonjour,
voilà l'enoncé d'un exercice d'algorithmique :
Un jeu consiste à deviner un nombre entier compris entre 0 et 100. Pour cela, on a droit à dix essais. A chaque essai, celui qui a choisi le nombre répond "Plus" ou "Moins"jusqu'à ce que le joueur devine la bonne réponse, auquel cas il répond "Trouvé"
Ecrire un algorithme qui joue à ce jeu. Cet algorithme devra afficher à la fin de la partie le nombre d'essais.

L'exercice corrigé est le suivant :

Variables
    a,b,n : entiers
Initialisation
    a initialisé à nombre entier aléatoire entre 0 et 1oo #nombre à deviner#
    b initialisé à 0 #nombre tenté pat l'utilisateur#
    n initialisé à 0 #numéro de l'essai#
Traitement
    Répéter
       Saisir b
       Si b est strictement inférieur à a alors  afficher "Plus"
       Si b est strictement superieur à a alors afficher "Moins"
       n prend la valeur n+1   #compteur du nombre de coups#
       Si n = 10 alors
           afficher "Perdu"
           fin du programme    #au bout de 10 essais, la partie est perdue#

       Jusqu'à b == a
    Afficher "Trouvé"
    Afficher n

ça, c'est le texte, maintenant j'aimerais pouvoir traduire cela en langage de programmation ou langage CASIO (ma calculatrice est un CASIO GRAPH 35), n'ayant pas fait d'algorithmique cette année, soyez indulgent et aidez moi s'il-vous-plait à trouver les erreurs dans le programme que j'ai écrit(sans les espaces) :

Intg(101xRan#)A EXE
0B EXE
0N EXE
Repeat B=A EXE
"SAISIR B" EXE
If B strictement inférieur à A (je ne sais pas faire le symbole sur le clavier de mon ordi)Then"Plus" EXE
If B strictement supérieur à A Then "Moins" EXE
N+1N EXE
If N=10 EXE
Then "Perdu"EXE
End "Trouvé"EXE
N suivi du petit triangle noir qui signifie afficher
EXE

Je rencontre aussi un autre problème, je ne sais pas où se trouvent les touches Repeat et End sur ma calculatrice.

Merci pour votre aide.

Posté par
rezoons
re : Jeu du"Plus ou Moins" 26-08-11 à 11:22

Bonjour emiline ,

Personnellement j'ai une casio graph 85 mais je ne pense pas qu'il y ai de grosses différences dans la programmation.

Pour la première ligne moi la fonction s'apelle "int" mais ça c'est peut être juste du à ma calculatrice

Pour la boucle
"REPEAT B=A/END" il faut utiliser "While BA/WhileEnd"

Sinon après "saisir B" tu as oublier la commande qui permet de demander de saisir B qui est ?B

De plus toutes les boucles if doivent finir par IfEnd sinon ca va planter

Ce qui me donne:

Citation :
Int(101xRan#)A EXE
0B EXE
0N EXE
While BA EXE
"SAISIR B" EXE
?B EXE
If B < A Then"Plus" EXE
IfEnd EXE
If B > A Then "Moins" EXE
IfEnd EXE
N+1N EXE
If N=10 EXE
Then "Perdu" EXE
Stop EXE (pour arrêter le programme)
IfEnd EXE
WhileEnd
"Trouvé"EXE
N suivi du petit triangle noir qui signifie afficher
EXE


Je l'ai tester à ma calculette et il marche .

Posté par
emiline520
? 26-08-11 à 15:29

Bonjour rezoons,
merci beaucoup d'avoir répondu à mon problème, cependant, sur ma calculatrice le programme ne fonctionne toujours pas. J'ai une question à te poser par rapport à un point du programme, pourquoi traduis-tu #Répéter...Jusqu'à B=A# par While BA? Avec cette formule, la calculatrice affiche SAISIR B ? puis quel que soit le nombre choisi, Syn ERROR tandis que si je remplace par While B=A, ça ne fonctionne toujours pas correctement puisque que j'obtiens "Trouve" sans meme que je donne une valeur à B puis en dessous 0 et Disp,  mais au moins le programme réagit. Donc si tu as le temps, pourrais-tu vérifier que le programme que tu as entré dans ta calculatrice et qui marche est le meme que celui que tu as posté sur le site?

Encore merci.

Posté par
rezoons
re : Jeu du"Plus ou Moins" 26-08-11 à 16:17

While BA signifie répéter la boucle tant que A est différent de B ce qui est équivalent à répéter jusqu'à ce que A=B c'est pour ça que si tu met while B=A la calculatrice ne va même pas rentrer dans la boucle et va directement à la fin (et le 0 qui s'affiche c'est la valeur de N).
Quand au "SAISIR B" il n'est la que pour dire a l'utilisateur du programme de rentrer le chiffre mais en fait il n'est pas très utile.

Sinon mon programme exact est:

Citation :

Int(101xRan#)A EXE
0B EXE
0N EXE
While BA EXE
"SAISIR UN NOMBRE ENTRE 0 ET 100" EXE
?B EXE
B < A "Plus" EXE
B > A "Moins" EXE
Isz N EXE
If N=10 EXE
Then "Perdu" EXE
Stop EXE
IfEnd EXE
WhileEnd
"Trouvé"EXE
N suivi du petit triangle noir qui signifie afficher
EXE

Si tu veux le tester


Mais sinon pour les fonctions tel que While,If,IfEnd,WhileEnd est-tu sur que tu les avoir bien mises sans erreur?

Posté par
rezoons
re : Jeu du"Plus ou Moins" 26-08-11 à 16:22

Pour t'aider le While/WhileEnd se trouve en faisant SHIFT/PRGM/F1/F6/F6
Le If/IfEnd se trouve en faisant SHIFT/PRGM/F1
Le Stop se trouve en faisant SHIFT/PRGM/F2
Le Isz et le se trouve en faisant SHIFT/PRGM/F3
Le se trouve en faisant SHIFT/PRGM/F6/F3

Posté par
emiline520
Merci 26-08-11 à 21:28

Re-bonjour;
ça y est enfin ça fonctionne, merci beaucoup d'avoir été patient, le premier programme que tu m'as proposé ne fonctionnant pas, j'ai essayé l'autre et ça fonctionne très bien, on pourrait meme envisager de l'améliorer en demandant à l'utilisateur de choisir dans quel intervalle le nombre A sera pris aléatoirement et/ou le nombre de coups maximal, qu'en penses-tu?

Posté par
emiline520
re : Jeu du"Plus ou Moins" 26-08-11 à 22:07

Je crois que j'ai de nouveau besoin d'aide(j'espère que ce n'est pas considéré comme un multi-post) pour les améliorations envisageables.
Dans le programme, j'ai rajouté "SAISIR LES BORNES DE L INTERVALLE DU NOMBRE A DEVINER"EXE
(?)une flèche d'affection A EXE
"SAISIR LE NOMBRE MAXIMAL DE COUPS" EXE
? une flèche d'affection N EXE

mais du coup je ne sais pas quoi mettre au début du programme lorsque je dois donner leur première valeur aux variables lors de l'initialisation, et ensuite ce que dois écrire pour le test (If N=?...Then "Perdu").

Posté par
rezoons
re : Jeu du"Plus ou Moins" 27-08-11 à 12:05

En fait dans le premier programme je ne voulais pas trop rajouter de nouveaux truc que tu risquais de ne pas connaître comme le Isz N qui est l'équivalent de N+1N mais qui ne marche que pour les entiers. (d'ailleurs il y a aussi Dsz qui est l'équivalent de N-1N pour les entiers) ou le qui fonctionne comme un if mais très raccourci c'est à dire que l'on a:
<condition> <une seule instruction>
alors qu'avec un if on peut mettre plusieurs instructions et on peut mettre un else.
D'ailleurs si ca t'intéresse la programmation sur la calculette il existe quelques tutos intéressants sur internet comme celui-là:

Sinon pour revenir au programme en effet c'est une bonne idée mais la tu t'es un peu emmêler dans les variables.
A vrai dire tu as déja un A donc pour les bornes ils faut choisir d'autres variables, d'ailleurs une ne suffit pas il faut deux variables ce qui va donner:

Citation :
"SAISIR LES BORNES DE L INTERVALLE DU NOMBRE A DEVINER"EXE
"BORNE INFERIEURE"
?X
"BORNE SUPERIEURE"
?Y

et on va donc avoir plus bas:
Citation :
Int((Y+1-X)Ran#+X)A EXE

(formule qui donne un nombre aléatoire entre X et Y d'ailleurs pour X=0 et Y=100 on retrouve le Int(101xRan#) du premier programme.)
Ensuite il y a le même problème pour N. Il représente a quel coup tu te trouve dans le jeu donc il faut donner le nombre maximal de coup à une autre variable comme par exemple M. On a donc:
Citation :
"SAISIR LE NOMBRE MAXIMAL DE COUPS" EXE
?M EXE

et donc plus bas:
Citation :
If N=M EXE
Then "Perdu" EXE

Posté par
emiline520
re : Jeu du"Plus ou Moins" 27-08-11 à 18:27

Merci pour toutes ces précisions.
J'ai modifié le programme, ce qui donne (la calculatrice me signale une erreur de syntae qui empeche l'eécution du programme):

Citation :
IntA EXE
0B EXE
0N EXE
0X EXE
0Y EXE
"SAISIR LES BORNES DE L'INTERVALLE DU NOMBRE A DEVINER" EXE
"BORNE INFERIEURE" EXE
?X EXE
"BORNE SUPERIEURE" EXE
?Y EXE
Int((Y+1-X)Ran#+X)A EXE
"SAISIR LE OMBRE MAXIMAL DE COUPS" EXE
?M EXE
Then "PERDU" EXE
While BA EXE
"SAISIR UN NOMBRE ENTRE 1 ET 100" EXE
?B EXE
B strictement inférieur à A(avec le symbole bien entendu)"PLUS"EXE
B strictement supérieur à A"MOINS" EXE
Isz N EXE
Stop EXE
IfEND EXE
WhileEnd EXE
"TROUVE" EXE
N suivi du petit triangle noir qui signifie afficher
EXE



Peut etre que c'est une erreur dans l'ordre des instructions?

Posté par
rezoons
re : Jeu du"Plus ou Moins" 27-08-11 à 19:06

L'erreur est à la première ligne car IntA EXE n'a aucun sens. Vire cette ligne et tout devrais remarcher normalement.

Posté par
emiline520
re : Jeu du"Plus ou Moins" 28-08-11 à 11:15

Effectivement ça marche jusqu'au nombre maximal de coups, ensuite il y a un erreur de syntaxe avec ce programme (je le réécrit parce quej'avais fait une erreur la premiere fois) :

Citation :
0B EXE
0N EXE
0X EXE
0Y EXE
"SAISIR LES BORNES DE L'INTERVALLE DU NOMBRE A DEVINER" EXE
"BORNE INFERIEURE" EXE
?X EXE
"BORNE SUPERIEURE" EXE
?Y EXE
Int((Y+1-X)Ran#+X)A EXE
"SAISIR LE OMBRE MAXIMAL DE COUPS" EXE
?M EXE
If N=M EXE
Then "PERDU" EXE
While BA EXE
"SAISIR UN NOMBRE ENTRE 1 ET 100" EXE
?B EXE
B strictement inférieur à A(avec le symbole bien entendu)"PLUS"EXE
B strictement supérieur à A"MOINS" EXE
Isz N EXE
Stop EXE
IfEnd EXE
WhileEnd EXE
"TROUVE" EXE
N suivi du petit triangle noir qui signifie afficher
EXE

Posté par
rezoons
re : Jeu du"Plus ou Moins" 28-08-11 à 11:29

J'ai du mal me faire comprendre. Quand j'ai dis

Citation :
et donc plus bas:
Citation :
If N=M EXE
Then "Perdu" EXE


Ca voulais dire qu'il fallais juste modifier la ligne un peu plus bas et pas tout réécrire juste en-dessous. On dois avoir:
Citation :
0B EXE
0N EXE
0X EXE
0Y EXE
"SAISIR LES BORNES DE L'INTERVALLE DU NOMBRE A DEVINER" EXE
"BORNE INFERIEURE" EXE
?X EXE
"BORNE SUPERIEURE" EXE
?Y EXE
Int((Y+1-X)Ran#+X)A EXE
"SAISIR LE NOMBRE MAXIMAL DE COUPS" EXE
?M EXE
While BA EXE
"SAISIR UN NOMBRE ENTRE 1 ET 100" EXE
?B EXE
B<A"PLUS"EXE
B>A"MOINS" EXE
Isz N EXE
If N=M EXE
Then "PERDU" EXE
Stop EXE
IfEnd EXE
WhileEnd EXE
"TROUVE" EXE
N suivi du petit triangle noir qui signifie afficher
EXE

Posté par
emiline520
re : Jeu du"Plus ou Moins" 28-08-11 à 16:39

Oui, maintenant j'ai compris, ça marche. Merci encore.

Posté par
emiline520
re : Jeu du"Plus ou Moins" 28-08-11 à 20:52

Le programme est presque parfait  mais il faut remplacer le 'SAISIR UN NOMBRE ENTRE 1 ET 100" par "SAISIR UN NOMBRE ENTRE X ET Y"(je le précise pour les gens qui consulteraient ce topic). Je n'y ai pas réfléchi parce que j'étais concentrée sur le programme en lui-meme.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1768 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !