Page 1 of 1

Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 27 Feb 2020, 16:07
by Larwive
Bonjour,
en me promenant parmi les partenaires de TI-Planet, je suis tombé sur Espace TI qui propose une page d'aide à l'optimisation en TI-Basic.
Malgré que le guide a été fait pour TI-82 Stats et TI-83 (tout court), cela s'applique aussi (au moins la plupart) pour les nouvelles versions, TI-82 Advanced, TI-83 Premium CE (Edition Python ou pas).

N'hésitez pas à signaler des méthodes d'optimisations qui auraient été oublié. :) Ce topic sera mis à jour en cas de besoin.
Dernière mise à jour : 27/02/2020
Merci à grosged et tous ceux qui ont répondu au topic pour leur participation !

Page en question : http://espace-ti.e-monsite.com/pages/as ... ctets.html

La fin d'une fonction et juste avant la flèche d'affectation:
Tout d'abord, sachez que si vous enlevez la parenthèse ou le guillemet à la fin d'une fonction, vous pouvez faire de la place tout en n'ayant aucune erreur, par exemple:

12215

Les parenthèses ne sont pas toujours obligatoires:

12217

Attention: Ceci ne fonctionne pas au milieu d'un calcul:

12218
Sinon vous ajoutez 1/2 à A à la place de diviser A+1 par 2.

Les multiplications:
12221

12225

Une seule instruction dans un If:
Ensuite, si vous n'avez qu'une seule instruction après la condition de If, vous pouvez vous passer de Then et End.

12219

Ici par exemple vous gagnez quatre octets. Par contre cela ne fonctionne pas si vous avez plusieurs instructions entre Then et End.

Ecriture simplifiée d'un nombre:
Vous connaissez les puissances de dix et les nombres décimaux ? Eh bien nous allons les utiliser ici, par exemple:

12220

12224

Sachez que devant un nombre décimal compris entre 0 et 1 vous n'êtes pas obligé de mettre le zéro devant le point.

L'inversion des opérations:

12222

Divers "petits trucs":

12226
Quand vous mettez plusieurs EffVar à la suite, vous n'êtes pas obligé de sauter une ligne ni de mettre les deux points:

12230
(Sachez que sur certaines calculatrices en français on a EffVar au lieu de DelVar.)

L'algèbre :
12231

12233

12234
Dans ce cas, le getKey avec 24 et 26 correspondent aux flèches gauche et droite. Si A=24, la parenthèse (A=24) est égale à 1, et si A=26, la parenthèse (A=26) est égale à 1.
N'oubliez pas que le If avec une instruction peut s'écrire sans le Then ni le End comme ici.

Les listes:
12232
Les accolades de fin et le petit L ne sont pas obligatoires.

Le getKey:

12235
Attention !
Vous deviez vouloir que la flèche bas soit enclenchée au moment du calcul pour simplifier le programme ! (getKey=34 correspond à la flèche bas)
Si vous vouliez garder en mémoire un getKey à un moment particulier avant le calcul, gardez la version non optimisée !


12238
Dans cet exemple qui ressemble à un précédent, on utilise Rep (ou Ans en anglais) qui garde en mémoire le dernier résultat.

Et maintenant une amélioration un peu plus technique, qui utilise la fonction max( :

12237
La fonction max( prend le maximum de ce qu'il y a juste après.
Ce morceau de programme détecte si une des flèches est appuyée.
Rappel :
getKey=24 : gauche
getKey=25 : haut
getKey=26 : droite
getKey=34 : bas

Variables:
Sachez aussi qu'utiliser la variable n utilise un octet de moins et son exécution par l'interprèteur Basic est plus rapide ! Cette variable est obtenable avec :f32: en mode Suite.
Attention
12214

Affichage de résultat:

En fin de programme, le Disp n'est pas utile car la variable dans Rep (ou Ans en anglais) est affiché automatiquement.
12239

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 27 Feb 2020, 16:14
by Hamza.S
Il y a une petite correction à apporter
Code: Select all
If A≠0

Peur s'écrire
Code: Select all
If not(A

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 27 Feb 2020, 16:18
by Larwive
Ajouté !

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 27 Feb 2020, 19:01
by Wistaro
Intéressant. Ça me rappelle des souvenirs :p

J'en avais aussi une autre pour les getkey.

Tu peux remplacer :

Code: Select all
GetKey → K
If K = 25 OR K = 24 OR K = 26 OR K = 34 Then
...
End


Par

Code: Select all
GetKey → K
If max(K={24,25,26,34 Then
...
End

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 27 Feb 2020, 21:07
by Larwive
Ajouté !
Ça serait peut-être plus visible si je les tape sur ma calculatrice ?

Déjà 38 édition du post originel !

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 05 Mar 2020, 23:26
by Wistaro
Cool!
Et yep :)

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 06 Mar 2020, 10:43
by edgar13
Pas mal! :bj:
Ça me rappelle ce petit tuto.

Re: Comment économiser des octets et optimiser (TI-Basic)

Unread postPosted: 09 Mar 2020, 19:45
by Larwive
edgar13 wrote:Pas mal! :bj:
Ça me rappelle ce petit tuto.


Je les rajouterai quand j'aurai le temps. ;)

[Edit du 11/06/2024] La page a été supprimée (ou déplacée) avant que j'ajoute les astuces. :(