1

y'avais déjà un topic la dessus ki était bien alors je le reprend...pour vous faire partager mon faire-savoir et le vôtre

nous avons déjà vu:

utilisation de if tout seul(pour une seule utilisation)
ex:if x=20:exit

les string pouvant devenir actifs:
"pause x">a
expr(a)

par contre,j'ai toujours pas compris celui là:
0>x
loop
x+1>x
if x=20
endloop

ca marche pas...

j'ai un nouveau
au lieu de

dialog
dropdown "choix",{"x","y"},c
endDlog
if a=1:goto a1
if a=2:goto a2
lbl a1
lbl a2
préférez celui là:

dialog
dropdown "choix",{"x","y"},c
endDlog
goto #("a"&string a)
lbl a1
lbl a2

si une commande vous semble incertaine et que vous voulez l'effacer,ne prenez pas le risque d'oublier la ligne de commande ou de tout retapez surtout si c'est long,mettez le signe du commentaire ki rendra la commande inactive

dans vos prog,ne faites pas lire à la ti des lignes de commandes inutiles pour certains calculs
la fonction cycle est là pour cela,regardez vos manuels

la fonction try:endtry est aussi utile,elle évite obligatoiremnet l'erreur ki provoque l'arret du prog

si vous avez encore d'otres astuces comme moi,faites les nous profiter ici
(j'en ai d'autres mais je ne m'en rapelle plus pour l'instant!)

La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

2

par contre,j'ai toujours pas compris celui là:
0>x
loop
x+1>x
if x=20
endloop

ca marche pas

MAIS SI !!! en fait elle est mal faite ici, mais si x=20 la boucle se répérera, ça evite un label et un goto
là c mieux:
19>x
loop
x+1>x
...instructions.....
if x=20
endloop
avatar
納 豆パワー!
I becamed a natto!!!1!one!

3

pfffff... aucune optimisation que je ne connaisse pas grin
De toute facon, y'a pas mieux que celle là :
plutôt que de faire une boucle, par exemple pour afficher un rpg ( mais vraiment au pif, hein smile ), ben, vous faites un prog qui génère un prog ( toujours en basic ) comprenant toute la boucle déroulée avec les arguments calculés et tout et tout. Bon d'accord c'est bourrin, mais y'a pas plus rapide pour remplacer un for.
youpi !

4

je HAIS les for endfor, c lent et c nul....d'ailleurs je pense pas l'utiliser bcp ds mes prgm..
avatar
納 豆パワー!
I becamed a natto!!!1!one!

5

donc le + rapide pour les boucles, c les loop...
okok c bon a savoir
pour le goto #(...)
merci aussi
j'comprend pas j'avais deja essayé et ca marchais pas..

*edit*

