Page 1 sur 2

Bug "If And Or"

Publié : lun. 30/août/2004 6:32
par Psycode
ca, ca marche :

Code : Tout sélectionner

If x1=x2 And y1=y2 
Debug "ee"
EndIf
If x1=x3 And y1=y3
Debug "ee"
EndIf
If x2=x3 And y2=y3
Debug "ee"
EndIf
If x1=x2 And x2=x3
Debug "ee"
EndIf
et ca, ca marche pas alors que ca devrait puisque c'est la meme chose :

Code : Tout sélectionner

If x1=x2 And y1=y2 Or x1=x3 And y1=y3 Or x2=x3 And y2=y3 Or x1=x2 And x2=x3
Debug "ee"
EndIf

Publié : lun. 30/août/2004 8:49
par Dr. Dri
peut etre un probleme de priorités de PB
pour le moment tu peux mettre une rustine, des parentheses...

Code : Tout sélectionner

If (x1=x2 And y1=y2) Or (x1=x3 And y1=y3) Or (x2=x3 And y2=y3) Or (x1=x2 And x2=x3)
  Debug "ee"
EndIf
dis moi si ca marche ^^

Dri

Publié : lun. 30/août/2004 9:06
par Psycode
Non, la, ca ne marche carrement pas. Autant avant, seul l'expression "x1=x2 And y1=y2" fonctionnait (c'etait la seul d'ailleur car dès qu'on franchissait un "Or", l'ordi ne voulais plus rien comparer), autant maintenant avec des parenthese, plus rien ne fonctionne.... Bug "serieux" donc...
"serieux"; koi que, puisque l'on peux ecrire autrement... bien sur il faut le savoir !

Publié : lun. 30/août/2004 12:52
par Heis Spiter
Je dirais aussi que c'est normal. C'est n'importe quoi cette écriture. Pour moi, on ne mélange pas les AND et les OR.

Publié : lun. 30/août/2004 12:56
par Psycode
Ba si !!!!!!!!

Si une condition est bonne OU si une autre est bonne, on execute la suite sinon ENDIF !

Une "condition" peux bien entendu etre "a>b And c=3" !

Publié : lun. 30/août/2004 13:28
par filperj
Pour moi, ça a l'air de bien marcher avec les parenthèses. :roll:

Publié : lun. 30/août/2004 13:30
par comtois
je ne comprends pas ton problème , les deux cas que tu présentes fonctionnent bien ( même sans les parenthèses ).

tes variables sont initialisées ou pas ? si elles valent toutes 0 , pour moi ça fonctionne normalement . si elles ont des valeurs différentes , ça serait bien que tu les indiques .

Et puis c'est normal que l'ordi ne compare plus rien si dans un OU la première expression est vraie , c'est inutile de tester les autres !
idem dans un ET , si la première expression est fausse ,inutile de tester le reste ,le résultat sera forcément faux !

Publié : lun. 30/août/2004 13:32
par Le Soldat Inconnu
les conditions marche très bien à conditon de mettre des parenthèses quand on combine des And et OR, c'est forcément ton code qui est cause

fait voir le code complet qu'on puisse tester

Publié : lun. 30/août/2004 14:09
par Dr. Dri
Heis Spiter a écrit :Je dirais aussi que c'est normal. C'est n'importe quoi cette écriture. Pour moi, on ne mélange pas les AND et les OR.
si si, algebre de bool
de la même maniere qu'on mélange des addtions et des multiplications.
avec les priorités de calcul...

Dri ;)

Publié : lun. 30/août/2004 14:34
par Lukky
Moi dans la bonne dizaine de langages que j'ai pratiqué j'ai toujours mélangé les and et les or sans le moindre problème.

Par contre effectivement sans parenthèses pas de salut, ou alors faut pas avoir peur des résultats délirants.

JL

Publié : lun. 30/août/2004 18:33
par Psycode
Lukky a écrit :Moi dans la bonne dizaine de langages que j'ai pratiqué j'ai toujours mélangé les and et les or sans le moindre problème.
........ :cry: ................ J'vois l'genre ! ......... :?

Publié : lun. 30/août/2004 19:32
par Lukky
Du genre ?

C'est un peu vague.

JL

Publié : lun. 30/août/2004 20:08
par Flype
honnetement j'ai un peu regardé... et je vois pas où est le problème !
ca fonctionne tout à fait normalement... comme n'importe quel langage comme l'explique lukky.

Publié : mar. 31/août/2004 10:04
par Lukky
Bein il me semble aussi, ce qui est aberrant c'est de faire une si longue ligne de test sans parenthèses.

A ce sujet je dirais même que s'il ne devait y avoir qu'une seule raison pour mettre des parenthèses (mise à part celle d'assurer le bon ordre des test et éviter ainsi des résultats aléatoires) ce serait celle de la lisibilité !!

Imaginons un traitement reposant sur de très nombreux tests et devant être reprit par un autre programmeur ou par sois même après une longue période d'inactivité. Je te dis pas le temps pour décrypter :-)

JL

Publié : mar. 31/août/2004 15:23
par Psycode
Bon, je corrige certaines choses:

En effet, je m'appercois qu'en soit, la phrase suivante ne veux rien dire par manque de priorité :
If x1=x2 And y1=y2 Or x1=x3 And y1=y3 Or x2=x3 And y2=y3

Par contre, d'autres basics incorporaient des "if" comme ceci :
If x1=x2 And y1=y2 Or If x1=x3 And y1=y3 Or If x2=x3 And y2=y3

Mais personnellement, je suis favorable aux parentheses (bien plus lisible) :
If (x1=x2 And y1=y2) Or (x1=x3 And y1=y3) Or (x2=x3 And y2=y3)

Derniere chose, il faudrait créer cette fonction tout en veillant a ce qu'elle soit plus rapide que son équivalent PB actuelle !

En vous remerkiant... :wink: