Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Delimiter un label
thedarkprogrammeur le 15/06/2012 à 22:05
Encore ce "thedarkprogrammeur" qui pose une question: c'est sa 5 eme en 5 jour, il est vraiment nul.
Alors voila j'ai un label dans lequel y'a une suite d'instruction a executer (jusque la tout va bien) mais plus tard dans le programme j'ai a nouveau besoin des instructions du label j'ecris donc Goto mon label
mais le probleme c'est qu je veux que le label s'arrete à la 7eme instruction j'ai mis end dans le label apres la 7eme mais sa bug , mon programme ressemble a sa:
Code
Lbl A
(instruction 1, 2, 3, 4, 5, 6, 7)
End
(suite des instructions)
Goto A
ps je ne peux pas reecrire mon label A jusqu'a la 7eme instruction. Merci
snap le 15/06/2012 à 22:16
Pour faire ça :
Code
EffVar A
Lbl A
(instruction 1, 2, 3, 4, 5, 6, 7)
If A : Goto 1
End
(suite des instructions)
1 -> A
Goto A
Lbl 1
thedarkprogrammeur le 15/06/2012 à 22:23
merci de ta reponse snap, mais j'ai rien pigé

thedarkprogrammeur le 15/06/2012 à 22:25
ah bah non c'est bon j'ai compris tout seul : j'ai qu'a commencer un nouveau label a partir de la 7eme instruction: sa annulera automatiquement le 1er, non?F-BVXT le 15/06/2012 à 22:26
Pourquoi est-ce que tu as mis un End à la 5ème ligne, sans cela fonctionne aussi, non ?
Code
EffVar A
Lbl A
(instruction 1, 2, 3, 4, 5, 6, 7)
If A : Goto 1
(suite des instructions)
1 -> A
Goto A
Lbl 1
Citation
ah bah non c'est bon j'ai compris tout seul : j'ai qu'a commencer un nouveau label a partir de la 7eme instruction: sa annulera automatiquement le 1er, non?
Qu'est-ce que tu entend par annuler ?
Sinon, à l'exception des menus, les étiquettes (LBL et Goto) sont à éviter. En fait, quand tu as un Goto, il va parcourir tous le programme jusqu'à trouver le LBL, même si, comme dans ton cas, celui-ci se trouve juste au-dessus. Je te conseille de lire cet article (
https://tout82.pages-perso.fre[...].php?sujet=2757) pour plus d'information sur les LBL et Goto.
snap le 15/06/2012 à 22:29
Alors je t'explique
Tu initialise une variable. Ici, on l'appelera A d'ou le EffVar A
Le programme commence. A est égal a 0
Le programme exécute les instructions.
Après la 7ème, il regarde si A est égal à 1.
Vu que A est égal à 0, il continue.
Par contre je sais pas pourquoi ta mis un end après, normalement sa met erreur

Ensuite, il exécute les instructions d'après.
Le programme donne la valeur 1 à A
Il retourne au début.
Après la 7eme instruction, il regarde si A=1
Vu que A=1, il va au label 1 et continue le programme
thedarkprogrammeur le 16/06/2012 à 01:20
merci a vous tous de vos réponses, et merci de m'expliquer clairement car je ne suis qu'un simple débutant sur TI

thedarkprogrammeur le 16/06/2012 à 01:23
F-BVXY : je voulais dire que ca mettais fin automatiquement au 1er
snap : oui c'est vrai sa faisais erreure et je ne comprenais pas pourquoi, mais merci maintenant grace a toi mon programme va beaucoup mieuxF-BVXT le 16/06/2012 à 10:21
Citation
je voulais dire que ca mettais fin automatiquement au 1er
Ah, dans ce cas la réponse est non :
Code
LBL 0
...
LBL 1
...
LBL 2
...
Dans cet exemple, la calculatrice lira d'abord le LBL 0, puis le LBL 1 et enfin le LBL 2.
Pour qu'elle ne lise pas le LBL 1 et passe directement au LBL 2 tu peux faire ça :
Code
LBL 0
...
Goto 2
LBL 1
...
LBL 2
...
Par contre, dans ce cas le LBL 1 ne sera jamais lu.
Pour qu'il soit lu, tu as besoin d'une condition qui différenciera le premier du deuxième passage. Comme on ne connait pas ton programme on a mis 1->A à la fin de la première boucle et If A:Goto1 (If A signifie If A [différent de] 0 mais ça fait économiser deux octets). Maintenant, tu peux mettre n'importe quoi comme condition, tant qu'elle est vérifiée au second passage mais pas au premier ; donc si la "suite des instructions" modifie une valeur, alors tu n'a qu'à mettre une condition pour cette valeur.
En espérant t'avoir aidé.
thedarkprogrammeur le 16/06/2012 à 19:13
oui beaucoup merci, mais en parlant d'octets, qu'est ce qui necessite les moins d'octet possible: une serie de (

Disp ou un output (complet)
F-BVXT le 16/06/2012 à 19:25
Output( va forcément demander plus d'octets que Disp puisque tu as plusieurs données à rentrer et à séparer par des virgules. Maintenant, je crois que Output( est quand même plus rapide parce qu'il n'y a pas de calcul à faire pour la calculette contrairement à Disp où il faut qu'elle calcul la ligne sur laquelle elle écrira, sans effacer le texte écrit précédemment ; c'est donc à toi de faire les calculs pour savoir où écrire le texte avec Output(.The K le 16/06/2012 à 22:48
Output est plus rapide que disp. Ni doubt !
Mais bon après si t'as qu'une ligne à afficher c'est pas flagrantissime non plus ! Après lequel prend le moins ça dépend ... Faut calculer au K par K.F-BVXT le 16/06/2012 à 22:55
Citation
Après lequel prend le moins ça dépend ...
Comment ça, ça dépend ?
Disp "A fait 3 octets
Output(1,1,"A fait 7 octets
Je vois vraiment pas de contre exemple ?

The K le 16/06/2012 à 23:06
Ben par exemple si t'as un écran vierge et que tu dois afficher in truc à la deuxième ligne : DIsp "","ça prend 5 octets ou output(2,1,"ça prend 6 octets
Ou sinon par exemple si t'as un truc à afficher au centre de l'écran. Qu'est ce qui prend le moins de place ? Un disp avec des espaces après les guillemets ou un output ?

F-BVXT le 16/06/2012 à 23:23
Ah oui d'accord je comprend pourquoi je n'y avais pas pensé alors, parce que j'utilise Disp que quand l'emplacement du texte est pas très important.sandro le 20/06/2012 à 08:41
sinon, un autre cas où aoutput est plus rentable : quand tu veux remplire presque tout l'écran d'un seul texte:
Code
Disp "1234567890123456","1234567890123456","1234567890123456","1234567890123456",
"1234567890123456","1234567890123456","1234567890123456
prend plus de place que
Code
Output(1,1,"1234567890123456123456789012345612345678901234561234567890
123456123456789012345612345678901234561234567890123456
132octets pour le premier code contre 118 pour le second (en pratique, ce ne serait pas des suites de 1234567890123456 mais un texte quelconque : ça revient au même mais c'est plus dure pour moi de vérifier que je n'ai rien oublié.
Sandro
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.