1

salut
je sui novice et je m entraine a la programmation sur ma ti-89.Pour cela j essai de faire un programme de convertisseur d euro koi de mieu en cette periode. Seulement j ai un probleme il marche pa mon progamme. C ' est pourquoi je vous le soumet en entier et j espere que vous pourrez mz dire ou se trouve la ou les fautes et comment y remedier. Merci d avance pour les reponses.
voila le programme:
euro()
Prgm
Dialog
Text "convertisseur"
Request "montant",m
DropDown "devise",("euro","francs"),d
EndDlog
If d=1 Then
m*6.55957
(normallement ya une fleche la mai j ai pa la touche sur l ordi)y
EndIf
If d=2 Then
m/6.55957
(normallement ya une fleche la mai j ai pa la touche sur l ordi)z
EndIf
If d=1 Then
Disp y
EndIf
If d=2 Then
Disp z
EndIf
EndPrgm

2

On distingue plusieurs types de données en programmation. Dans ton cas, tu n'as pas distingué :
Les types scalaires : les variables de ce type ne peuvent représenter que des nombres : 1 2 ... 6.55957 etc
Les types chaînes (spécificité du Basic et du Pascal) : contiennent des caractères alphanumériques.

Request "montant",m renvoie dans m une chaîne de caractères, qui devient donc de type chaîne.

Une chaîne c'est "abcd", bref ça n'a aucune valeur numérique, c'est une suite de lettres. Le processeur ne sait additionner, multiplier, diviser, soustraire que des nombres, c'est à dire des variables de type scalaire.

