Tout 82
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Connexion

Récupérer mon mot de passe

Chatbox externe


Derniers sujets
» [JEU] Mon voisin du dessous
Astuces de programmation EmptyDim 16 Oct 2022 - 21:11 par Wistaro

» Bonne année 2018!
Astuces de programmation EmptyVen 2 Nov 2018 - 19:42 par Ti64CLi++

» Lancement du TI-Concours 2017 !
Astuces de programmation EmptySam 20 Mai 2017 - 0:27 par Paulo1026

» Chaînes Youtube des membres
Astuces de programmation EmptyVen 19 Mai 2017 - 22:41 par Wistaro

» cacul du taux d'intêret
Astuces de programmation EmptyVen 24 Mar 2017 - 21:50 par m@thieu41

» [Projet] Un mario by tout82
Astuces de programmation EmptyDim 29 Jan 2017 - 14:09 par Wistaro

» Cherche documentation assembleur TI82stat
Astuces de programmation EmptyMer 25 Jan 2017 - 12:29 par Ti64CLi++

» Probleme Ti-82 Stats fr
Astuces de programmation EmptyJeu 12 Jan 2017 - 13:56 par Ti64CLi++

» ROM 82 stats.fr
Astuces de programmation EmptyJeu 15 Déc 2016 - 10:24 par Ti64CLi++

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

Le Deal du moment : -40%
-40% sur le Pack Gaming Mario PDP Manette filaire + ...
Voir le deal
29.99 €

Astuces de programmation

3 participants

Aller en bas

Astuces de programmation Empty Astuces de programmation

Message par Mingerton Dim 1 Mar 2015 - 20:19

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 Wink

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,"
Avec cette ligne en fin de code, le Done ne s'affiche pas et l'écran est tel qu'il était à l'arrêt du programme. On peut faire un peu plus court cependant :

Code:
//Code...
"
Une seul guillemet, un seul octet ! Cependant, cette méthode affiche une ligne vide en fin de programme et donc décale ce qui est affiché plus haut. Si cet effet n'est pas voulu, préférer la première méthode.

Code:
//Code
Nombre, test
En effet, en fin de code, il est inutile de dire au programme d'afficher le dernier résultat, sauf si celui ci est dans une boucle. Il affichera le dernier résultat automatiquement, avec défilement si c'est une liste/chaîne plus longue que 16 caractères, sans besoin de Disp ou de Pause. Le Done n'est alors pas affiché non plus !


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...
C'est plus court, on n'utilise pas K et moins d'octets ! Attention cependant, à n'utiliser que pour des valeurs ponctuelles, puisque getkey peut changer de valeur à chaque pression de touche.


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 Shocked ! 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 Very Happy ! 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 Wink


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
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par m@thieu41 Mer 4 Mar 2015 - 21:11

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...
m@thieu41
m@thieu41
----------------------
----------------------

Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Mingerton Mer 4 Mar 2015 - 22:12

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.

m@thieu41 a écrit:Et aussi getkey ne renvoie qu'une seule fois la touche pressée...
C'est pourquoi j'ai précisé en rouge de faire attention à n'utiliser ce remplacement que pour une valeur ponctuelle.

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. Wink
Mingerton
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Wistaro Jeu 5 Mar 2015 - 19:25

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:

Code:

1.3->A

iPart(A) //vaut 1
10fPart(A) //vaut 3

Mais ta technique est plus complète Smile


Wistaro
Wistaro
Passioné
Passioné

Messages : 918
Points Concours : 86
Productivité : 28
Date d'inscription : 16/06/2013
Localisation : Tarbes - DUT GEII
Calculatrice(s) :
  • TI-82
  • TI-82 Stats
  • TI-82 Stats.fr

. : TI-82 Stats.fr

https://www.youtube.com/user/Wistaro

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Mingerton Jeu 5 Mar 2015 - 20:17

Merci ! Smile

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
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Wistaro Ven 6 Mar 2015 - 9:54

Okay!

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à
Wistaro
Wistaro
Passioné
Passioné

Messages : 918
Points Concours : 86
Productivité : 28
Date d'inscription : 16/06/2013
Localisation : Tarbes - DUT GEII
Calculatrice(s) :
  • TI-82
  • TI-82 Stats
  • TI-82 Stats.fr

. : TI-82 Stats.fr

https://www.youtube.com/user/Wistaro

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Mingerton Ven 6 Mar 2015 - 15:39

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 Smile
Mingerton
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Wistaro Ven 6 Mar 2015 - 17:07

Okay
Wistaro
Wistaro
Passioné
Passioné

Messages : 918
Points Concours : 86
Productivité : 28
Date d'inscription : 16/06/2013
Localisation : Tarbes - DUT GEII
Calculatrice(s) :
  • TI-82
  • TI-82 Stats
  • TI-82 Stats.fr

. : TI-82 Stats.fr

https://www.youtube.com/user/Wistaro

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par m@thieu41 Ven 6 Mar 2015 - 19:41

Je ne suis pas sur que tu ai compris ce que je veux dire Wink
Code:

Repeat getKey
getkey
End
If getkey=...
A chaque fois que getkey est appelé, la valeur est perdue si elle n'est pas stockée
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
m@thieu41
----------------------
----------------------

Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Mingerton Ven 6 Mar 2015 - 20:40

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 ! :P
Mingerton
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Mingerton Lun 9 Mar 2015 - 19:39

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 ? Wink
Mingerton
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Revenir en haut Aller en bas

Astuces de programmation Empty Re: Astuces de programmation

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum