Astuces de programmation Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème

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

Sam 27 Avr 2024 - Bienvenue,

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 :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Astuces de programmation

3 participants

Aller en bas  Message [Page 1 sur 1]

1Astuces de programmation Empty Astuces de programmation Dim 1 Mar 2015 - 20:19

Mingerton

Mingerton
----------------------
----------------------

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)

2Astuces de programmation Empty Re: Astuces de programmation Mer 4 Mar 2015 - 21:11

m@thieu41

m@thieu41
----------------------
----------------------

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

3Astuces de programmation Empty Re: Astuces de programmation Mer 4 Mar 2015 - 22:12

Mingerton

Mingerton
----------------------
----------------------

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

4Astuces de programmation Empty Re: Astuces de programmation Jeu 5 Mar 2015 - 19:25

Wistaro

Wistaro
Passioné
Passioné

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


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

5Astuces de programmation Empty Re: Astuces de programmation Jeu 5 Mar 2015 - 20:17

Mingerton

Mingerton
----------------------
----------------------

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

6Astuces de programmation Empty Re: Astuces de programmation Ven 6 Mar 2015 - 9:54

Wistaro

Wistaro
Passioné
Passioné

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à

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

7Astuces de programmation Empty Re: Astuces de programmation Ven 6 Mar 2015 - 15:39

Mingerton

Mingerton
----------------------
----------------------

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

8Astuces de programmation Empty Re: Astuces de programmation Ven 6 Mar 2015 - 17:07

Wistaro

Wistaro
Passioné
Passioné

Okay

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

9Astuces de programmation Empty Re: Astuces de programmation Ven 6 Mar 2015 - 19:41

m@thieu41

m@thieu41
----------------------
----------------------

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

10Astuces de programmation Empty Re: Astuces de programmation Ven 6 Mar 2015 - 20:40

Mingerton

Mingerton
----------------------
----------------------

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

11Astuces de programmation Empty Re: Astuces de programmation Lun 9 Mar 2015 - 19:39

Mingerton

Mingerton
----------------------
----------------------

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

Contenu sponsorisé



Revenir en haut  Message [Page 1 sur 1]

Sujets similaires

-

» programmation sur ordi

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