Or tu appliques une division à m, chaîne de caractères comme on l'a vu... Il faut donc transtyper : convertir la suite de caractères en le nombre qu'elle représente. Ca se réalise avec la fonction expr() si je me souviens bien (j'ai très peu programmé en Basic).


Sinon, pourquoi mettre le résultat dans 2 variables différentes (x et y) pour ensuite en faire la même chose : l'afficher ??? Met le résultat des deux calculs dans x et à la fin du prog écrit Disp x : ainsi les If d=1 Then Disp MACHIN EndIf disparaissent.


T'1 c'est rare que je sois aussi patient smile
[edit]Edité par Thibaut le 14-12-2001 à 21:45:42[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3


m*6.55957
Les Dialogs renvoient des strings, des chaînes de caractères:
Par exemple, si m=23 tu auras m="23" et non pas ce que tu veux.
Pour rémédier à ça tu dois faire:
expr(m)*6.55957

2° Je vais me permettre d'optimiser ton code:
euro()
Prgm
Local m,d
©Variables locales, donc quand tu sortiras du programme elles n'existerons plus
Dialog
Title "Convertisseur"
Text "Introduisez le montant"
Text ""
Request "Montant",m
DropDown "Devise:",{"euro","francs"},d
©Au fait ce sont des crochets et non pas des parenthèses
EndDlog
If ok=0sorrytop
ClrIO
If d=1 Then
Disp m&" Euros font :"
Disp format(expr(m)*6.55957,"f2")&" Francs"
©la fonction format te permet d'afficher un nombre avec un format détérminer, fix 2 en l'occurence. Cette fonction renvoie une chaîne de caractères donc pas de besoin de expr
Else
Disp m&" Francs font :"
Disp format(expr(m)/6.55957,"f2")&" Euros"
EndIf
EndPrgm

Merci pour les corrections Thibaut et Pim89 (j'ai eu des problèmes avec la conversion à cause du fait que je suis pas en Europe donc je m'emfous en peu de ça, cependant je sais bien que c'est logique qu'il faille diviser des francs pour avoir des euros car les euros sont une monnaie plus forte que les Franc. D'autre part, excuse moi de voler tes idées pour le prgm tongue)
[edit]Edité par Verstand le 15-12-2001 à 13:48:56[/edit]
Memento moris, carpe diem.
Divide y vencerás.

4


Bref, paulo_pizza, tu as deux fois la même chose ; si avec ça tu piges pas grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

5

de rien VERSTAND wink
dis, en échange tu m'aides à progresser en anglais grin ?
[edit]Edité par Thibaut le 17-12-2001 à 20:54:27[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

6

Je crois que dans format(expr[,format chaine]) :

expr doit être une valeur numérique, donc dans ton prog verstand, ça va planter, car tu demande d'utiliser format() pour une chaine.

Ce qu'il faut c'est :

euro()
Prgm
Local m,d
Dialog
Title "Convertisseur"
Text ""
Text "Introduisez le montant"
Text ""
Request "Montant",m
DropDown "Devise:",{"euro","francs"},d
EndDlog
Je mets des Text "" pour faire + joli dans la boite de dialog, pour sauter des lignes
If ok=0
Stop
Si on met ESC au moment de la boite, une valeur 0 est stocké dans une variable système "ok". Donc pour savoir si on a mis ESC, on met cette hypothèse, et ça nous permet de sortir du prog
ClrIO
If d=1 Then
Disp "",m&" Francs font :"
Pause format(expr(m)/6.55957,"f2")&" euros"
Else
Disp "",m&" Euros font :"
Pause format(expr(m)*6.55957,"f2")&" francs"
EndIf
ClrIO
DispHome
EndPrgm


Là ça marche Verstand ! grin
[edit]Edité par Pim89 le 14-12-2001 à 22:51:31[/edit]
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

7

Jolie, la syntaxe en couleurs...c vraiment se faire bien chier...


Prise de tête: PhD dans la mire.

------------------------------------------------------------------------------------
Mon site TI 83+ et 83+SE (mort)
Le forum TI 83+ de yAronet !!! (rattaché au site..)

8

Pas tant que ça, faut bien aider les nioubis !! wink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

9

Hehe moi je vous fait le plus petit possible (enfin tout en restant utilisable smile)

euro()
prgm
local a,b // Toujours pareil, vaut mieux "localiser"
clrio
input "Montant ?",a
clrio
popup {"Franc->Euro","Euro->Francs"},b
if b=1:a/6.55957->a // Les 2 points on le même effet qu'un saut de ligne
if b=2:a*6.55957->a
disp "Résultat :"
pause a
clrio
disphome
endprgm

Edit : Merde j'ai laissé 1 bug smile
[edit]Edité par Bob 64 le 15-12-2001 à 11:20:50[/edit]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Ouais, c'est petit, mais on manques pas de place sur 89 quand même !!! Alors on peut fignoler un peu le prog (avec des boites de dialogs ect ...)

Pas grave pour les idées copier Verstand, de toute façon j'avais pas mis de copyright, donc je peux même pas d'attaquer en justice ... grin

[edit]Edité par Pim89 le 15-12-2001 à 20:31:15[/edit]
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

11

Ouais mais ds les boites de dialogue l'alpha est activé et c chiant...
C pour ça que j'utilise input tongue
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Tu peux télécharger le Auto Alpha-Lock Off de Kevin Kofler
[edit]Edité par Verstand le 15-12-2001 à 22:17:44[/edit]
Memento moris, carpe diem.
Divide y vencerás.

13

Nan. C plus simple d'utiliser des input que de prendre ce prog suppplémentaire.

Dsl kevin, ce n'est pas un reproche, mais dans ce cas la, auto alpha-lock off est assez inutile...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Il a raison ...
j'essais moi aussi de les éviter au max, mais défois ça fait "pas fini" ... ok y'a le prog de Kevin, mais pas dit que tout le monde le veuille, donc je limites les boites de dialog ... surtout sur les trucs qu'on doit rentrer rapidemment (ex : la fonction et son domaine dans mon prog d'étude de fonction).
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

15

Quand ton programme devient assez gros, tu peux aussi créer un sous-prog local qui replace la fonction input en + joli... Je préfère encore ça à l'auto alpha
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

De toute façon, si vraiment on aime pas les boite de dialog et les tsr, on peut utiliser Flib, qui permet (avec ses options graphiques utilisables dans l'écran I/O) de tracer des doubles lignes ou des titres plus gros, avec tout l'écran effacé, donc ça devient aussi beau et fini qu'une boite de dialog, mais c'est plus lourd à executer ...

C'est ce que j'ai fais dans mon prog d'étude de fonction ... mais j'utilise aussi les boites de dialogs ...
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

17

Ah oui à propos de programme d'étude... J'ai un pote qui me gonfle pr que je lui en fasse ou trouve un.
Donc c quoi les meilleurs que vous utilisez ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

Moi, je n'aime pas trop les IF...ENDIF, j'essaie de les éviter le plus possible.
J'en avais fait comme ça :
euro()
Prgm
local s,d,d1,d2,f1,f2
{" Francs"," Euros"}->d
{1,1/6.55957}->f1
{6.55957,1}->f2
Dialog
Title "Convertisseur"
Request "Somme ",s
DropDown "Devise de départ:",d,d1
DropDown "Devise d'arrivée:",d,d2
EndDlog
If ok=0sorrytop
Dialog
Title "Convertisseur"
Text expr(s)&d[d1]&" font "&string(expr(s)*#("f"&string(d1))[d2])&d[d2]
EndDlog
EndPrgm

Voilà, si je ne me suis pas trompé ça devrait marcher.
Bien sûr, il reste un if : celui pour tester si l'utilisateur a appuyé sur [ESC] à la première boîte de dialogue.

19

jackiechan91 >>> sans If, ENDIF, t'es dans la merde pour faire certain truc ... les trucs faciles, ça va, mais y'a des fois ... je trouve que les If, EndIf sont des structures très bien et très pratiques pourtant ...)

Bob 64 >>> ça dépend ... moi je suis en 1èreS, les prog d'étude de fonction ne me satisfesaient pas du tout, je les trouvais assez mauvais, donc je m'en suis fais qui traite tout ce que j'ai vu en cours en SBS au maximum ... il traite vraiment tout sur ce qu'on voit en 2nd et début de 1èreS (là où je suis). Donc à mon avis (sans vanter mon prog) , si on est en 1ère comme moi, c'est le meilleur ...

Sinon, si tu es en classe au dessus de 1èreS, il faut fct89, mais il est mal fini, ne traite pas la moitié des cas dans certain menu, et fais des erreurs sur des trucs simples parfois ... mais il traite le programme de TermS.

Je dis mal fini, ex : Si on veut la limite de x^(1/2) en -oo(ce qui est impossible, la calc renvoit "undef"), et ben le prog te revoit "undef", alors que l'auteur aurait pu améliorer ça en mettant une phrase plus significative !!!
Pareil pour certaines soltutions d'équation, au lieu de mettre "aucune solution", il te renvoit "false", comme le fait la 89 ... ça fait vraiment pas fini, et pas testé pour plusieurs fonctions ...

Par contre l'interface est très belle, mais aussi peu y'a que ça qu'on apprécie ...

Aussi, il ne gère pas des calculs évidents comme la position relative ou les assymptotes ... pareil pour les symétries et les changement de répère pour une courbe (qui a une nouvelle équation).

Enfin, il ne met pas bcp les méthodes à employer (sauf pour les dérivées), il affiche directement le résultat, ce qui est pas terrible dans certain cas où on aimerait voir les étapes pour se vérifier ...
Avantage : il gère la trigo , mon prog ne la gère qu'à moitié...

J'ai repris VARIATIO comme tabl de variation que j'ai modifié (tout le mode de démarrage et le mode de calcul ont été suprimé, soit 16 Ko de moins), car ce tabl de variation est génial, et je n'aurais pas pu faire mieux ...), et aussi la dérivation SBS de derstep (tout en présisant clairement que ce n'est pas de moi, je respecte le travail de l'auteur). Mais tout le reste et de moi, et mon prog n'a jamais fais faux ds tous les cas où je l'ai testé , et n'a jamais planté, donc j'ai testé preques tous les cas avec différentes fonctions chiantes ...

Vala ... donc fct89, ou le mien ("EtudFonc v0.7"), suivant ton niveau en cours.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

20

Mon niveau en cours ? Je préfere ne rien dire smile

Ok merci pr tes explications... On le télécharge ou le tiens ? (je ne l'ai pas vu ds les archives...)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

21

Quand je dis "ton niveau en cours" >> ça veut dire "la classe ds laquelle tu es !"

Pour le mien, tu ne le trouveras pas dans les Archives d'un site, mon prog évolue trop vite, alors il faudrait que je le renvois à chaque fois à Ti-fr, ça les ferait chier ... quand j'aboutirais à une version plus stable où ça évolturait mois vite par la suite, je le mettrait sur le Web ...
Si tu le veux, faut que je te le mail. Mais attention, je ne suis qu'en 1èreS, alors il faut pas attendre des supers trucs bien balèzes en maths dessus ...
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

22

Quand je dis "ton niveau en cours" >> ça veut dire "la classe ds laquelle tu es !"
> J'avais comprit smile

Si tu le veux, faut que je te le mail
> Bah ouais je veux bien si ça te gene pas

Mais attention, je ne suis qu'en 1èreS, alors il faut pas attendre des supers trucs bien balèzes en maths dessus...
> C exactement ce qu'il me faut grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

Raaaaahhhhhhhhh merde j'ai controle de maths demain...

Pim89 sauve moi stp !!! Il me faut ton programme fou
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

24

merci rotfl
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

25

BOB64: tu voulais optimiser le + possible:
if b=1:a/6.55957->a // Les 2 points on le même effet qu'un saut de ligne
if b=2:a*6.55957->a

on peut mettre:
a*when(b=1,1/6.55957,6.55957)->a
Et encore, le 1/6.55957 on peut le mettre comme 6.55957 à la puissance -1, mais g pas le symbole sur mon pc...

26

Ouais, ça va bien sur des petits progs, mais après sur un énorme, ça devient illisible à la relecture ... si on veut modifier un truc ... mais c'est clair que là c'est optimisé !
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

27

ça t'amuse d'optimiser comme ça ? grin Alors j'ai ça aussi :

a*(6,55957^((b-1)*2-1))->a

encore + rapide, tu gagneras pas à ce petit jeu gringringrin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)