euh je viens de tester avec timerzen la boucle avec loop (l'erreur est : "if x<20" et non x=20)
ben "for" c bien plus rapide... (900 contre 1500 pour 200 itérations)
[edit]Edité par azerty83 le 20-06-2001 à 19:06:54[/edit]
avatar

6

????????????
avatar
納 豆パワー!
I becamed a natto!!!1!one!

7

azerty>C koi timerzen?
tu le trouve ou?
La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

8

timerzen c un prog qui mesure le temps d'execution d'un prog (asm ou basic)tu le trouve dans les archives c a d ici :
http://www.asm.ovh.org/asm/89/divers/timerzen.zip
avatar

9

merci,j'avais cherché sur ticalc mais il l'avait pas
bouh!
La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

10

MAIS SI !!! en fait elle est mal faite ici, mais si x=20 la boucle se répérera, ça evite un label et un goto
là c mieux:
19>x
loop
x+1>x
...instructions.....
if x=20
endloop

euh...mettre exit ne serait pas plus simple?
La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

11

ha non je sus desolé, l'instruction 'endloop' fait un saut a l'instructino loop (coome lbl /goto)
don si tui ne met pas < il n'y aura jamais de sauttongue
heu je ne vois pas trop l'interret de ton prog là...
[edit]Edité par azerty83 le 21-06-2001 à 11:06:41[/edit]
avatar

12

C clair,j'ai toujours pas exactement compris comment il fonctionne alors maintant y voir un interet,C le comble de l'absurde!
La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

13

Pour faire 20 itérations :
0>x
loop
x+1>x
if x=/=20
endloop
Il va ajouter un à chaque fois, si x est inférieur à 20, il va donc voir le endloop, et revenir au début du loop. A la 20eme itération, il ne verra pas le endloop, et continuera donc jusque tout en bas. Il ne trouvera pas de endloop, mais c trop tard pour faire une erreur car le prog est fini.
avatar
I'm on a boat motherfucker, don't you ever forget

14

c vrai que l'exemple n'a pas d'intéret...
avatar
納 豆パワー!
I becamed a natto!!!1!one!

15

Ben la c vrai que c pas tellement optimisé cet exemple, on aurait tout ausi bien pu faire 20->x
avatar
I'm on a boat motherfucker, don't you ever forget

16

bah ué....

17

surtout que
for x,0,20
endfor

est 1.5 fois plus rapide...
enfin pour quoi faire rapide... ?
avatar

18

je crois que tu as pas trop pigé, on peut utiliser loop et if x=0:endloop autremnt qu'avec un compteur.....reste a savoir si c plus rapide que while
avatar
納 豆パワー!
I becamed a natto!!!1!one!

19

dialog
dropdown "choix",{"x","y"},c
endDlog
if a=1:goto a1
if a=2:goto a2
lbl a1
lbl a2
préférez celui là:

dialog
dropdown "choix",{"x","y"},c
endDlog
goto #("a"&string(a))
lbl a1
lbl a2

La variable récupérant la valeur du dropdown, ce serait pas a plutot que c ?
avatar
I'm on a boat motherfucker, don't you ever forget

20

mdr ué mais bon on as compris le principe

par conte si le truc du loop ca peut servir a autre chose que compter je veux une demo d'un truc valable

21

ouais bon ok, mais ceus qui disent qu'ils aiment pas les for/endfor je veut juste dire que c ce qu'il y a de plus rapide pour faire une boucle

par contre le truc du prog génerré pour un Rpg, c carrement contraignant... et pus c un coup a avoir un prog basic qui fait 64ko...wink
avatar

22

Les meilleures optimisations à faire, ce n'est pas tellement de remplacer un loop par un for, c'est de choisir des structures d'enregistrement de données le plus adaptées au prog que vous voulez réaliser (c'est à dire adaptées aux fonctionnalités que vous voulez créer).
Et là ça fait vraiement la défférence entre deux progs identiques extérieurement, mais dont les données sont implantées différemment.

23

et tu conseille quoi ?

je reviens sur le truc du : (prenons un prog a la con)
"delfold main"->a
expr(a)

bon c super lent comme truc...
si c pas pour executer une chaine entrée par l'utilisateur utiliser plutot
define a()=prgm
delfold main
endprgm
une fais le prog precompilé, ya plus de probleme de lenteur...
avatar

24

azerty83 > comment ca c'est contraignant ? Et puis ca prend "que" 9Ko smile
youpi !

25

bon je viens polluer ici
pck yAro ma injustement banni mon pseudo avec mes fleches.

26

delfold main>ca,C strictement impossible
main est un répertoire indestructible!!!

le truc avec l'expression sert à créer des boites de dialogue
par exemple un programme qui te demande de créer une barre d'outil avec le nombre de titre et de sous-titre
comprendo?
La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

27

vivi ok, je ne l'avais pas envisagé de cette maniere...
moi je pensais que c'etait pour alleger le code...
euh apres cette string ya pas un moyen de la transformer en prog (genre Rcl mais depuis un prog)
avatar

28

si si,on peut
attend réflexion.............................
je l'avais déja fait....................
2 secondes.....................
brossage de dents...........................
cherche la ti-89..........................
bon,j'arrive plus
j'te donne la réponse plus tard
La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

29

voila,trouvé!!!(enfin,car ca mnervait,G du cherché sur mon ordi)

en exemple,créer un programme à partir d'une boite de dialogue:

Prgm
dialog
title "création d'un programme"
request "nom du programme",x
enddlog

define #x()=Prgm:EndPrgm
EndPrgm

ou pour autre chose
define #(string(ceketuveu))()=Prgm:EndPrgm
voila!
(n'empeche,Cté un truc dur à trouver,j'y ai passé facilement 1/2 heure avec les indirections!)

La fin de la TI-89 approche pour ouvrir un nouvel aire:la GBA!!!

30

euh la je suis sceptique...
ton truc ne fait que creer un prog d'un nom contenu dans une string...
moi ce que je veux c (exemple) :
"prgm:disp ""kikoo les amis"":endprg"-> a

ensuite remplacer le expr(a)
par un prog cree qui contient

prog()
prgm
disp "kikoo les amis"
endprgm
avatar