Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
Astuces de programmation
3 participants
Astuces de programmation
Bonjour à tous !
Je rassemble dans cet article des astuces de programmation, leur effet, leur avantage et désavantage. Il est voué à être complété au fur et à mesure, avec votre aide bien sûr
Les dénominations internationales des modèles sont utilisées dans cet article
Effacer le Fait/Done à la fin d'un programme
Ce mot à la fin du programme est affiché automatiquement à la fin d'un programme. Seulement, il peut être inesthétique ou déranger une fin d'exécution de programme. Il existe cependant plusieurs manières de le contourner :
Les variables du codetouche/getkey
Pour détecter et attendre la pression d'une touche, il existe un code infaillible :
Cependant, il est tout à fait possible d'économiser des octets et la variable K :
A la recherche de nouvelles variables...
Ecrit à l'aide de l'article Plus de variables sur la TI-82 Stats(.fr) de Persalteas
Vous savez certainement ce qu'est une variable, ces lettres dans lesquelles on peut stocker un nombre durablement, pour l'utiliser dans des calculs. Il y en a 27 :
Eh bien, on vous l'avait caché, mais dans votre menu Finance (83 : 2nd-x^-1 ; 83+ : 2nd-App-Enter) se cachent 7 nouvelles variables, qui fonctionnent commes les autres !
Toutes les variables des menus Vars-1 et Vars-2 fonctionnent aussi comme les autres, soit quelques 44 variables supplémentaires ! Attention cependant, si vous utilisez le graphe, ne touchez pas à tout le menu X/Y de Vars-1 pour d'autrs utilisations que l'initialisation du graphe ! De même pour les variables de zoom, n'oubliez pas de les éinitialiser en fin de programme avec ZStandard.
Une chose à savoir : la variable TblInput est une liste système supplémementaire ! Elle peut contenir jusqu'à 7 éléments et règle les valeurs en entrées du tableau de valeurs. Les programmeurs vont être contents ! Plus de précisions dans mon article sur la gestion des tableaux en Basic (url à venir...)
Vous êtes dans un code où les variables sont très utilisées, il vous en faut plus... Eh bien c'est pas encore fini ! On peut utiliser les trois variables des suites, u, v et w (avec 2nd-7, 2nd-8 ou 2nd-9), précédées elles d'un guillemet :
On peut aussi détourner d'autres variables, comme les chaînes, les fonctions, les matrices ou les listes !
Enfin, il existe une variable très pratique, et qui ne prend qu'un octet. A manier avec précaution pas contre : la variable Ans (Rep). Elle stocke le résultat de chaque calcul effectué.
Les lettres minuscules
Reboot de l'article Ecrire en minuscules sur la TI 82 Stats(.fr) de Persalteas sur l'ancien Tout82
Pour avoir un peu plus "la classe", je suis certain que vous avez déjà voulu utiliser des lettres minuscules, présentes dans la plupart des tokens mais pas accesibles spontanément; Pourtant, avec un peu de savoir faire, on peut en récupérer quelques unes :
La condition ternaire
Dans votre code, vous avez forcément déjà utilisé des conditions. Un exemple :
Bouh que c'est laid ! Déjà, avant d'aborder la condition ternaire, sachez que si une seul commande dépend d'un If, ce code équivaut à celui ci :
Maintenant, vous allez pouvoir encore simplifier, sans le If !
Alors, qu'est ce qui se passe ? C'est bien simple, c'est un test booléen, dont le résultat est 1 ou 0. Par exemple, si vous tapez 53=1 sur votre calculatrice, elle afficher 0. magique hein ? Eh bien on l'applique dans le proramme :
Ces conditions sont très rapides et très légères, cherchez toujours à les utiliser, elles peuvent s'appliquer très souvent. Voici par exemple un morceau de code que je ne veux voir s'effectuer qu'une seule fois dans ma boucle :
C'est un exemple, les apllications sont bien plus poussées, à vous de les trouver
Les nombres-listes
Cette partie est un déterrage d'un tuto de Ratuss avec l'aide de vibra sur l'ancien Tout82
Vous savez certainement ce qu'est une liste. Il s'agit d'une suite de nombres stockés dans une seule variable. Quelque chose comme ça :
Si vous en avez déjà utilisé, vous avez aussi que ces variabes sont très lourdes ! En effet, on gagne 12 octets dans le poids de la listes à chaque fois qu'on lui ajoute un terme. Il existe pourtant un moyen d'utiliser un nombre comme liste. On reprend la même liste :
Pour extraire un terme, on applique la formule suivante :
int(10fPart(Aᴇ(X-1
Avec : - A le nombre utilisé comme liste
- X le rang à atteindre
Cette astuce ne fonctionne bien sûr que pour les listes de moins de 14 termes, la précision de la calculatrice ne permet pas plus.
A compléter avec les nombres-matrices...
Je rassemble dans cet article des astuces de programmation, leur effet, leur avantage et désavantage. Il est voué à être complété au fur et à mesure, avec votre aide bien sûr
Les dénominations internationales des modèles sont utilisées dans cet article
Effacer le Fait/Done à la fin d'un programme
Ce mot à la fin du programme est affiché automatiquement à la fin d'un programme. Seulement, il peut être inesthétique ou déranger une fin d'exécution de programme. Il existe cependant plusieurs manières de le contourner :
- Code:
//Code...
Output(1,1,"
- Code:
//Code...
"
- Code:
//Code
Nombre, test
Les variables du codetouche/getkey
Pour détecter et attendre la pression d'une touche, il existe un code infaillible :
- Code:
Repeat K
getkey->K
End
If K=...
Cependant, il est tout à fait possible d'économiser des octets et la variable K :
- Code:
Repeat Ans
getkey
End
If Ans...
A la recherche de nouvelles variables...
Ecrit à l'aide de l'article Plus de variables sur la TI-82 Stats(.fr) de Persalteas
Vous savez certainement ce qu'est une variable, ces lettres dans lesquelles on peut stocker un nombre durablement, pour l'utiliser dans des calculs. Il y en a 27 :
- Code:
ABCDEFGHIJKLMNOPQRSTUVWXYZθ
Eh bien, on vous l'avait caché, mais dans votre menu Finance (83 : 2nd-x^-1 ; 83+ : 2nd-App-Enter) se cachent 7 nouvelles variables, qui fonctionnent commes les autres !
- Code:
I%,N,PV,PMT,FV,P/Y,C/Y
//et en français :
I%,N,ValAct,PMT,ValAcq,Ech/an,Per/an
Toutes les variables des menus Vars-1 et Vars-2 fonctionnent aussi comme les autres, soit quelques 44 variables supplémentaires ! Attention cependant, si vous utilisez le graphe, ne touchez pas à tout le menu X/Y de Vars-1 pour d'autrs utilisations que l'initialisation du graphe ! De même pour les variables de zoom, n'oubliez pas de les éinitialiser en fin de programme avec ZStandard.
Une chose à savoir : la variable TblInput est une liste système supplémementaire ! Elle peut contenir jusqu'à 7 éléments et règle les valeurs en entrées du tableau de valeurs. Les programmeurs vont être contents ! Plus de précisions dans mon article sur la gestion des tableaux en Basic (url à venir...)
Vous êtes dans un code où les variables sont très utilisées, il vous en faut plus... Eh bien c'est pas encore fini ! On peut utiliser les trois variables des suites, u, v et w (avec 2nd-7, 2nd-8 ou 2nd-9), précédées elles d'un guillemet :
- Code:
53->u //NON !
"53->U //c'est bien !
On peut aussi détourner d'autres variables, comme les chaînes, les fonctions, les matrices ou les listes !
- Code:
"1->Str1
Disp expr(Str1 //on calcule ce qu'il y a entre les guillemets
"1->Y1
Disp Y1
{1->L1
Disp L1
[[1->[A]
Disp [A]
Enfin, il existe une variable très pratique, et qui ne prend qu'un octet. A manier avec précaution pas contre : la variable Ans (Rep). Elle stocke le résultat de chaque calcul effectué.
Les lettres minuscules
Reboot de l'article Ecrire en minuscules sur la TI 82 Stats(.fr) de Persalteas sur l'ancien Tout82
Pour avoir un peu plus "la classe", je suis certain que vous avez déjà voulu utiliser des lettres minuscules, présentes dans la plupart des tokens mais pas accesibles spontanément; Pourtant, avec un peu de savoir faire, on peut en récupérer quelques unes :
- Code:
a [var][5][>][>][2]
b [var][5][>][>][3]
c [var][5][>][>][4]
d [var][5][>][>][5]
e [2nd][/]
i [2nd][.] c'est la lettre grecque iota mais peu importe... ^
l [1] oui, un 1 ressemble vachement à un L minuscule...
n [var][5][1]
p [var][5][<][<][1]
r [var][5][>][>][7]
s [var][5][<][<][0]
t [var][5][<][<][3]
u [2nd][7]
v [2nd][8]
w [2nd][9]
z [var][5][<][<][2]
La condition ternaire
Dans votre code, vous avez forcément déjà utilisé des conditions. Un exemple :
- Code:
Prompt A
If A=1
Then
53->A
End
If A=53
Then
1->A
End
Bouh que c'est laid ! Déjà, avant d'aborder la condition ternaire, sachez que si une seul commande dépend d'un If, ce code équivaut à celui ci :
- Code:
Prompt A
If A=1
53->A
If A=53
1->A
Maintenant, vous allez pouvoir encore simplifier, sans le If !
- Code:
A+52(A=1)-52(A=53->A
Alors, qu'est ce qui se passe ? C'est bien simple, c'est un test booléen, dont le résultat est 1 ou 0. Par exemple, si vous tapez 53=1 sur votre calculatrice, elle afficher 0. magique hein ? Eh bien on l'applique dans le proramme :
- Code:
A+52(A=1) //Si A=1 est vrai, alors A=1 vaut 1 ; A+52*1=1+52=53
A-52(A=53) //Si A=53 est vrai, alors A=53 vaut 1 ; A-52*1=53-52=1
//et comme A=1 et A=53 ne peuvent pas arriver en même temps, on concatène le tout dans une ligne :
A+52(A=1)-52(A=53->A
Ces conditions sont très rapides et très légères, cherchez toujours à les utiliser, elles peuvent s'appliquer très souvent. Voici par exemple un morceau de code que je ne veux voir s'effectuer qu'une seule fois dans ma boucle :
- Code:
1->G:53->B
For(A,1,53
If GB
Then
DelVar GDisp "HELLO WORLD !
End
Disp "ON A DEPASSE G
End
C'est un exemple, les apllications sont bien plus poussées, à vous de les trouver
Les nombres-listes
Cette partie est un déterrage d'un tuto de Ratuss avec l'aide de vibra sur l'ancien Tout82
Vous savez certainement ce qu'est une liste. Il s'agit d'une suite de nombres stockés dans une seule variable. Quelque chose comme ça :
- Code:
{1,2,2,1,6,5,9,8,7->L1
//On extrait un terme de cette manière :
L1(rang du terme
Si vous en avez déjà utilisé, vous avez aussi que ces variabes sont très lourdes ! En effet, on gagne 12 octets dans le poids de la listes à chaque fois qu'on lui ajoute un terme. Il existe pourtant un moyen d'utiliser un nombre comme liste. On reprend la même liste :
- Code:
.122165987->A
//10 octets au lieu de... 120 !
Pour extraire un terme, on applique la formule suivante :
int(10fPart(Aᴇ(X-1
Avec : - A le nombre utilisé comme liste
- X le rang à atteindre
Cette astuce ne fonctionne bien sûr que pour les listes de moins de 14 termes, la précision de la calculatrice ne permet pas plus.
A compléter avec les nombres-matrices...
Dernière édition par Mingerton le Lun 9 Mar 2015 - 19:42, édité 3 fois (Raison : Correction code getKey)
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Astuces de programmation
Bonne idée comme tuto, a relier avec celui sur l optimisation
Concernant :
"Les variables du codetouche/getkey"
Il me semble que ton code est tout a fait faux.
Ton K ne varie pas alors qu'il est dans la condition de sortie.
Et aussi getkey ne renvoie qu'une seule fois la touche pressée...
Concernant :
"Les variables du codetouche/getkey"
Il me semble que ton code est tout a fait faux.
Ton K ne varie pas alors qu'il est dans la condition de sortie.
Et aussi getkey ne renvoie qu'une seule fois la touche pressée...
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Astuces de programmation
Maintenant que tu le dis... c'est vrai que j'ai pas vraiment testé, j'ai refait le même sans le K. C'est vrai que ça pose problème du coup. Je corrige avec un code qui marche.
J'ai retiré certaines parties pour les mettre dans un autre article plus généraliste, je rappelle que si certaines astuces de programmation manquent à l'appel, il faut me les signaler pour avoir un article complet. Pour les astuces diverses et plus généralistes, je bosse là dessus en ce moment, et dès la fin du concours d'algo de TIPlanet je devrais le mettre en ligne.
C'est pourquoi j'ai précisé en rouge de faire attention à n'utiliser ce remplacement que pour une valeur ponctuelle.m@thieu41 a écrit:Et aussi getkey ne renvoie qu'une seule fois la touche pressée...
J'ai retiré certaines parties pour les mettre dans un autre article plus généraliste, je rappelle que si certaines astuces de programmation manquent à l'appel, il faut me les signaler pour avoir un article complet. Pour les astuces diverses et plus généralistes, je bosse là dessus en ce moment, et dès la fin du concours d'algo de TIPlanet je devrais le mettre en ligne.
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Astuces de programmation
Le concours d'algorithmes sur les molécules ?
Sinon très bon topic!
Je ne savais pas pour les variables de finances, c'est extrêmement utile en fait 0_o
Pour stocker 2 nombre dans une variable, je fais:
Mais ta technique est plus complète
Sinon très bon topic!
Je ne savais pas pour les variables de finances, c'est extrêmement utile en fait 0_o
Pour stocker 2 nombre dans une variable, je fais:
- Code:
1.3->A
iPart(A) //vaut 1
10fPart(A) //vaut 3
Mais ta technique est plus complète
Re: Astuces de programmation
Merci !
Je prépare en ce moment le concours d'algo sur les isopséphies. En fait j'ai fini, il me manque que la question B. Enfin, peu importe...
Je prépare en ce moment le concours d'algo sur les isopséphies. En fait j'ai fini, il me manque que la question B. Enfin, peu importe...
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Astuces de programmation
Okay!
J'ai aussi une autre astuce, pour limiter des ifd:
On peut remplacer ça :
Par ça :
Généralisable, mais le concept est là
J'ai aussi une autre astuce, pour limiter des ifd:
On peut remplacer ça :
- Code:
If A=40: 1->B
If A=36: 13->B
If A=16: 03->B
If A=17: 6->B
If A=93: 0.5->B
If A=13: 1->B
Par ça :
- Code:
{40,36,16,17, 93, 13->L1
{1,13,0.3,6,05,1->L2
max((A=L1)(L2))->B
Généralisable, mais le concept est là
Re: Astuces de programmation
Ah, merci du rappel mais je conservais quelques gros articles de l'ancien Tout82 comme celui ci pour des articles à part entière, car ils le méritent amplement. Cela concerne la plupart des articles de Linkakro, je lui ai envoyé un MP pour l'autorisation, il ne m'a pas répondu pour l'instant.
Du coup c'est bien que ça soit écrit quelque part en attendant
Du coup c'est bien que ça soit écrit quelque part en attendant
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Astuces de programmation
Je ne suis pas sur que tu ai compris ce que je veux dire
getkey ne renvoi la touche pressée qu'une unique fois, puis 0 les fois suivantes.
Une alternative si la valeur ne sert qu'une fois serait :
- Code:
Repeat getKey
getkey
End
If getkey=...
getkey ne renvoi la touche pressée qu'une unique fois, puis 0 les fois suivantes.
Une alternative si la valeur ne sert qu'une fois serait :
- Code:
Repeat Ans
getkey
End
If Ans...
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Astuces de programmation
Ah ok. En fait je pensais que si on était dans la boucle Repeat la valeur du getKey serait initialisée à chaque tour. Je corrige dès que je suis sur un poste digne de ce nom.
Ahlala, pas si facile de se débarasser de ce K !
Ahlala, pas si facile de se débarasser de ce K !
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Re: Astuces de programmation
J'ai trouvé une super astuce de programmation sur les tableaux, je vais bientôt en faire un tuto ! J'ajoute quand même le truc sur ce tuto :
TblInput est une liste système supplémentaire, à 7 éléments. Elle règle les 7 valeurs du tableau de valeurs des fonctions. Pas mal pour les programmeurs à qui ça manquait non ?
TblInput est une liste système supplémentaire, à 7 éléments. Elle règle les 7 valeurs du tableau de valeurs des fonctions. Pas mal pour les programmeurs à qui ça manquait non ?
Mingerton- ----------------------
- Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++