1

Bonjour,
Je possède une calculatrice TI-89 Titanium depuis peu et je dois écrire un programme en TI Basic pour un DM de maths. Le problème c'est que je n'ai absolument aucune connaissance en matière de programmation et encore moins sur TI. J'ai lu quelques tutos sur le net mais je n'en ai trouvé aucun digne de ce nom et adapté à la Titanium. J'ai d'abord fait l'algorithme avec Algobox, comme c'était demandé :
1 VARIABLES
2     n EST_DU_TYPE NOMBRE
3     U EST_DU_TYPE LISTE
4     i EST_DU_TYPE NOMBRE
5     a EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7     LIRE a
8     LIRE n
9     U[0] PREND_LA_VALEUR a
10    POUR i ALLANT_DE 0 A n-1
11        DEBUT_POUR
12        U[i+1] PREND_LA_VALEUR 2*U[i]-i-2011
13        FIN_POUR
14    AFFICHER U[n]
15 FIN_ALGORITHME


Maintenant, je dois faire le même programme mais sur ma calculette. Pouvez-vous m'aider ?
Merci d'avance.

2

1 VARIABLES
2     n EST_DU_TYPE NOMBRE
3     U EST_DU_TYPE LISTE
4     i EST_DU_TYPE NOMBRE
5     a EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7     LIRE a
8     LIRE n
9     U[0] PREND_LA_VALEUR a
10   POUR i ALLANT_DE 0 A n-1
11       DEBUT_POUR
12       U[i+1] PREND_LA_VALEUR 2*U[i]-i-2011
13       FIN_POUR
14   AFFICHER U[n]
15 FIN_ALGORITHME

Fais gaffe à la balise [x] qui colore le texte en couleur x, donc ici en blanc cheeky
Sinon je regarde ça ce soir quand je rentre.

3

Oups, désolé...

4

Si tu ne l'as pas déjà, tu peux trouver toutes les infos sur le Ti-basic dans le manuel (chapitre "programmation" à partir de la page 658).

En gros, toute la partie de déclaration des variables est inutile, tu peux éventuellement la remplacer par l'instruction "local" (cf. manuel page 684) qui sert à indiquer une liste de variables "locales" à ton programme (cad qui seront automatiquement effacées après son exécution, pour ne pas polluer la mémoire). De mémoire elle s'écrit "local n,u,i,a". C'est plus propre, mais pas indispensable (ton programme marchera sans, par contre ça peut avoir des effets indésirables ensuite).

Pour les deux instructions "lire" tu dois pouvoir utiliser "input" (page 707), pour "prend_la_valeur" c'est une simple assignation (page 681), la boucle "pour" s'écrit avec l'instruction "for" (page 699), et enfin "afficher" s'écrit avec "disp" (il me semblait avoir retenu "print", soit ma mémoire me fait défaut soit ça a changé depuis le temps).
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

(Bon, ben Zeph a préféré faire le boulot à ma place après avoir vu le mal que j'ai avec les copier/coller ce week-end, merci à lui parce qu'en plus c'est très complet grin)

6

Merci pour ta réponse, les explication sont très claires.
[i+1], U[i] et U[n]Mais comment faire U[0], U sur la calculette parce que j'ai une erreur de syntaxe ?

7

Comme tu l'écris cheeky

Sauf que très souvent, en informatique, le premier terme d'une liste porte le numéro 0, donc U[0 ] désigne le premier élément de la liste.
Mais TI a décidé qu'en TI-Basic, le premier élément de la liste U s'appelle U[1 ]. Donc tu dois aussi modifier, 'i+1' devient 'i', 'i' devient 'i-1', etc...

8

J'ai à nouveau un problème de syntaxe mais je ne sais pas d'où ça vient. Voici le programme :
algo()
Prgm
Local n,U,i,a
Input a
Input n
U[1]->a
For i-1,0,n-1,1
U[i]->U[i-1]-(i-1)-2011
EndFor
Disp U[n]
EndPrgm

Je pense que j'ai fait pas mal d'erreur vu que je débute.

9

Le premier argument du "for" doit obligatoirement être un variable, tu ne peux pas mettre "i-1" ; il faut mettre "i" et adapter les bornes de ta boucle ainsi que tes calculs en fonction de ça.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

C'est la seule erreur de syntaxe que j'ai ?

11

Aucune idée, je ne suis pas un compilateur, tu as vérifié par toi-même avant de poser la question ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Je suis juste allé voir sur le manuel comme tu me l'as dit, mais je ne peux en aucun cas savoir s'il n'y a pas d'erreur de syntaxe vu que, comme je l'ai dit précédemment, je débute tout juste en TI-Basic.

13

Zeph veut dire que le seul moyen de savoir est que tu fasses la modif, et que tu relances le programme pour voir ce qu'il en est.
hugeek (./8) :
U[i ]->U[i-1]-(i-1)-2011

En tout cas, celle ligne au moins me semble fausse.

14

Et ce n'est pas la seule wink

En fait, l'opérateur d'assignation fonctionne dans l'autre sens. La flèche est pointée vers la variable qui reçoit la valeur smile
avatar

15

Effectivement, j'ai modifié le programme et ça marche :
: algo()
: Prgm
: Local n,u,i,a
: Disp "Valeur de a"
: Input a
: Disp "Valeur de n"
: Input n
: {a}->u
: For i,0,n-1,1
: 2*u[i+1]-i-2011->u[i+2]
: EndFor
: Disp u[n+1]
: EndPrgm 

J'ai rajouté la boucle Loop...EndLoop pour relancer le programme (je ne sais pas si c'est la fonction adaptée mais ça marche).
Et je voudrais juste faire deux autres modifications :
- je voudrais qu'à chaque nouvelle session, l'écran s'efface ; c'est-à-dire que dès que je relance le programme, les résultats précédents disparaissent (je croyais que c'était avec "ClrHome" mais ça ne marche pas)
- j'aimerais insérer "la valeur de un est...", c'est-à dire que si a=1000, n=1, le programme affiche :
la valeur de u1 est
-11

Voilà, et encore merci pour vos réponses.

16

De mémoire, pour effacer cet écran est ClrIO. Si tu veux construire une chaine contenant la valeur de n (ou n'importe quelle autre variable), tu auras besoin de l'opérateur "&" qui permet de coller deux chaines, et probablement de la fonction string() qui permet de convertir un nombre en chaine (indispensable pour pouvoir utiliser l'opérateur "&").
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

"ClrIO" marche. Merci smile
Mais après je ne veux pas construire une autre liste, je veux qu'il m'affiche : "la valeur de un est 3" avec pour n=2, "la valeur de u2 est...", pour n=3, "la valeur de u3 est...", etc (avec Disp "..."). Mais si je fais juste Disp "la valeur de un est...", il va m'afficher "la valeur de un est..." et je ne saurais pas à quel rang (u1, u2, u3,...) appartient la valeur.

18

J'ai bien compris que tu ne voulais pas construire une autre liste, ce que j'évoque au post ./16 permet de créer une chaine, c'est à dire une suite de caractères que tu vas pouvoir afficher à l'écran.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)