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
Dim 3 Sep 2017 - 19:50 par Clément.7

» 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++

» flappy bird
Jeu 15 Déc 2016 - 10:23 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
Ti64CLi++
 
Clément.7
 


Candide ou l'Optimisation

Voir le sujet précédent Voir le sujet suivant Aller en bas

Candide ou l'Optimisation

Message par Samos le Sam 22 Juin 2013 - 12:29

On voit de plus en plus des codes non-optimisés, qui prennent des centaines d'octets, voire des milliers pour rien!

Cher collègues de Tout82, vous avez la chance de pratiquer du TI-Basic z80, un des langages les plus libres au monde,
loin de toutes les contraintes!

Dans ce sujet, je vous propose d'améliorer vos codes source pour gagne de la vitesse ou(inclusif) des octets.

Commençons par le commencement,
Je ne veux plus vous voir fermer vos parenthèses, guillemets, crochets et accolades en fin de ligne ou avant le "sto->":

Code:
Output(1,1,"HELLO WORLD")

Devient:

Code:
Output(1,1,"HELLO WORLD

C'est pareil pour les menus:
Code:
Menu("TITRE","CHOIX1",9,"CHOIX2",A5,"CHOIX3",6

Opérations et conditions
note: -et (and en anglais)  est prioritaire sur ouExc (xor) et sur ou (or), ces deux derniers sont évalués de gauche à droite
        -Les opérateurs booléens (et, ou, ouExc) ne sont pas prioritaires sur les opérateurs arithmétiques 
        -Le "ou" peut être remplacé par une addition et le "et" par une multiplication dans certaines circonstances
        -Le signe "!=" (différent de) peut être remplacé par un "-" qui est un peu plus rapide mais uniquement dans certaines circonstances
        -Le signe multiplication est implicite, il n'est nécessaire de le mettre qu'entre les chiffres.
       -Le 0 n'est pas obligatoire devant un nombre qui n'a qu'un part fractionnaire (0.55 est égal à .55)

Pour être plus clair, voici des extraits des manuels.
Attention, ce n'est pas la même chose pour TI82 stats et TI82.

Le manuel 82statfr page 56 chapitre 1-27 a écrit:EOS calcule les fonctions d’une expression dans l’ordre suivant :

  1. Fonctions simples précédant l’argument, telles que racine( , sin( ou log(
  2. Fonctions introduites après l’argument, telles que ^2, ^-1, !, °, ^r, et conversions
  3. Puissances et racines, telles que 2^5 ou 5xracine(32
  4. Permutations (nPr) et combinaisons (nCr)
  5. Multiplications, multiplications implicites et divisions
  6. Additions et soustractions
  7. Fonctions relationnelles, telles que > ou <=
  8. Opérateur booléen and
  9. Opérateurs booléens or et xor

Les fonctions d’un même groupe de priorité sont évaluées de gauche à droite par EOS.
Les calculs inclus dans des parenthèses sont effectués en priorité.
Les fonctions multi-arguments, telles que nbreDérivé(A^2,A,6) sont évaluées dans l’ordre où elles sont rencontrées.

manuel ti82 page 44 chapitre 1-20 a écrit:EOS calcule les fonctions d’une expression dans l’ordre suivant :

  1. fonctions introduites après l'argument, telles que ^2,^-1,!,°,^r,^t, conversions
  2. puissances et racines, telles que 2^5 ou 5xroot32
  3. multiplication implicite par une variable ou une parenthèse, par exemple 4A, A4, 4(A+1), (A+1)4
  4. fonctions simples précédant l'argument, telles qu'une négation, racine carrée, sin ou log
  5. multiplication implicite où le second argument est une fonction (qui précède son ou ses arguments), telle que Asin2 ou 2nDeriv(A^2,A6,6)
  6. Permutations (nPr) et combinaisons (nCr)
  7. multiplication et division
  8. addition et soustraction
  9. fonctions relationnelles, telles que > ou <=
  10. opérateur booléen "and"
  11. opérateurs booléens "or" et "xor"

Les fonctions d'un même groupe de priorité sont évaluées de gauche à droite.
Cependant plusieurs fonctions simples précédant un argument sont évaluées de droite à gauche. Exemple : sin ln 7 = sin(ln 7)
Les calculs inclus dans les parenthèses sont effectués en priorité.
Les fonctions multi-arguments telles que nDeriv(A^2,A,6) sont évaluées consécutivement.
Un exemple courant de priorité inattendue à corriger si on change de modèle :
ti82 a écrit:-B/(2A)
-B/2A
ti82stats a écrit:-(B/2)A
-B/2A


Code:
If A != 0
aboutit au même résultat que
If A
et
Code:
If A = 0
peut s'optimiser en
If not(A


Code:
If ((A != 5) et (C != 7)) ou ((B != 1) et (D != 9))
Devient:

Code:
If A-5 et C-7 ou B-1 et D-9

ou

If (A-5 et C-7)(B-1 et D-9
(mais la dernière expression prend un octet en plus)

Pour les fonctions et le calcul, organisez votre code pour utiliser le moins de parenthèses possible:

Code:
Input Str1
Disp inString("ABCDEFG",sub(Str1,1,1))*5

(code qui donne la position de la première lettre que contient Str1, dans la chaîne ABCDEFG, multipliée par 5)
(Ok, il sert à rien!)

devient:
Code:
Input Str1
Disp 5 inString("ABCDEFG",sub(Str1,1,1
(il n'y a pas d'espace entre 5 et "inString(" )


Pour initialiser les variables, certains font ça:
Code:
0->A
5->C
Mais il FAUT utiliser la fonction "Delvar" pour mettre une variable à 0! 
Elle permet de supprimer la variable de la mémoire et dès qu'on appelle cette variable à nouveau, son contenu est automatiquement à 0
En plus, nous pouvons écrire une autre instruction sur la même ligne, directement après!
Regardez si ça ne vous semble pas clair:

Code:
Delvar A5->C
Nous obtenons le même résultat pour moins d'octets et nous pouvons cumuler les "Delvar":
Code:
Delvar ADelvar BDelvar CDisp "MAGIE!


Maintenant, nous allons apprendre à utiliser différentes instructions d'affichage:

Code:
Prompt A,B
Disp AB

Le "Disp" est inutile, en dernière ligne d'un programme, si on met une variable  ou une valeur, elle sera automatiquement affichée:

Code:
Prompt A,B
AB

Pause:
On voit beaucoup de 
Code:
Disp A
Pause
Pour afficher une variable à l'écran et mettre en pause l'exécution du programme mais il y a plus simple:
Code:
Pause A
En plus "Pause" fonctionne avec toutes les variables et permet de faire défiler si elles sont trop grandes, mais pause ne prend qu'un seul argument.
Attention: "Pause" modifie la valeur de Ans (Rep en français).


Output( :

La commande permet d'afficher une valeur ou une variable qui n'est ni une liste, ni une matrice sur l'écran principal.
Elle prend en argument la ligne (de 1 à 8 ), puis la colonne (de 1 à 16) et la variable à afficher.

Code:
Output(4,1,8i

Un de ses avantages est que si la variable est trop longue, l'affichage est terminé à la ligne suivante.
ex:
Code:
Output(4,14,"SALUT


Les boucles:

Au lieu d'utiliser une boucle "While" avec une initialisation de variable au début, il vaut mieux favoriser la boucle "Repeat".

dans la boucle "While", la condition est testée au début de chaque boucle alors qu'avec "Repeat", la condition n'est pas testée la première fois! 
Mais il faut faire attention,

  • la boucle While continue de s'exécuter si la condition est vraie alors que
  • la boucle Repeat continue de s'exécuter si la condition est fausse


Code:
(on supprime A s'il est égal à 45, on ne sait jamais!) 
Delvar AWhile A != 45
getKey->A
End
équivaut à 
Code:
Repeat A=45
getKey->A
End
La touche 45 correspond à la touche [annul]

Les "goto" permettent de sauter au Lbl indiqué exemple:
Code:
Disp "A
Goto 6
Disp "B
Lbl 6
Disp "C
Le programme ne va afficher que "A" et "C"

Certains utilisent les "goto" dans des conditions, c'est une habitude à BANNIR, surtout si la condition est dans une boucle! yerk 
Le prochain "End" que le programme va rencontrer va le considérer comme celui du If:Then et va causer des bugs, des pertes de mémoire
et des ralentissements qui peuvent aboutir à ERR:MEMORY

exemple:
Code:
Lbl 1
A+1->A
While 1
getKey->B
If B=26
Then
goto 1
End
End
(qu'on soit bien clairs, c'est juste un exemple)
Si vous appuyez beaucoup sur la flèche de droite (getKey 26), vous aurez une erreur au bout d'un certain moment.

Il faut trouver une alternative au "goto" en fonction de votre situation.

Les conditions "If" "Then" "Else" "End":

Le "If" tout seul n'est pas nécessairement accompagné du reste, dans ce cas, il va juste exécuter la ligne suivante!

Code:
Delvar AWhile 1
getKey->B
If B=26
A+1->A
End

Nous pouvons encore améliorer le code précédent, 
nous allons modifier la valeur des variable si B est égal à 26 et sans "If"!

Rappel: On ne ferme ni guillemets ni parenthèses avant le sto->

Code:
Delvar AWhile 1
A+5(B=26->A
End
(on augmente A de 5 à chaque fois que l'on presse la flèche de droite)

Quand B est égal à 26, "B=26" vaut 1, sinon il vaut 0. Nous avons le droit de le multiplier avec d'autres choses!

Ainsi, si l'on souhaite modifier les coordonnées X et Y d'un objet:
(24 est la flèche de gauche, 26 celle de droite, 25 celle du haut et 34 celle du bas, 45 la touche [annul])
Code:
Delvar XDelvar YRepeat A=45
getKey->A
X+(A=26)-(A=24->X
Y+(A=25)-(A=34->Y
End

Régler les dimensions du graphe
Beaucoup font:
Code:
0->Xmin
0->Ymin
94->Xmax
62->Ymax

Mais il y a moyen d'économiser 2 octets:
Code:
0->Xmin
0->Xmax
1->(delta)X
1->(delta)Y
1->(delta)X (Xpas en français) signifie qu'à chaque fois que l'on bougera d'un pixel, la coordonnée X changera de 1
Ces variables se trouvent dans le même menu que Xmin etc...

Certaines fonctions de la calculatrice règlent directement le graphe:

Code:
ZStandard

équivaut à

-10 -> Xmin
-10 -> Ymin
10 -> Xmax
10 -> Ymax

Code:
ZDecimal

équivaut à

-4.7 -> Xmin
-3.1 -> Ymin
.1 -> (delta)X
.1 -> (delta)Y

(Il en reste beaucoup d'autres, à vous de les découvrir dans le menu zoom)


seq( agit de manière semblable à une boucle For(
En premier, il faut spécifier une expression, puis une variable, le premier terme, le dernier et éventuellement un pas
seq( retourne une liste de termes contenant l'expression, en fonction ou non de la variable.
Au lieu de faire:
Code:
DelVar L1For(A,1,360
cos(A->L1(A
End
Nous pouvons faire:
Code:
seq(cos(A),A,1,360->L1
Cette méthode sert souvent pour faire des listes pré-calculées au début du programme et ainsi éviter sont ralentissement en cours d'exécution avec des valeurs directement accessibles.


Vous pouvez également trouver des articles intéressants et plus précis ici:


Merci à Linkakro et m@thieu41 pour leurs conseils avisés et leur participation Bien Joué 

Ce post n'est pas terminé, je n'ai pas le temps de tout faire en une seule fois, si quelqu'un voit une erreur, qu'il(elle on ne sait jamais) le signale.
Les modérateurs peuvent bien-entendu modifier à leur guise, mais en me prévenant, ça serait sympa! car ils sont beaux, forts, intelligents, loués soient-ils !
cheers


Dernière édition par Samos le Mar 6 Aoû 2013 - 13:46, édité 11 fois

Samos
----------------------
----------------------

Messages : 17
Points Concours : 18
Productivité : 10
Date d'inscription : 16/06/2013
Calculatrice(s) :
  • TI-82 Stats.fr


Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par ashtrail le Sam 22 Juin 2013 - 12:41

Génial continue! (j'adore le titre). Y avait plein de truc que je ne savais pas.

__________________________________________________________________________
Mes programmes :
-JEUX : Le TAPTAUPE, Le MINSTEP, Un Plus-Moins
-MATHS : Regroupement n°1, Regroupement n°2, tout sur les pourcentages
-AUTRE : Le programme qui jauge les prénoms
avatar
ashtrail
Connaisseur
Connaisseur

Messages : 248
Points Concours : 21
Productivité : 21
Date d'inscription : 18/06/2013
Localisation : Paris
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur http://ti-freeworld.fr1.co/

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par persalteas le Sam 22 Juin 2013 - 17:48

dans la boucle "While", la condition est testée au début de chaque boucle alors qu'avec "Repeat", la condition n'est pas testée la première fois!

C'est inexact. While lit seulement la condition au début de la boucle (sur le While), alors que Repeat la lit à la fin de la boucle (sur le End). Si cette condition est vraie/fausse, on recommence/ou-pas.

Ton article est très bien, mais ce serait très agréable si tu nous mettais des gros titres qu'on puisse s'y retrouver facilement Bien Joué

Très bon post, +1 !

__________________________________________________________________________
Bienvenue sur le nouveau Tout-82, Invité ! Viens discuter sur le chat... What a Face
Depuis que je me suis tatoué une calculatrice sur le bras, vous pouvez compter sur moi ! :P (Best joke ever x) )
avatar
persalteas
----------------------
----------------------

Messages : 482
Points Concours : 152
Productivité : 39
Date d'inscription : 06/12/2012
Localisation : Savoie, France
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur http://tout82.forumactif.org

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Wistaro le Lun 24 Juin 2013 - 12:16

Merci pour ce joli tutoriel!
J'ai appris plein de choses Very Happy

__________________________________________________________________________
Clique ici pour retrouver tout mes programmes en TIbasic

Tu es curieux, Invité? Alors clique ici:


Coucou Invité !Ta dernière visite sur ce forum date de . Tu as posté un total de 78 message(s) sur Tout 82 et enfin, tu as 0 ans.
Si nous sommes le 0, je te souhaite un joyeux anniversaire ;-)

avatar
Wistaro
Passioné
Passioné

Messages : 909
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

Voir le profil de l'utilisateur http://www.youtube.com/user/Wistaro

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par m@thieu41 le Lun 29 Juil 2013 - 13:13

L'article est une bonne idée, c'est toujours les mêmes choses qu'on doit expliquer sinon Bien Joué 

Quelques petites remarques:
Au début tu dis de ne pas fermer les parenthèses et guillemets devant un retour à la ligne ou un sto, mais il faudrait préciser que ça s'applique aussi aux crochets, ainsi qu'aux accolades Wink

-----

Pour l'instruction Pause, préciser qu'elle ne peut afficher qu'un seul argument (Pause A,B ne marchera pas par exemple).

-----

Je ne connaissais pas (delta)X, et j'ai cherché un peu, ça n'y est pas sur une ti 82stats.fr en fait ça correspond à Xpas sur une ti francisé.

-----

Il faudrait aussi rappeler que A=0 peut s'optimiser en non(A

-----

Pour les instructions d'affichage, il faudrait préciser que Output permet les retours à la ligne, et peut donc être utilisé judicieusement à la place de pleins de Disp, en économisant de la place et en permettant un affichage sur la 8e ligne.

-----

Concernant les dimensions du graph: beaucoup font encore:
Code:
:-10->xmin
:-10->ymin
:10->xmax
:10->ymax
Au lieu de:
Code:
ZStandard

-----

Input A
Input B
AB
Sur un topic d'optimisation c'est pas top tongue 
Code:
Prompt A,B
AB


Voilà encore un fois cet article c'est du beau travail Wink

__________________________________________________________________________
ZSNAKE Mon premier (et unique) jeu en ASM:
Un Snake 2 joueurs (2caltos)
-> Je travaille sur une version plus stable du jeu, je poste dès que possible.
avatar
m@thieu41
----------------------
----------------------

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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Linkakro le Mer 31 Juil 2013 - 4:27

Ce rassemblement de choses courantes est un vrai soulagement, on répètait certaines choses tout le temps !
(et des choses moins courantes mais bonnes)

Pensez à mentionner les priorités dans l'ordre and,xor,or (et,ouExcl,ou).
EDIT: oubliez ça. J'ai eu tort depuis longtemps.

Mentionnez les priorités de la Ti82 qui diffère de la ti82stat, cela est important pour bien choisir l'organisation si on veut éliminer les parenthèses à droite.
1- La Ti82 n'inclus pas de parenthèse dans la plupart des opérations mathématiques. Les parenthèses doivent être ajoutées si on veut faire comme les autres ti.
Il semble que les opérations entre deux termes ont les mêmes prioritées que les relations logiques telles que "and", mais je n'en suis pas certain.
EDIT: nCr et nPr sont uniques dans leur traitement, et traitées bien avant les relations logiques
2- La Ti82 effectue le produit en priorité sur la division : A/BC est compris comme A/(BC) au lieu de (A/B)C

Je trouve bien dommage qu'il n'y ait pas de liens vers des articles plus précis, même si c'est sur le tout82 original.
Surtout mes articles démontrant et expliquant les bugs de EffVar,Lbl,End et Goto. C'est le fondement de la doctrine anti-goto et méfiante de EffVar et Lbl.

----
EDIT : voyez mon message citant le manuel. Cela concerne mes propos sur XOR et les opérations à deux termes.


Dernière édition par Linkakro le Mer 21 Aoû 2013 - 13:07, édité 1 fois

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Samos le Jeu 1 Aoû 2013 - 21:31

Voilà, j'ai édité.
Je n'ai pas de 82 et je ne souhaite pas m'aventurer plus loin dessus, si des connaisseurs veulent livrer des informations concrètes, je les ajouterais volontiers! =D 
[...] mais je n'en suis pas certain.

Spoiler:

Input A
Input B
AB
Sur un topic d'optimisation c'est pas top tongue 
Code:
Prompt A,B
AB
[/quote]

Oui, MAIS () c'est pas le même résultat :run: )

Samos
----------------------
----------------------

Messages : 17
Points Concours : 18
Productivité : 10
Date d'inscription : 16/06/2013
Calculatrice(s) :
  • TI-82 Stats.fr


Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par m@thieu41 le Ven 2 Aoû 2013 - 12:14

Linkakro a écrit:Il semble que les opérations entre deux termes ont les mêmes prioritées que les relations logiques telles que "and", mais je n'en suis pas certain.
Tu veux dire que:
A+B and C+D sur une ti 82 équivaut à:
(A+B and C)+D sur une ti 82 stats?
Si c'est ce que tu veux dire bah ce n'est pas le cas:
Code:
//Sur ti 82
Disp 1+1 and 0+2  //Affiche 1
Disp (1+1 and 0)+2 //2

//Sur ti 82stats
Disp 1+1 and 0+2  //Affiche 1
Disp (1+1 and 0)+2 //2

Sinon je suis d'accord pour les divisions Wink

__________________________________________________________________________
ZSNAKE Mon premier (et unique) jeu en ASM:
Un Snake 2 joueurs (2caltos)
-> Je travaille sur une version plus stable du jeu, je poste dès que possible.
avatar
m@thieu41
----------------------
----------------------

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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Linkakro le Dim 4 Aoû 2013 - 2:05

Ce n'est pas ce que je voulais dire. J'ai mal définie les fonctions entre termes. Mais cela ne marche quand même pas comme je pensais. Razz Il faudra vérifier dans le manuel.
2+2 nCr 1+1 = 2+(2 nCr 1)+1
2+2 or 1+1 = 4 or 2

J'en parle parce que la ti82 a beaucoup de fonctions lattérales, beaucoup plus que la ti82stat. Sinon nCr et nPr je ne sais jamais quelle est la priorité.


Dernière édition par Linkakro le Lun 5 Aoû 2013 - 19:35, édité 2 fois

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par m@thieu41 le Dim 4 Aoû 2013 - 21:03

En fait je viens de tester et c'est la même chose que sur la ti82stats(.fr):
Code:
2+2 Combinaison 1+1 = 2+(2 Combinaison 1)+1 = 5
4 Combinaison 2 = 6

2->A
5A Combinaison 6 = 0
10 Combinaison 6 = 210

Ça veux donc dire je suppose que les fonctions sont calculées en premières sauf dans le cas des opérateurs logiques.
Comme nCr n'ouvre pas de parenthèses les arguments sont les nombres précédents et suivants, et ce sans calcul (sauf si on met nous des parenthèses)...

__________________________________________________________________________
ZSNAKE Mon premier (et unique) jeu en ASM:
Un Snake 2 joueurs (2caltos)
-> Je travaille sur une version plus stable du jeu, je poste dès que possible.
avatar
m@thieu41
----------------------
----------------------

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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Linkakro le Lun 5 Aoû 2013 - 19:59

La vérité du manuel, pas mes observations erronnées et hypothèses. Je découvre des choses que j'avais survolé.
EN PARTICULIER J'AI DIT QUELQUE CHOSE DE FAUX SUR LES PRIORITES BOOLEENNES.
"and" est prioritaire sur "xor" et "or" mais ces deux dernières sont évaluées de gauche à droite.
Le manuel 82statfr page 56 chapitre 1-27 a écrit:EOS calcule les fonctions d’une expression dans l’ordre suivant :

  1. Fonctions simples précédant l’argument, telles que racine( , sin( ou log(
  2. Fonctions introduites après l’argument, telles que ^2, ^-1, !, °, ^r, et conversions
  3. Puissances et racines, telles que 2^5 ou 5xracine(32
  4. Permutations (nPr) et combinaisons (nCr)
  5. Multiplications, multiplications implicites et divisions
  6. Additions et soustractions
  7. Fonctions relationnelles, telles que > ou <=
  8. Opérateur booléen and
  9. Opérateurs booléens or et xor

Les fonctions d’un même groupe de priorité sont évaluées de gauche à droite par EOS.
Les calculs inclus dans des parenthèses sont effectués en priorité.
Les fonctions multi-arguments, telles que nbreDérivé(A^2,A,6) sont évaluées dans l’ordre où elles sont rencontrées.

manuel ti82 page 44 chapitre 1-20 a écrit:EOS calcule les fonctions d’une expression dans l’ordre suivant :

  1. fonctions introduites après l'argument, telles que ^2,^-1,!,°,^r,^t, conversions
  2. puissances et racines, telles que 2^5 ou 5xroot32
  3. multiplication implicite par une variable ou une parenthèse, par exemple 4A, A4, 4(A+1), (A+1)4
  4. fonctions simples précédant l'argument, telles qu'une négation, racine carrée, sin ou log
  5. multiplication implicite où le second argument est une fonction (qui précède son ou ses arguments), telle que Asin2 ou 2nDeriv(A^2,A6,6)
  6. Permutations (nPr) et combinaisons (nCr)
  7. multiplication et division
  8. addition et soustraction
  9. fonctions relationnelles, telles que > ou <=
  10. opérateur booléen "and"
  11. opérateurs booléens "or" et "xor"

Les fonctions d'un même groupe de priorité sont évaluées de gauche à droite.
Cependant plusieurs fonctions simples précédant un argument sont évaluées de droite à gauche. Exemple : sin ln 7 = sin(ln 7)
Les calculs inclus dans les parenthèses sont effectués en priorité.
Les fonctions multi-arguments telles que nDeriv(A^2,A,6) sont évaluées consécutivement.
Je suis surpris par cette distinction entre les types de multiplication.

Toutes ces connaissances pourront servir à éliminer judicieusement les parenthèses.

Un exemple courant de priorité inattendue à corriger si on change de modèle :
ti82 a écrit:-B/(2A)
-B/2A
ti82stats a écrit:-(B/2)A
-B/2A


Dernière édition par Linkakro le Ven 12 Sep 2014 - 15:31, édité 1 fois (Raison : correction du manuel ti82 version "fr" au lieu de traduire moi-même la "en")

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par blg_flg le Mer 7 Aoû 2013 - 19:09

Linkakro a écrit:Ce rassemblement de choses courantes est un vrai soulagement, on répètait certaines choses tout le temps !

Je trouve bien dommage qu'il n'y ait pas de liens vers des articles plus précis, même si c'est sur le tout82 original.
Surtout mes articles démontrant et expliquant les bugs de EffVar,Lbl,End et Goto. C'est le fondement de la doctrine anti-goto et méfiante de EffVar et Lbl.

Si des volontaires veulent bien s'en charger, ce sera apprécié. J'ai déjà commencé à transférer pas mal de tutos vers la section "Articles", mais toute aide est bienvenue. :P

__________________________________________________________________________




A bove ante, ab asino retro, a moderatoro undique caveto.

Invité, tu désires la liberté ? Fais donc un petit tour sur TI-Free World !

Spoiler:
avatar
blg_flg
Connaisseur
Connaisseur

Messages : 249
Points Concours : 45
Productivité : 6
Date d'inscription : 04/06/2013
Localisation : Pantruche
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par m@thieu41 le Mar 26 Nov 2013 - 18:42

Bonsoir!

J'ai quelques ajouts à proposer Smile 

Pour contrôler la valeur d'une variable, et lui donner des bornes, beaucoup font (ex d'un déplacement sur l'absice A en fonction des flèches, entre 1 et 16):
Code:
A+(K=24)-(K=26->A
If A>16
16->A
If A<1
1->A
Or, utiliser les fonctions min et max permettent de poser des limites plus facilement:
Code:
max(1,min(16A+(K=24)-(K=26->A
-----------

Ensuite, concernant les If/If Then End:
Lorsqu'on cumule des DelVar/EffVar sur une seule ligne en les faisant suivre d'une autre instruction, et qu'on veut que le tout soit dans un If, le Then/End devient facultatif, puisque le tout est écrit sur une seule ligne sans séparation (":"). (EDIT j'ai reformulé mais c'est toujours pas super clair, l'exemple illustre bien ce que je veux dire):
Code:
If X
Then
0->A
0->B
Disp "COUCOU
End
Peut devenir:
Code:
If X
DelVar ADelVar BDisp "COUCOU
-----------

Au passage:
Code:
0->Xmin
0->Xmax
1->(delta)X
1->(delta)Y
Ce ne serait pas plutôt:
Code:
0->Xmin
0->Ymin      <- pb ici
1->(delta)X
1->(delta)Y


Dernière édition par m@thieu41 le Mar 26 Nov 2013 - 20:59, édité 1 fois

__________________________________________________________________________
ZSNAKE Mon premier (et unique) jeu en ASM:
Un Snake 2 joueurs (2caltos)
-> Je travaille sur une version plus stable du jeu, je poste dès que possible.
avatar
m@thieu41
----------------------
----------------------

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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Linkakro le Mar 26 Nov 2013 - 20:44

min/max : classique mais jamais référencé, merci

Tes propos de juxtaposition sont ambigus : SEUL DelVar/EffVar permet une telle chose.

Ymin : oui tu as raison

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par m@thieu41 le Mar 26 Nov 2013 - 20:55

J'ai reformulé pour la juxtaposition effectivement ça prêtait à confusion.

__________________________________________________________________________
ZSNAKE Mon premier (et unique) jeu en ASM:
Un Snake 2 joueurs (2caltos)
-> Je travaille sur une version plus stable du jeu, je poste dès que possible.
avatar
m@thieu41
----------------------
----------------------

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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Candide ou l'Optimisation

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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