Page 1 of 1

[Résolu] Boucles : questions de noob

Unread postPosted: 27 Jun 2019, 11:24
by Procrastination
Salutations. Je suis noob.
Je commence à programmer sur TI 83 Premium CE.

J'ai commencé un PiFeCi (Pierre Feuille Ciseau) : il en existe déjà sur le site mais je voulais programmer le mien (et en profiter pour répondre à quelques questions) :


1. Boucles : comment distinguer un EndIf d'un EndWhile ?
Soit M le nombre de manches donné par le joueur, A son score, B celui de la Ti. Le programme compte donc un While (While A+ B < M) et des If en fonction de ce qui est joué.
2. Arrêt du programme : comment l'éviter ?
Mon programme fonctionne au début puis à une étape (indiquée ci-dessous) marque "done".
3.Réinitialiser
Le programme s'arrêtant avant l'étape où les données sont réinitialisées, je ne sais pas si c'est un problème. Pierre=1, Feuille=2, Ciseaux=3, le joueur entre N (1,2, ou 3) et la ti prend un entier aléatoire entre 1 et 3, puis l'affiche (O). A chaque tour, O et N varient. Ecrire O-O sto O ou 0 sto O fonctionne t il (idem pour N) ? Si oui, où faut il l'écrire ? (cela rejoint la questions des boucles).


Voici mon programme avec entre paranthèses les questions. Je précise qu'il n'y a aucune erreur de syntaxe.

Programme PIFECI

Code: Select all
Disp "Pierre Feuille Ciseaux"
Disp "Pi 1", "Fe 2", "Ci 3"
0 sto A
0 sto B
Disp "manches ?"
Prompt M
While A+B < M (1)
Prompt N
nbrAleatEnt (1,3,1) sto O
Disp O (2. Le programme marque "done" et s'arrête.)
If O=1
Then
Disp "Pi"
(idem pour les autres FE et CI)
If O=N
Then
Disp "éga"
If O-N = 1 ou O-N= -2
Then
Disp "Je gagne camarade"
B+1 sto B
Else
Disp "Bravo"
A+1 sto A
End  (3. sensé être un EndIf)
N-N sto N (3)
O-O sto O
End  (3.sensé être un EndWhile)
If A > B
Then
Disp "Bravo"

ect avec les 3 cas de figure


Merci d'avance

Re: Boucles : questions de noob

Unread postPosted: 27 Jun 2019, 14:31
by edgar13
Aucunne différence entre un endwhile et un endif

Re: Boucles : questions de noob

Unread postPosted: 27 Jun 2019, 14:43
by UnCurieux
Salut,
alors en effet juste un End simple sur TI83PCE,
mets nbrAleatEnt (1,3) sto O au lieu de nbrAleatEnt (1,3,1) sto O
Mets
If O=N:Then
au lieu de
If O=N
Then
Et pour finir l'origine du problème : il faut 1 End pour chaque If : il te manque donc beaucoup de End ;)

Re: Boucles : questions de noob

Unread postPosted: 27 Jun 2019, 14:45
by Adriweb
... puisque tous les deux s'écrivent End. Mais ca justement c'était ce que tu savais - donc on ne peut pas les distinguer directement, il faut examiner le code pour savoir à quel début If ou While (etc.) il est associé.
Si tu utilise des réindenteurs de code, par exemple l'outil de prévisualisation des codes-sources TI-Basic dans nos archives, ca réindentera tout seul le code et tu verras tout de suite quel truc est lié à quel truc.

Re: Boucles : questions de noob

Unread postPosted: 28 Jun 2019, 17:44
by Astrostellar
Petite précision sur les If : lorsque tu as une seule action à réaliser, tu peux simplifier la syntaxe en une ligne. Ici, ça donne :
Code: Select all
If O=1:Disp « Pi »

:warning: Il ne faut pas mettre de End si tu utilises cette syntaxe.
Ensuite, pour la réinitialisation de tes variables, ce n’est pas nécessaire, en effet, dès que le jeu reprend, la première utilisation de N est son incrémentation, et pareil pour O. Il n’est donc pas ici utile de remettre 0 dans tes variables à chaque tour. (La syntaxe
Code: Select all
0 sto O
fonctionne ;) )
Enfin, si tu mets tout les End nécessaires comme précisé ci-dessus, ton programme ne s’arrêtera plus...

Re: [Résolu] Boucles : questions de noob

Unread postPosted: 29 Jun 2019, 18:20
by Procrastination
Merci
J'ai édité le titre du post : PIFECI fonctionne. (en plus des problèmes dont j'ai parlé, j'ai aussi résolu la question du "Else".
Quand j'aurais des notions de plus j'ajouterai peut être des animations.