Bug "If And Or"

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Bug "If And Or"

Message 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
Wait And See...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Message 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 !
Wait And See...
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message 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.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Message 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" !
Wait And See...
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Pour moi, ça a l'air de bien marcher avec les parenthèses. :roll:
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 !
Dernière modification par comtois le lun. 30/août/2004 13:33, modifié 1 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 ;)
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message 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
Quand on me gonfle trop j'éclate, sinon ça va !
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Message 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 ! ......... :?
Wait And See...
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Du genre ?

C'est un peu vague.

JL
Quand on me gonfle trop j'éclate, sinon ça va !
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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.
Image
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message 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
Quand on me gonfle trop j'éclate, sinon ça va !
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Message 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:
Wait And See...
Répondre