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 |
Candide ou l'Optimisation
+3
persalteas
ashtrail
Samos
7 participants
Candide ou l'Optimisation
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->":
Devient:
C'est pareil pour les menus:
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.
Pour les fonctions et le calcul, organisez votre code pour utiliser le moins de parenthèses possible:
devient:
Pour initialiser les variables, certains font ça:
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:
Maintenant, nous allons apprendre à utiliser différentes instructions d'affichage:
Le "Disp" est inutile, en dernière ligne d'un programme, si on met une variable ou une valeur, elle sera automatiquement affichée:
Pause:
On voit beaucoup de
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.
Un de ses avantages est que si la variable est trop longue, l'affichage est terminé à la ligne suivante.
ex:
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,
Les "goto" permettent de sauter au Lbl indiqué exemple:
Certains utilisent les "goto" dans des conditions, c'est une habitude à BANNIR, surtout si la condition est dans une boucle!
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:
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!
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->
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])
Régler les dimensions du graphe
Beaucoup font:
Mais il y a moyen d'économiser 2 octets:
Ces variables se trouvent dans le même menu que Xmin etc...
Certaines fonctions de la calculatrice règlent directement le graphe:
(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:
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
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 !
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 :
- Fonctions simples précédant l’argument, telles que racine( , sin( ou log(
- Fonctions introduites après l’argument, telles que ^2, ^-1, !, °, ^r, et conversions
- Puissances et racines, telles que 2^5 ou 5xracine(32
- Permutations (nPr) et combinaisons (nCr)
- Multiplications, multiplications implicites et divisions
- Additions et soustractions
- Fonctions relationnelles, telles que > ou <=
- Opérateur booléen and
- 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.
Un exemple courant de priorité inattendue à corriger si on change de modèle :manuel ti82 page 44 chapitre 1-20 a écrit:EOS calcule les fonctions d’une expression dans l’ordre suivant :
- fonctions introduites après l'argument, telles que ^2,^-1,!,°,^r,^t, conversions
- puissances et racines, telles que 2^5 ou 5xroot32
- multiplication implicite par une variable ou une parenthèse, par exemple 4A, A4, 4(A+1), (A+1)4
- fonctions simples précédant l'argument, telles qu'une négation, racine carrée, sin ou log
- 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)
- Permutations (nPr) et combinaisons (nCr)
- multiplication et division
- addition et soustraction
- fonctions relationnelles, telles que > ou <=
- opérateur booléen "and"
- 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.
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
- Code:
If A = 0
peut s'optimiser en
If not(A
- Code:
If ((A != 5) et (C != 7)) ou ((B != 1) et (D != 9))
- 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
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
- 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
- Code:
Pause A
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
- Code:
Repeat A=45
getKey->A
End
Les "goto" permettent de sauter au Lbl indiqué exemple:
- Code:
Disp "A
Goto 6
Disp "B
Lbl 6
Disp "C
Certains utilisent les "goto" dans des conditions, c'est une habitude à BANNIR, surtout si la condition est dans une boucle!
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)
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
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
- Code:
seq(cos(A),A,1,360->L1
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
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,
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
Re: Candide ou l'Optimisation
Génial continue! (j'adore le titre). Y avait plein de truc que je ne savais pas.
Re: Candide ou l'Optimisation
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
Très bon post, +1 !
Re: Candide ou l'Optimisation
L'article est une bonne idée, c'est toujours les mêmes choses qu'on doit expliquer sinon
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
-----
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:
-----
Voilà encore un fois cet article c'est du beau travail
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
-----
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
- Code:
ZStandard
-----
Sur un topic d'optimisation c'est pas topInput A
Input B
AB
- Code:
Prompt A,B
AB
Voilà encore un fois cet article c'est du beau travail
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: Candide ou l'Optimisation
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.
(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.
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
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
. :
Re: Candide ou l'Optimisation
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!
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!
[...] mais je n'en suis pas certain.
- Spoiler:
Sur un topic d'optimisation c'est pas topInput A
Input B
AB- Code:
Prompt A,B
AB
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
Re: Candide ou l'Optimisation
Tu veux dire que: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.
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
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: Candide ou l'Optimisation
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. 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é.
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
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
. :
Re: Candide ou l'Optimisation
En fait je viens de tester et c'est la même chose que sur la ti82stats(.fr):
Ç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)...
- 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)...
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: Candide ou l'Optimisation
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.
Toutes ces connaissances pourront servir à éliminer judicieusement les parenthèses.
Un exemple courant de priorité inattendue à corriger si on change de modèle :
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 :
- Fonctions simples précédant l’argument, telles que racine( , sin( ou log(
- Fonctions introduites après l’argument, telles que ^2, ^-1, !, °, ^r, et conversions
- Puissances et racines, telles que 2^5 ou 5xracine(32
- Permutations (nPr) et combinaisons (nCr)
- Multiplications, multiplications implicites et divisions
- Additions et soustractions
- Fonctions relationnelles, telles que > ou <=
- Opérateur booléen and
- 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.
Je suis surpris par cette distinction entre les types de multiplication.manuel ti82 page 44 chapitre 1-20 a écrit:EOS calcule les fonctions d’une expression dans l’ordre suivant :
- fonctions introduites après l'argument, telles que ^2,^-1,!,°,^r,^t, conversions
- puissances et racines, telles que 2^5 ou 5xroot32
- multiplication implicite par une variable ou une parenthèse, par exemple 4A, A4, 4(A+1), (A+1)4
- fonctions simples précédant l'argument, telles qu'une négation, racine carrée, sin ou log
- 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)
- Permutations (nPr) et combinaisons (nCr)
- multiplication et division
- addition et soustraction
- fonctions relationnelles, telles que > ou <=
- opérateur booléen "and"
- 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.
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")
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
. :
Re: Candide ou l'Optimisation
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.
blg_flg- Connaisseur
- Messages : 249
Points Concours : 45
Productivité : 6
Date d'inscription : 04/06/2013
Localisation : Pantruche
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Candide ou l'Optimisation
Bonsoir!
J'ai quelques ajouts à proposer
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):
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):
Au passage:
J'ai quelques ajouts à proposer
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
- 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
- Code:
If X
DelVar ADelVar BDisp "COUCOU
Au passage:
- Code:
0->Xmin
0->Xmax
1->(delta)X
1->(delta)Y
- 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
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: Candide ou l'Optimisation
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
Tes propos de juxtaposition sont ambigus : SEUL DelVar/EffVar permet une telle chose.
Ymin : oui tu as raison
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
. :
Re: Candide ou l'Optimisation
J'ai reformulé pour la juxtaposition effectivement ça prêtait à confusion.
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
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++