La Place des Développeurs quelqu'un pour me rafraîchir la mémoire ...
ericb59
Membre non connecté
Conseiller Municipal
Reprise du message précédent
non ce n'est pas de ça que je parlais... Désolé si je m'exprime mal...Je parle de la comparaison d'expression dans un IF
Il me semblait qu'il y a avait des méthodes pour faire comparaisons d'expressions plus rapides... non ? J'ai rêvé ?
Ceci dit j'ai une question sur le ON A GOTO
Si il me manque une valeur dans A comment je fais ?
Supposons que A puisse prendre les valeurs 1,2,3,5
je fait ça ON A GOSUB 100,200,300,,500 ??
(d'après un test rapide... Le on A GOSUB serait moins rapide qu'une série de IF .... ? ! ) Edité par ericb59 Le 25/07/2012 à 20h25
ericb59 :
Je parle de la comparaison d'expression dans un IF
Il me semblait qu'il y a avait des méthodes pour faire comparaisons d'expressions plus rapides... non ? J'ai rêvé ?
Il me semblait qu'il y a avait des méthodes pour faire comparaisons d'expressions plus rapides... non ? J'ai rêvé ?
Tu peux donner un exemple qu'on comprenne un peu mieux ce que tu veux faire ?
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
ericb59
Membre non connecté
Conseiller Municipal
heu non j ai pas d exemple justement....
je vais tacher de m exprimer autrement... j aurais pas dû mettre un goto,ou un gosub dans ma demande ca n est pas ce que je voulais...
je reprends :
assigner des valeurs a une variable sans l utilisation de If mais avec des opérateurs logique OR , And Xor ... pour gagner du temps machine.
par exemple si je veux faire ceci
50 if a=10 then x=tby+sx*20
n'existe t il pas une methode pour assigné "x" en fonction "a" sans passer par un "if" ?
x= .... or ... xor ??? barbatruc ?. Edité par ericb59 Le 25/07/2012 à 22h30
je vais tacher de m exprimer autrement... j aurais pas dû mettre un goto,ou un gosub dans ma demande ca n est pas ce que je voulais...
je reprends :
assigner des valeurs a une variable sans l utilisation de If mais avec des opérateurs logique OR , And Xor ... pour gagner du temps machine.
par exemple si je veux faire ceci
50 if a=10 then x=tby+sx*20
n'existe t il pas une methode pour assigné "x" en fonction "a" sans passer par un "if" ?
x= .... or ... xor ??? barbatruc ?. Edité par ericb59 Le 25/07/2012 à 22h30
En BASIC, lorsqu'une comparaison est faite entre deux valeurs, la valeur de l'expression est égale à 0 si la comparaison est fausse, et -1 si la comparaison est vraie. Donc, pour ton exemple :
Tu pourrai écrire à la place :
x sera égal à tby si a est différent de 10 ou sera égal à tby+sx*20 si a=10.
Et cela marche pour n'importe quelle expression qu'on utiliserai dans un IF ... THEN. Ton expression peut donc être un calcul complexe, formé d'opérateurs classiques et même d'opérateurs logiques.
Code :
50 if a=10 then x=tby+sx*20
Tu pourrai écrire à la place :
Code :
50 x=tby+sx*-(a=10)*20
x sera égal à tby si a est différent de 10 ou sera égal à tby+sx*20 si a=10.
Et cela marche pour n'importe quelle expression qu'on utiliserai dans un IF ... THEN. Ton expression peut donc être un calcul complexe, formé d'opérateurs classiques et même d'opérateurs logiques.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Plus exactement, ceci :
remplace cela :
Autre exemple, ceci :
remplace ça :
Code :
50 x=tby+sx*-(a=10)*20
remplace cela :
Code :
50 if a=10 then x=tby+sx*20 else x=tby
Autre exemple, ceci :
Code :
50 x=(tby+sx*20)*-(a=10)
remplace ça :
Code :
Edité par
GDX
Le 29/07/2012 à 08h03
50 if a=10 then x=tby+sx*20 else x=0
ericb59 :
Z avez pas des explications ou un tuto ? Parce que la ça reste obscur !
Bon
Ne nous énervons pas ...
Eric, allume ton MSX, et affecte la valeur 5 à la variable A.
Si tu fais PRINT A, tu as la valeur de la variable.
Code :
? A
5
Ok
Maintenant si tu fais PRINT A=5, le BASIC va évaluer l'expression (A=5) et va te retourner VRAI ou FAUX. Sauf que pour le BASIC, la valeur de VRAI, c'est -1, et la valeur de FAUX, c'est 0.
Code :
? A=5
-1
Ok
? A=6
0
Ok
? A<>5
0
Ok
C'est plus clair maintenant ? Edité par Metalion Le 28/07/2012 à 19h13
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
ericb59
Membre non connecté
Conseiller Municipal
ericb59 :
oui metallion ca c est clair...
mais ca : x=tby+sx*-(a=10)*20. non !
comprend pas !
pourquoi mettre un - devant l expression d egalité ?
mais ca : x=tby+sx*-(a=10)*20. non !
comprend pas !
pourquoi mettre un - devant l expression d egalité ?
Ben pour que le -1 de la valeur VRAI devienne 1 dans le calcul !
Bon oublie cet exemple avec tby, il ne répondait pas complètement à ta question ...
Imagine que tu veux faire :
Code :
10 IF A=5 THEN X=20 ELSE X=0
Il suffit de metre l'expression suivante à la place :
Code :
10 X=-(A=5)*20
Si A=5, l'expression (A=5) vaut -1 et donc X=20.
Si A est différent de 5, l'expression (A=5) vaut 0 et donc X=0 Edité par Metalion Le 29/07/2012 à 21h17
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Citation :
Il me semblait qu'il y a avait des méthodes pour faire comparaisons d'expressions plus rapides... non ? J'ai rêvé ?
c'est plus rapide mais pas toujours plus simple... oui! j'ai cauchemardé!
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie