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...).
AccueilPortailCalendrierFAQRechercherS’enregistrerConnexion
 

Astuces

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédente  1, 2, 3, 4, 5, 6, 7, 8
AuteurMessage
tama
Animateur
Animateur


Sexe:MasculinLionChèvre
Age : 17
Inscrit le : 19 Déc 2005
Messages : 9397
Localisation : quelque part en France...
Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Classe : Terminale S spé maths


Impureté:
-9/500  (-9/500)
Dernière note en maths: 13/20

MessageSujet: Re: Astuces   Mer 1 Nov - 19: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
_________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed>
Revenir en haut Aller en bas
tama
Animateur
Animateur


Sexe:MasculinLionChèvre
Age : 17
Inscrit le : 19 Déc 2005
Messages : 9397
Localisation : quelque part en France...
Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Classe : Terminale S spé maths


Impureté:
-9/500  (-9/500)
Dernière note en maths: 13/20

MessageSujet: Re: Astuces   Lun 21 Mai - 19: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à ^^
_________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed>
Revenir en haut Aller en bas
adriweb
Elite
Elite


Sexe:MasculinGémeauxSinge
Age : 16
Inscrit le : 01 Juin 2007
Messages : 787
Localisation : Sur ma chaise
Calculatrice : TI-84+
Classe : 1ère S


Impureté:
-1/450  (-1/450)
Dernière note en maths: **/20 ^^

MessageSujet: Re: Astuces   Sam 9 Juin - 8: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

_________________
http://ti83-84.skyblog.com : LE blog des 83+ et des 84+



En cours :
- Un RPG (z80) => 60%
- Un pack utilitaire graphique (z80) => 25%


MON DIEU, SURTOUT NE CLIQUEZ PAS ICI
Revenir en haut Aller en bas
tama
Animateur
Animateur


Sexe:MasculinLionChèvre
Age : 17
Inscrit le : 19 Déc 2005
Messages : 9397
Localisation : quelque part en France...
Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Classe : Terminale S spé maths


Impureté:
-9/500  (-9/500)
Dernière note en maths: 13/20

MessageSujet: Re: Astuces   Dim 10 Juin - 16:42

cf premier post ^^
_________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed>
Revenir en haut Aller en bas
tama
Animateur
Animateur


Sexe:MasculinLionChèvre
Age : 17
Inscrit le : 19 Déc 2005
Messages : 9397
Localisation : quelque part en France...
Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Classe : Terminale S spé maths


Impureté:
-9/500  (-9/500)
Dernière note en maths: 13/20

MessageSujet: Re: Astuces   Mar 26 Juin - 11: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 !


[url=http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm][/url]
_________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed>
Revenir en haut Aller en bas
tama
Animateur
Animateur


Sexe:MasculinLionChèvre
Age : 17
Inscrit le : 19 Déc 2005
Messages : 9397
Localisation : quelque part en France...
Calculatrice : TI-84+, TI89 tita HW3, TI89 tita HW4 (eh oui, 3 TI :#geek#:)
Classe : Terminale S spé maths


Impureté:
-9/500  (-9/500)
Dernière note en maths: 13/20

MessageSujet: Re: Astuces   Ven 29 Juin - 19: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
Code:

(A+B)x(C+D)->E


devient :
Code:

(A+B)x(C+D->E


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)

Code:

0->A:0->B:0->C:0->D


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

Code:

Lbl 1
Stop


devient :
Code:

Lbl 1


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

Code:

(A+B)x(C+D->E


devient

Code:

(A+B)(C+D->E


ou :
Code:

AC+AD+BC+BD->E


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% =))
_________________
<embed src="http://www.mirari.fr/OVRh.swf" width="550" height="150" align="middle" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptAccess="always"></embed>
Revenir en haut Aller en bas

Astuces

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 8 sur 8Aller à la page : Précédente  1, 2, 3, 4, 5, 6, 7, 8

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Forum de TI-BANK.fr :: Forum TIz80 :: Programmation-