
Le Forum de TI-BANK.fr Le forum de la banque de programmes pour calculatrices graphiques Texas Instruments (aide débutants, résolution problèmes...). |
| | |
| Auteur | Message |
|---|
tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Mer 1 Nov - 18:59 | |
| un petit truc au lieu de faire {1-> LABCDE on peut tout simplement faire {1->ABCDE ça peut sembler quasi inutile mais c'est utile en cas d'utilisation multiple de la même liste dans un même programme |
|  | | tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Lun 21 Mai - 18:25 | |
| Trouvé un truc hier soir pour optimiser le code | Code: | 0->K Repeat K getkey->K End If K=41 "A->Str1 If K=42 "B->Str1 ... If K=93 "Z->Str1
|
ça donne
| Code: | "ABCDEFGHIJKLMNOPQRSTUVWXYZ->Str0 ... 0->K Repeat K GetKey->K End (K>=51)(K<=93)(fPart(K/10)<=.5)(5int(K/10)-22+K-10int(K/10))+(K>=41)(K<=43)(K-10int(K/10 sub(Str0,Ans,1->Str1 ...
|
bon un peu compliqué mais grâce à ça j'ai réduit la taille de mon pendu de 30% (739->518) (bien sûr <= c'est inférieur ou égal et >= supérieur ou égal) voilà ^^ |
|  | | AdRiWeB Légende


Age: 17 Classe: Term. S Calculatrice(s): TI-84+, Nspire CAS, Nspire CAS+ Messages: 1199 Efficacité: 1 Localisation: Sur ma chaise Date d'inscription: 01/06/2007
Divers Dernière note en maths: 100 % ^^
 | Sujet: Re: Astuces Sam 9 Juin - 7:57 | |
| Une petite astuce (très simple) qui peut faire gagner du temps : plus particulièrement quand vous êtes dans une boucle, essayez de réduire au maximum les commandes données et de faire les calculs "simples" vous même. Exemple : | Code: | :9²→X :3→A :XA→X devient :243→X |
|
|  | | tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Dim 10 Juin - 15:42 | |
| |
|  | | tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Mar 26 Juin - 10:07 | |
| (héhé je me mets à l'ASM z80 syfo fais gaffe  ) Bon j'ai trouvé un truc assez intéressant pour ceux qui veulent des trucs avancés dans leurs programmes et qui ne peuvent pas ou ne veulent pas télécharger de programmes ASM C'est l'équivalent des chaines Exec pour les 68k : Allez commençons : 2 façons : Utiliser la commande ExecAsm de Omnicalc ([PRGM] 2 fois) puis rentrer la chaine ou -Créer un nouveau programme -Mettre ASMPrgm sur la première ligne (c'est dans le Catalog : [2nd]+[0]) -Taper les chiffres/lettres à la suite - Ne pas oublier d'ajouter C9 à la fin du programme sinon ça bug-Pour appeler : Asm( nomduprogramme Ah oui aussi pour les fonctions sur l'écran il faut ajouter : EF6A48 à la fin pour rafraichir l'écran. Bon on commence :
- Scroller l'écran à droite : 2140930E40060CB7CB1E2310FB0D20F5
- Scroller l'écran à gauche : 213F960E40060CB7CB162B10FB0D20F5
- Scroller l'écran en haut : 214C9311409301F402EDB0EB010C00EF304C
- Scroller l'écran en bas : 213396113F9601F402EDB823010C00EF304C
- Augmenter le contraste : 2147847EC604FE28D077C6D8CD0B00D310
- Diminuer le contraste : 2147847ED604D877C6D8CD0B00D310
- Mettre le contraste contenu dans X : EFE04AEFEF4AC6C0CD0B00D310
- Graph tout noir : 2140930100033EFFEF334C
- Effacer graph : EFD04B
- Inverser l'écran Home : FDCB05DEEF7945FDCB059E
- Inverser graph : 2140930100037E2F77230B78B120F7
- Inverser tous les écrans :
F33E20CD0B00D3103E80CD0B00D310060EC5063F2E7FCD0B00DB112C CD0B00DB112FF57DCD0B00D311CD0B00DB11F1CD0B00D31110E5C110D8
- Cercles rapides : FDCB3CE6
- Ecran on/off: DB10CB6F20053E03D310C93E02D310
- Alpha lock : FDCB12E6FDCB12F6
- Permettre les minuscules : 21148A3E08AE77
- Enlever done: FDCB00AE
- Texte inversé ou non : 21F5893E08AE77
- APD : 210101224884FDCB08DEFB76
- Mettre l'APD à X (X=variable X) : EFE04AEFEF4AEB214884732372
- Eteindre la TI : 3E01D30376FDCB09A6
- "Powerdown" : EF0850
- Etat des batteries (dans Ans) : EFBF41EFB3502803EF9B41EFBF4A
- RAM libre : EFE542EF9247EF5641EFBF4A
- Version de l'OS : EF6F4CF578EF8C47EF6742EF6742F1EF8F47F7EFBF4A
- Version de l'Hardware : EFBA80EF8C47EFBF4A
- Getkey: EF7045FB76EF4447B728F8EF5641EFD14A
Il faut être prudent en utilisant ces chaines, comme pour les chaines Exec un seul chiffre faux et tout devient différent (crash voire pire ?) Voilà c'était l'astuce du jour =) le lien : http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm Sinon j'en ai des petites :
- pour savoir facilement si on est sur TI82 ou TI83+, utiliser abs : sur TI82 abs -1+1 donne 2 (considère comme abs(-1)+1), sur TI83(+) abs(-1+1 donne 0
- les erreurs :
Pour que l'utilisateur connaisse ce qu'il a oublié (par exemple pour un sous-programme), on peut faire : | Code: | PROGRAM:FIRST ... ... Output(1,1,"ERR:prgmSUB manquant prgmSUB ... ...
|
et dans le prgmSUB :
| Code: | PROGRAM:SUB Output(1,1," " (16 espaces) ... ... ...
|
Après l'ERR:UNDEFINED l'utilisateur pourra voir ce qu'il manque voilà c'est tout pour aujourd'hui !
|
|  | | tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Ven 29 Juin - 18:39 | |
| | tama a écrit: | Je propose de poster ici toutes les astuces que vous connaissez pour la programmation sur TI z80 ou sur TI z80 tout court
=> Pour optimiser un programme :
Exemple :
prgmTEST
code non optimisé
| Code: | 0->A:0->B:0->C:0->D Lbl 0 A+1->A (A+B)x(C+D)->E Disp E If A<1000 Then Goto 0 Else Goto 1 End Lbl 1 Stop
|
Nombre total d'octets : 13+54=77 octets
1.Enlever les parenthèses
devient :
Gain ==> 1 octet
2.Utiliser For( et End au lieu des goto (l'instruction Goto cherche le lbl correspondant et cela peut prendre du temps)
| Code: | Lbl 0 A+1->A (A+B)x(C+D)->E Disp E If A<1000 Then Goto 0 Else Goto 1 End
|
devient :
| Code: | For(A,1,1000 (A+B)x(C+D->E Disp E End
|
Gain ==> 12 octets Gain total ===> 13 octets
3.Utiliser DelVar var au lieu de 0->var Avantage : DelVar A et 0->A prennent autant de place mais on peut enchainer les DelVar (les coller)
devient :
| Code: | DelVar BDelVar CDelVar D
|
(DelVar A est inutile puisque A sera utilisé pour faire une boucle)
Gain : 6 octets Gain total : 19 octets
4.Mettre un "stop" en fin de programme ne sert à rien
devient :
Ou dans le cas actuel (suppression des labels et des goto) :
| Code: | ... Disp E End (plus rien après mais attention à ne pas oublier le End sinon la boucle ne marche plus)
|
Gain : 1 octet Gain total : 20 octets
5.Utiliser vos connaissances en maths et en programmation
devient
ou :
Gain : 1 octet Gain total : 21 octets
6 (facultatif) : Installer Omnicalc ==>http://www.ticalc.org/archives/files/fileinfo/226/22626.html
voilà :)
Bilan final : + Le programme a 21 octets de moins et la vitesse en plus correspondante - euh...
code final après optimisation :
| Code: | DelVar BDelVar CDelVar D For(A,1,1000 (A+C)(B+D->E Disp E End
|
13+43 = 56 octets
N'hésitez pas à poster vos astuces !!! 
P.S : Attention pour les connaissances en programmation : le programme peut devenir plus complexe Attention aussi aux gros gros programmes, il faut avoir le cerveau correspondant  |
tiens je viens de trouver une nouvelle optimisation : au lieu d'utiliser E, utiliser Ans ici c'est plus avantageux : donc ça donne :
| Code: | DelVar BDelVar CDelVar D For(A,1,1000 (A+C)(B+D Disp Ans End
|
J'ai gagné 2 octets  donc taille finale => 13+41=54 octets (ce qui fait une optimisation de 43% =)) |
|  | | kindermoumoute Initié


Age: 15 Classe: 2nd Calculatrice(s): TI collège, TI-83+ Messages: 30 Efficacité: 0 Date d'inscription: 30/09/2009
Divers Dernière note en maths: 7/20
 | Sujet: Re: Astuces Lun 19 Oct - 13:04 | |
| | tama a écrit: | (héhé je me mets à l'ASM z80 syfo fais gaffe ) Bon j'ai trouvé un truc assez intéressant pour ceux qui veulent des trucs avancés dans leurs programmes et qui ne peuvent pas ou ne veulent pas télécharger de programmes ASM C'est l'équivalent des chaines Exec pour les 68k : Allez commençons : 2 façons : Utiliser la commande ExecAsm de Omnicalc ([PRGM] 2 fois) puis rentrer la chaine ou -Créer un nouveau programme -Mettre ASMPrgm sur la première ligne (c'est dans le Catalog : [2nd]+[0]) -Taper les chiffres/lettres à la suite -Ne pas oublier d'ajouter C9 à la fin du programme sinon ça bug -Pour appeler : Asm(nomduprogramme Ah oui aussi pour les fonctions sur l'écran il faut ajouter : EF6A48 à la fin pour rafraichir l'écran. Bon on commence :
- Scroller l'écran à droite : 2140930E40060CB7CB1E2310FB0D20F5
- Scroller l'écran à gauche : 213F960E40060CB7CB162B10FB0D20F5
- Scroller l'écran en haut : 214C9311409301F402EDB0EB010C00EF304C
- Scroller l'écran en bas : 213396113F9601F402EDB823010C00EF304C
- Augmenter le contraste : 2147847EC604FE28D077C6D8CD0B00D310
- Diminuer le contraste : 2147847ED604D877C6D8CD0B00D310
- Mettre le contraste contenu dans X : EFE04AEFEF4AC6C0CD0B00D310
- Graph tout noir : 2140930100033EFFEF334C
- Effacer graph : EFD04B
- Inverser l'écran Home : FDCB05DEEF7945FDCB059E
- Inverser graph : 2140930100037E2F77230B78B120F7
- Inverser tous les écrans :
F33E20CD0B00D3103E80CD0B00D310060EC5063F2E7FCD0B00DB112C CD0B00DB112FF57DCD0B00D311CD0B00DB11F1CD0B00D31110E5C110D8
- Cercles rapides : FDCB3CE6
- Ecran on/off: DB10CB6F20053E03D310C93E02D310
- Alpha lock : FDCB12E6FDCB12F6
- Permettre les minuscules : 21148A3E08AE77
- Enlever done: FDCB00AE
- Texte inversé ou non : 21F5893E08AE77
- APD : 210101224884FDCB08DEFB76
- Mettre l'APD à X (X=variable X) : EFE04AEFEF4AEB214884732372
- Eteindre la TI : 3E01D30376FDCB09A6
- "Powerdown" : EF0850
- Etat des batteries (dans Ans) : EFBF41EFB3502803EF9B41EFBF4A
- RAM libre : EFE542EF9247EF5641EFBF4A
- Version de l'OS : EF6F4CF578EF8C47EF6742EF6742F1EF8F47F7EFBF4A
- Version de l'Hardware : EFBA80EF8C47EFBF4A
- Getkey: EF7045FB76EF4447B728F8EF5641EFD14A
Il faut être prudent en utilisant ces chaines, comme pour les chaines Exec un seul chiffre faux et tout devient différent (crash voire pire ?) Voilà c'était l'astuce du jour =) le lien : http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm
|
Dit moi avec le execAsm de omnicalc on peut marquer directement dans un programme:
| Code: | :If X=1:ExecAsm(3E01D30376FDCB09A6 //éteindre TI |
par exemple?
EDIT : Je viens d'essayer mais sans succès "ERR:SYNTAX" |
|  | | tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Lun 19 Oct - 22:10 | |
| c'est real(33,"chaine" si je me souviens bien, appuie 2 fois sur [PRGM] pour voir le menu avec les trucs spéciaux |
|  | | Bisam Elite


Age: 32 Classe: Prof de Maths Sup Calculatrice(s): Voyage 200 + TI 92 (de 1996) Messages: 791 Efficacité: 7 Localisation: Lyon Date d'inscription: 11/03/2008
Divers Dernière note en maths: 14.8/20 à la 2ème épreuve de l'agreg 2000
 | Sujet: Re: Astuces Mar 20 Oct - 15:15 | |
| | Tama a écrit: | tiens je viens de trouver une nouvelle optimisation : au lieu d'utiliser E, utiliser Ans ici c'est plus avantageux :
donc ça donne :
| Code: | DelVar BDelVar CDelVar D For(A,1,1000 (A+C)(B+D Disp Ans End
|
J'ai gagné 2 octets donc taille finale => 13+41=54 octets (ce qui fait une optimisation de 43% =)) |
Allez, soyons fou et optimisons encore !!
| Code: | DelVar BDelVar CDelVar D For(A,1,1000 Disp (A+C)(B+D End
|
et puisque B, C et D valent 0, ils ne servent à rien et donc le programme devient :
| Code: | For(A,1,1000 Disp 0 End
|
Là, c'est vraiment optimal ! (Mais le programme ne sert vraiment à rien...)  |
|  | | AdRiWeB Légende


Age: 17 Classe: Term. S Calculatrice(s): TI-84+, Nspire CAS, Nspire CAS+ Messages: 1199 Efficacité: 1 Localisation: Sur ma chaise Date d'inscription: 01/06/2007
Divers Dernière note en maths: 100 % ^^
 | Sujet: Re: Astuces Mar 20 Oct - 17:29 | |
| |
|  | | kindermoumoute Initié


Age: 15 Classe: 2nd Calculatrice(s): TI collège, TI-83+ Messages: 30 Efficacité: 0 Date d'inscription: 30/09/2009
Divers Dernière note en maths: 7/20
 | Sujet: Re: Astuces Mar 20 Oct - 18:09 | |
| | tama a écrit: | | c'est real(33,"chaine" si je me souviens bien, appuie 2 fois sur [PRGM] pour voir le menu avec les trucs spéciaux |
ouai mais le programme ne marhera que sur les Ti muni d'omnicalc. |
|  | | DJ Omnimaga Guide


Age: 23 Classe: Fini l'école depuis 2003 Calculatrice(s): TI-73, 80, 81, 82, 83, 83+ (link port brisé), 83+, 83+SE (défectueuse), 85, 86, 89T, 92-I, Nspire, Casio FX-7000G, 7400G+, 7700GE, 9750G+, 9850G, 9860G, AFX 1.0 Messages: 129 Efficacité: 6 Localisation: Quebec (Canada) Date d'inscription: 09/09/2005
Divers Dernière note en maths: -/20
 | Sujet: Re: Astuces Mer 21 Oct - 10:24 | |
| Optimisation très étrange de la commande For( For(Z,0,100 If Z=50 Disp "HI End est plus lent que For(Z,0,100) If Z=50 Disp "HI End Un bug du système d'exploitation TI-83/84+ fait en sorte que quand on ne ferme pas la parhentèse à la fin d'un For(, si la boucle ne contient qu'une condition If sans Then, à chaque fois que la condition If sera fausse, sa vitesse d'exécution sera réduite de façon considérable, même que dans certain cas (surtout en BASIC étendu), le reste du programme tournera plus lentement après et pour corriger le problème, il faut alors appuyer sur ON. Preuve ci-dessous:  Le problème survient aussi avec les instructions IS<( et DS>(, sauf que dans ce cas ça n'a pas d'importance si la condition est fausse ou pas, le problème surviendra quand même si elle est vraie Ce bug de TI pourrait expliquer pourquoi certains jeux optimisés à fond roule lentement quand même. _________________  |
|  | | Marco Elite


Age: 19 Classe: PSI ISEP Calculatrice(s): TI 83+ Messages: 642 Efficacité: 17 Localisation: 78 Date d'inscription: 22/03/2009
Divers Dernière note en maths: -/20
 | Sujet: Re: Astuces Mer 21 Oct - 17:59 | |
| Très intéressant, en effet ça explique pas mal de choses. J'avais remarqué que la vitesse d'exécution de certain programmes diminuait dans le temps sans savoir pourquoi. Est-ce que le fait d'utiliser un programme lourd en mémoire ralentit la calculatrice lorsqu'il est écrit en basic ? _________________  |
|  | | DJ Omnimaga Guide


Age: 23 Classe: Fini l'école depuis 2003 Calculatrice(s): TI-73, 80, 81, 82, 83, 83+ (link port brisé), 83+, 83+SE (défectueuse), 85, 86, 89T, 92-I, Nspire, Casio FX-7000G, 7400G+, 7700GE, 9750G+, 9850G, 9860G, AFX 1.0 Messages: 129 Efficacité: 6 Localisation: Quebec (Canada) Date d'inscription: 09/09/2005
Divers Dernière note en maths: -/20
 | Sujet: Re: Astuces Mer 21 Oct - 19:45 | |
| Au début je pensais que plus tu avais de progs dans ta liste PRGM, plus ça ralentissait le langage BASIC, mais j'était sceptique. Un moment donné, j'ai fait tourner Metroid II Evolution après avoir supprimé tous les programmes de Boss et toute les Maps non-nécessaire pour jouer à partir de mon dernier sauvegarde, et surprise: ça ne tournait pas plus vite. Je crois que certains de mes vieux prog BASIC ont des boucles For( avec des Ifs dedans. Je vais devoir vérifier un jour pour voir si ce n'est pas ça qui fait ralentir le tout. Au fait, je suis en train de compiler une liste de tous les bugs des systèmes d'exploitation TI-83+ et TI-84+ dans un topic sur mon forum (en anglais): http://www.omnimaga.org/index.php?topic=1090Cette liste inclut le mythique bug d'Equ>String( qui était présent sur les vieux systèmes d'exploitation TI et qui était quand même assez populaire à l'époque où j'ai commencer à programmer sur TI. Il était nottament utiliser par des étudiants pour... planter la TI de leurs camarades de classe. <_< _________________  |
|  | | tama Animateur


Age: 18 Classe: oui. (2ème année à l'Epita, sinon) Calculatrice(s): TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:) Messages: 10278 Efficacité: 29 Localisation: Paris ... dans un rayon de 15 km Date d'inscription: 19/12/2005
Divers Dernière note en maths: 13/20
 | Sujet: Re: Astuces Mer 21 Oct - 20:19 | |
| kindermoumoute>bah oui ^^ mais sinon tu peux créer un programme (par exemple prgmSCROLL) , le mettre sous la forme : :AsmPrgm (dans le catalogue) :"Chaine de caractère sans les guillemets puis utiliser AsmComp(prgm _nom_du_programme_contenant_le_code_hexa, prgmnomduprogrammeASM) pour obtenir le programme ASM correspondant que t'utiliseras à partir de ton programme principal avec Asm( nomduprogrammecompilé) Par exemple, AsmComp(prgmSCROLL,prgmSCROLLA) |
|  | | |
| Page 8 sur 8 | Aller à la page : 1, 2, 3, 4, 5, 6, 7, 8 |
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|