BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
15 août 2006 à 11:33
clubpsr
Messages postés21Date d'inscriptionsamedi 15 février 2003StatutMembreDernière intervention 2 septembre 2008
-
21 août 2006 à 10:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
clubpsr
Messages postés21Date d'inscriptionsamedi 15 février 2003StatutMembreDernière intervention 2 septembre 2008 21 août 2006 à 10:20
Il est aussi intéressant de constater que :
- Le "et" en littérature est en fait un "ou" en logique,
Fromage et dessert (les deux)
- Et que le "ou" en littérature est en fait un "ou exclusif" en logique !!!
Fromage ou dessert (mais pas les deux)
C'est pour ça que certain croit que la logique c'est compliquée, en fait c'est le français qui n'est pas logique :-) (C.F. L'exeption confirme la rêgle)
cs_Kelpan
Messages postés70Date d'inscriptionmercredi 24 avril 2002StatutMembreDernière intervention17 septembre 2006 21 août 2006 à 01:53
Si je peux me permettre, une manière plus simple de démontrer le problème du '+'
Public Enum Test
var1 = 1
var2 = 2
var4 = 4
var1et2 = var1 Or var2
End Enum
Sub Test()
Debug.Print (var1 Or var1et2) ' 3> var1 et var2 => Correct
Debug.Print (var1 + var1et2) ' 4> var4 => Incorrect
End Sub
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 18 août 2006 à 09:26
Ecoute Jean_Marc_N2 c'est pas sorcier, l'intérêt que j'ai trouvé à ta source était de relever la nuance ce qui aidera surement nombreux mais y'a beaucoup a qui tu n'apprends rien sur l'utilisation ou pas du "+".
Le terme "accident" que tu utilises est très mal placé et même déroutant il s'agit d'une simple logique mathématique facilement démontrable, c'est pas la peine d'en faire un grand discours.
Bonne Prog
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 18 août 2006 à 01:10
ton exemple tu sommes 2 puissances de 2, c'est le seul cas
jean_marc_n2
Messages postés170Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention24 janvier 2009 17 août 2006 à 21:23
je voulais dire 2+4, pas 2+6 bien sur.
jean_marc_n2
Messages postés170Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention24 janvier 2009 17 août 2006 à 21:22
Hello,
merci pour ton commentaire mais je pense alors que j'ai mal expliqué le but de cette source :-((
Le but était de faire comprendre qu'il ne faut **JAMAIS** utiliser le signe "+" pour effectuer une opération binaire, car le "+" ne fait **PAS** une opération bit à bit. L'idée était de montrer qu'il faut **TOUJOURS** utiliser le OR, tout simplement parce qu'il est fait pour ça, contrairement au "+" qui n'est QUE une addition arithmétique.
Le fait que le résultat d'un OR et d'un "+" entre 2 valeurs soit parfois identique n'est qu'anecdotique! Il n'y a *aucune* raison (bonne ou mauvaise) pour utiliser le signe "+" pour faire des opérations bit à bit, ça ne marche tout simplement PAS. Le fait que 2 OR 4 soit "égal" à 2 + 6 n'est qu'un accident, ces 2 nombres ayant des représentations en binaire ou les "1" ne se "supperposent" pas, mais c'est tout...
Sniff, je croyais que le but d'avoir mis cette source ici était limpide...
cs_asimengo
Messages postés280Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention18 mars 2009 17 août 2006 à 09:52
Ce qu'on devrait comprendre ici est qu'il est préférable d'utiliser le "OR" pour les combinaisons des valeurs d'énumérations par exemple plutôt que le "+".
L'utilisation du "+" est délicate sauf pour des utilisateurs avertis (connaissance élémentaire sur les bases en arithmétique) et n'a pour seul intérêt qu'une lecture aisé du code.
jean_marc_n2
Messages postés170Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention24 janvier 2009 15 août 2006 à 22:03
brunews: je le sais, bien évidemment! Il se trouve comme le signale justement renfield que tous ne le savent pas, par exemple ceux qui "additionnent" les flags avec un "+" au lieu d'un OR; Quand à faire étudier l'algèbre de Boole, je pense que si on faisait un sondage sur ce forum en demandant à tous 1) ce qu'est l'algèbre de Boole, 2) de faire les tables de vérité de OR, AND et XOR, on serait assez surpris, amha...
Alain: exact, aucun intérêt si ce n'est de fournir une vue didactique de la chose via la représentation binaire.
Cacophrène: Oui VB est sans doute trop permissif, ce qui n'est pas une raison pour en profiter :-)
Merci à tous pour vos commentaires :-)
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 15 août 2006 à 19:45
Salut !
Dès que a et b sont des puissances de 2 distinctes, on a a Or b a + b. Si a b alors ce n'est déjà plus toujours vrai (ex. a = b = 4). Si a et b ne sont pas des puissances de 2 (et sont tous deux non nuls), c'est toujours faux.
Malheureusement le seul cas où c'est toujours vrai... ben c'est celui dans lequel on se trouve lorsqu'on manipule les constantes des MsgBox, des attributs de fichiers, etc... :-(
Sauf erreur c'est seulement avec les APIs, quand on sort de ce cadre, que les problèmes font surface (et généralement on a déjà pris des habitudes à ce moment-là).
Conclusion bébête du jour : VB est trop permissif.
Cordialement,
Cacophrène
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 août 2006 à 14:37
Aucun rapport entre '+' et 'Or', c'est vrai, et c'est bien là que le bât blesse...
Beaucoup utilisent en effet '+' a tord et a travers, pour concaténer des String, ou combiner des Flags.
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 15 août 2006 à 12:23
étant donné qu'il y a un cas où or et + ont le même "résultat", certaines personnes peuvent confondre, mais bon sinon comme tu dis, interet 0/20, faut que les gens essaient de comprendre certaines choses par eux mêmes...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 août 2006 à 11:33
Ne le prends pas mal mais 'or' et '+' n'ayant aucun rapport, je ne vois pas trop l'intérêt de cette source.
Sur ce modèle tu pourrais en faire des milliers, il suffit d'indiquer aux gens d'aller étudier l'algèbre de Boole.
21 août 2006 à 10:20
- Le "et" en littérature est en fait un "ou" en logique,
Fromage et dessert (les deux)
- Et que le "ou" en littérature est en fait un "ou exclusif" en logique !!!
Fromage ou dessert (mais pas les deux)
C'est pour ça que certain croit que la logique c'est compliquée, en fait c'est le français qui n'est pas logique :-) (C.F. L'exeption confirme la rêgle)
21 août 2006 à 01:53
Public Enum Test
var1 = 1
var2 = 2
var4 = 4
var1et2 = var1 Or var2
End Enum
Sub Test()
Debug.Print (var1 Or var1et2) ' 3> var1 et var2 => Correct
Debug.Print (var1 + var1et2) ' 4> var4 => Incorrect
End Sub
18 août 2006 à 09:26
Le terme "accident" que tu utilises est très mal placé et même déroutant il s'agit d'une simple logique mathématique facilement démontrable, c'est pas la peine d'en faire un grand discours.
Bonne Prog
18 août 2006 à 01:10
17 août 2006 à 21:23
17 août 2006 à 21:22
merci pour ton commentaire mais je pense alors que j'ai mal expliqué le but de cette source :-((
Le but était de faire comprendre qu'il ne faut **JAMAIS** utiliser le signe "+" pour effectuer une opération binaire, car le "+" ne fait **PAS** une opération bit à bit. L'idée était de montrer qu'il faut **TOUJOURS** utiliser le OR, tout simplement parce qu'il est fait pour ça, contrairement au "+" qui n'est QUE une addition arithmétique.
Le fait que le résultat d'un OR et d'un "+" entre 2 valeurs soit parfois identique n'est qu'anecdotique! Il n'y a *aucune* raison (bonne ou mauvaise) pour utiliser le signe "+" pour faire des opérations bit à bit, ça ne marche tout simplement PAS. Le fait que 2 OR 4 soit "égal" à 2 + 6 n'est qu'un accident, ces 2 nombres ayant des représentations en binaire ou les "1" ne se "supperposent" pas, mais c'est tout...
Sniff, je croyais que le but d'avoir mis cette source ici était limpide...
17 août 2006 à 09:52
L'utilisation du "+" est délicate sauf pour des utilisateurs avertis (connaissance élémentaire sur les bases en arithmétique) et n'a pour seul intérêt qu'une lecture aisé du code.
15 août 2006 à 22:03
Alain: exact, aucun intérêt si ce n'est de fournir une vue didactique de la chose via la représentation binaire.
Cacophrène: Oui VB est sans doute trop permissif, ce qui n'est pas une raison pour en profiter :-)
Merci à tous pour vos commentaires :-)
15 août 2006 à 19:45
Dès que a et b sont des puissances de 2 distinctes, on a a Or b a + b. Si a b alors ce n'est déjà plus toujours vrai (ex. a = b = 4). Si a et b ne sont pas des puissances de 2 (et sont tous deux non nuls), c'est toujours faux.
Malheureusement le seul cas où c'est toujours vrai... ben c'est celui dans lequel on se trouve lorsqu'on manipule les constantes des MsgBox, des attributs de fichiers, etc... :-(
Sauf erreur c'est seulement avec les APIs, quand on sort de ce cadre, que les problèmes font surface (et généralement on a déjà pris des habitudes à ce moment-là).
Conclusion bébête du jour : VB est trop permissif.
Cordialement,
Cacophrène
15 août 2006 à 14:37
Beaucoup utilisent en effet '+' a tord et a travers, pour concaténer des String, ou combiner des Flags.
15 août 2006 à 12:23
15 août 2006 à 11:33
Sur ce modèle tu pourrais en faire des milliers, il suffit d'indiquer aux gens d'aller étudier l'algèbre de Boole.