Voici un programme avant l'optimisation :
{2565166,2565166,2565166,2565166,2565166,2565166,1451,1546,
444,2565166,2565166,2565166,2565166,2565166->List 1
Et maintenant ce même programme après l'optimisation :
[u]Premier possibilité :[/u]
2565166->A
{A,A,A,A,A,A,1451,1546,444,A,A,A,A,A->List 1
[u]Deuxième possibilité :[/u]
2565166
{Ans,Ans,Ans,Ans,Ans,Ans,1451,1546,444,Ans,Ans,Ans,Ans,Ans->List 1
Remarque 1 : Dans ce cas les '}' sont inutiles
Remarque 2 : Ans est une variable qui contient la valeur du dernier résultat, ici Ans vaut 2565166
J'ai tout simplement stocké le nombre 2565166 dans la variable A ;). Une autre possibilité est d'utiliser la variable Ans qui permet d'optimisé encore mieux vos programmes
Autres exemples :
[u]Avant :[/u]
(Mat S[1,4]+AxMat S[1,4])xMat S[1,4]->E
[u]Après :[/u]
Mat S[1,4]->B
(B+AB)B->E
ou encore (avec Ans) :
Mat S[1,4]
(Ans+AxAns)Ans
Do
Getkey=31=>1->A
Getkey=41=>2->A
Getkey=51=>3->A
Getkey=61=>4->A
Getkey=71=>5->A
Getkey=32=>6->A
Getkey=42=>7->A
Getkey=52=>8->A
(89 octets)
devient
Do
Getkey
Ans=31=>1->A
Ans=41=>2->A
Ans=51=>3->A
Ans=61=>4->A
Ans=71=>5->A
Ans=32=>6->A
Ans=42=>7->A
Ans=52=>8->A
(67 octets)
Combien de variables existe-t-il ? Beaucoup de personnes pensent qu'il y en a 28 (Toutes les lettres de l'alphabet, r et [TETA] ), mais en réalité il y en a 37 (peut être même plus) :
Les variables supplémentaires sont a0, a1, a2, b0, b1, b2, c0, c1 et c2, on les trouve dans [VARS]+[F6]+[F2]+[2] pour les Graph 100 (+) ou dans [VARS]+[F6]+2x[F2] pour les autres calculatrices
Dans cette partie du cours on admettra ceci : une variable existe si elle ne vaut pas 0 et une variable n'existe pas si elle vaut 0. Exemple : soit une variable A, la variable A existe si A != 0 et elle n'existe pas si A=0
Voici un programme avant l'optimisation :
If A!=0
Then ...
IfEnd
If B=0
Then ...
IfEnd
Et maintenant ce même prog après l'optimisation :
If A
Then ...
IfEnd
If Not B
Then ...
IfEnd
La première ligne signifie ''Si A existe'' c'est-à-dire ''Si A !=0''
La quatrième ligne signifie ''Si B n'existe pas'' c'est-à- dire ''Si B = 0''
Syntaxe globale :
''<variable> = 0'' s'écrit aussi ''Not <variable>'' (optimisation de 1 octet, c'est déjà pas mal)
''<variable> != 0'' s'écrit aussi ''<variable>'' (optimisation de 2 octets)
On peut aussi appliquer cette méthode dans les boucles, exemple :
Do
...
LpWhile A=0 And B!=0
donne:
Do
...
LpWhile Not A And B (optimisation de 3 octets)
Citer : Posté le 28/05/2012 11:39 | #
Dans une boucle :
5->A
Else
3->A
Ifend
est plus lent que
Ajouté le 28/05/2012 à 11:43 :
Edit : je peux recopier une partie de ton tuto pour en faire un pour la classpad sur casio-scene ?
Merci d\'avance
Ajouté le 28/05/2012 à 11:51 :
Edit2 : Il y a encore moyen d\'optimiser ton prog :
{25,5651,505,1,561,65,165,51,52,651,5->List 2
Prog \"GETKEY\"
Int .1Ans-2->A
5+3(A<3[DISP]
Text 1,1,\"SALUT\"
Prog \"GETKEY\"
Text 1,1,\"JE SUIS SMASHMASTER\"
Prog \"GETKEY\"
Text 1,1,\"JE SUIS MEMBRE DEPUIS 2009\"
Prog \"GETKEY\"
Text 1,1,\"J\'AIME PC \"
Prog \"GETKEY\"
Drawstat
Filename : GETKEY
Do
Getkey
LpWhile Not Ans
Cls
Citer : Posté le 28/05/2012 12:45 | #
Sur ma G65
5->A
Else
3->A
Ifend
Merci d'avance
Citer : Posté le 28/05/2012 12:50 | #
Ok. Merci pour le test, et pour l'autorisation de ré-utilisation
Par contre, va falloir que j'ajoute pas mal de trucs qui ne sont pas présent sur les autres calculatrices (elseif, switch, ...)
Citer : Posté le 28/05/2012 13:05 | #
édit
If A>C
Then 5->C
Else 3->C
IfEnd
Next
//Vitesse sur la prizm underclocké à 54.4 Mhz : 9.31s
//Vitesse sur la G75 : 8.3s
3+2 (A>C->C
Next
//Vitesse sur la prizm underclocké à 54.4 Mhz : 7.84s
//Vitesse sur la G75 : 8.46s
Citer : Posté le 28/05/2012 13:18 | #
Ok. Merci
Ps : tu peux rajouter ces test dans le spoiler des conditions
Citer : Posté le 28/05/2012 13:24 | #
De rien, j'ai rajouté ces test dans le spoiler ;).
Ajouté le 28/05/2012 à 13:25 :
C\'est assez bizarre, cette astuce est bien plus rapide sur la prizm, mais pas sur les autres calculatrices.
Citer : Posté le 28/05/2012 13:38 | #
et sur la classpad, cette astuce ne fonctionne pas
Ajouté le 28/05/2012 à 13:42 :
edit : pour les listes : e8{1,2,3->List 1 ne marche pas ? Parce sur classpad, il ne faut ni le \'\'1\'\', ni le \'\'x\'\'
Citer : Posté le 28/05/2012 20:26 | #
pour les variables, je vient de voir qqu chose: en plus des variables traditionnelles, a0, a1 etc comprises, il y a le "X" utilisé dans les fonctions, ainsi que le "Theta" si vous modifiez les réglages de la calto avant d'éditer vos programmes => vous utilisez "X", puis changez le mode de graphique en polaire, et utilisez le "theta".
Citer : Posté le 28/05/2012 21:05 | #
Citer : Posté le 30/05/2012 14:29 | #
génial ce tuto! mon optimisation de code va s'en retrouver améliorée !!
Calcu: graph 35+ tweaké
Transformez votre graph 35+ SH4 en graph 75!
C'est par ici!
Etes vous un vrai trader???
Business
Saurez vous vaincre les puissances ennemis?
Swords and Sandals 2
Un 2048 ca vous tente??
2048
Citer : Posté le 29/06/2012 15:34 | #
Petite astuce qui peut aider quelque un d'entre vous :
On a un menu avec un curseur '=>'
Locate 3,1,"CHOIX 1" [green]//on affiche le menu avec les choix[/green]
Locate 3,2,"CHOIX 2"
Locate 3,3,"CHOIX 3"
Do
Locate 1,A,"=>" [green] //On affiche le curseur[/green]
Getkey->G
G=28=>A-1->A [green] //si on appuie sur la touche du haut alors le curseur monte[/green]
G=37=>A+1->A [green] //si on appuie sur la touche du bas alors le curseur descend[/green]
A>3=>1->A [green] //si le curseur descend trop bas alors on le place en haut de l'écran (au niveau de "CHOIX 1")[/green]
A<1=>3->A [green] //si le cuseur monte trop haut (ou sort de l'écran) alors on le place au niveau de "CHOIX 3"[/green]
LpWhile G!=31
A>3=>1->A : A<1=>3->A est un peu long, on peut optimiser ça par 1+MOD(A-1,3->A
1->A
Locate 3,1,"CHOIX 1"[green] //on affiche le menu avec les choix[/green]
Locate 3,2,"CHOIX 2"
Locate 3,3,"CHOIX 3"
Do
Locate 1,A,"=>" [green] //On affiche le curseur[/green]
Getkey->G
G=28=>A-1->A [green] //si on appuie sur la touche du haut alors le curseur monte[/green]
G=37=>A+1->A [green] //si on appuie sur la touche du bas alors le curseur descend[/green]
1+MOD(A-1,3->A
LpWhile G!=31
Syntaxe : Min+MOD(PositionDuCurseur-Min,Max-(Min-1)->PositionDuCurseur
Citer : Posté le 29/06/2012 15:39 | #
ca fait quoi la commande MOD?
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 29/06/2012 15:44 | #
La commande MOD donne le reste de la division euclidienne entre deux nombres
My program is not working, I have no idea why.
My program is working, I have no idea why.
Citer : Posté le 29/06/2012 15:46 | #
MOD
Exemple : MOD(5,2) = 1 car 5=2*2+1 (1 est le reste de la division euclidienne)
Citer : Posté le 29/06/2012 16:04 | #
Belle astuce
Citer : Posté le 29/06/2012 20:54 | #
Le modulo est un des 5 opérateurs numériques de base du C, C++, PHP, JavaScript et j'en passe. Très utile quand on y pense.
Vous n'avez jamais fait d'algo sur le PGCD ?
Citer : Posté le 30/06/2012 00:23 | #
Il y a déjà une fonction pour ça, quand tu la découvres il n'y a plus aucun intérêt...
My program is not working, I have no idea why.
My program is working, I have no idea why.
Citer : Posté le 30/06/2012 02:45 | #
Pour le PGCD, je m'étais fait trois trucs:
1) un programme avec l'alto d'Euclide par division successives
2) ensuite, je me suis dit que par soustractions c'est serai plus simple
3) pour finir, j'ai trouve la fonction PGCD
Citer : Posté le 30/06/2012 11:58 | #
Et il y a un algo pour ça dans le manuel casio
Citer : Posté le 30/06/2012 18:26 | #
Oui mais moi je me suis amusé à écrire un code qui détaille les opérations avec une mise en forme adaptée et qui scrolle quand t'appuies sur EXE. Et le but n'est pas de coder un truc utile mais de se former.