Posté le 18/09/2011 à 14:36Edité par hugeek le 18/09/2011 à 14:47 Membre depuis le 04/09/2011, 21 messages
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.
Posté le 18/09/2011 à 14:38Edité par Folco le 18/09/2011 à 19:00 Membre depuis le 18/06/2001, -26075 message
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.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 18/09/2011 à 14:49 Membre depuis le 04/09/2011, 21 messages
Oups, désolé...
Posté le 18/09/2011 à 18:13 Membre depuis le 13/06/2002, 42699 messages
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).
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 18/09/2011 à 19:02 Membre depuis le 18/06/2001, -26075 message
(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)
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 18/09/2011 à 20:08 Membre depuis le 04/09/2011, 21 messages
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 ?
Posté le 18/09/2011 à 20:31 Membre depuis le 18/06/2001, -26075 message
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...
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 18/09/2011 à 21:14 Membre depuis le 04/09/2011, 21 messages
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.
Posté le 18/09/2011 à 21:15 Membre depuis le 13/06/2002, 42699 messages
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.
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 18/09/2011 à 21:29 Membre depuis le 04/09/2011, 21 messages
C'est la seule erreur de syntaxe que j'ai ?
Posté le 18/09/2011 à 21:35 Membre depuis le 13/06/2002, 42699 messages
Aucune idée, je ne suis pas un compilateur, tu as vérifié par toi-même avant de poser la question ?
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 18/09/2011 à 21:40 Membre depuis le 04/09/2011, 21 messages
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.
Posté le 18/09/2011 à 22:18Edité par Folco le 19/09/2011 à 12:04 Membre depuis le 18/06/2001, -26075 message
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.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 19/09/2011 à 02:16 Membre depuis le 04/05/2005, 4441 messages
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
Posté le 20/09/2011 à 22:09 Membre depuis le 04/09/2011, 21 messages
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.

Posté le 20/09/2011 à 22:24 Membre depuis le 13/06/2002, 42699 messages
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 "&").
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Posté le 20/09/2011 à 22:53 Membre depuis le 04/09/2011, 21 messages
"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.
Posté le 20/09/2011 à 23:07 Membre depuis le 13/06/2002, 42699 messages
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.
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)