En effet, pour clarifier il faudrait utiliser CInt() qui renvoie tjrs -1 pour True et 0 pour False.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Patrice Henrio wrote:
A proscrire dans une programmation correcte, rien ne prouve que les booléens sont toujours codés Vrai=-1 et faux = 0 (ou le contraire parfois). Un booléen n'est pas un nombre La fonction donnée c'était bien quand on manquait de place mémoire ou quand on ne savait pas coder les booléens (adeptes du C) ... Mais maintenant essayons d'écrire des fonctions qui soient explicites.
"Bul" a écrit dans le message de news: %
bonjour, un autre solution ? Public Function PlusPetit(ByVal A As Double, ByVal B As Double) As Double PlusPetit = (-A * (A <= B) - B * (B < A)) End Function
En effet, pour clarifier il faudrait utiliser CInt() qui renvoie tjrs -1
pour True et 0 pour False.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Patrice Henrio wrote:
A proscrire dans une programmation correcte, rien ne prouve que les
booléens sont toujours codés Vrai=-1 et faux = 0 (ou le contraire
parfois). Un booléen n'est pas un nombre
La fonction donnée c'était bien quand on manquait de place mémoire ou
quand on ne savait pas coder les booléens (adeptes du C) ... Mais
maintenant essayons d'écrire des fonctions qui soient explicites.
"Bul" <marcel.bultez@spamtiscali.fr> a écrit dans le message de news:
%23UnD3xJzEHA.2692@TK2MSFTNGP10.phx.gbl...
bonjour,
un autre solution ?
Public Function PlusPetit(ByVal A As Double, ByVal B As Double) As
Double PlusPetit = (-A * (A <= B) - B * (B < A))
End Function
En effet, pour clarifier il faudrait utiliser CInt() qui renvoie tjrs -1 pour True et 0 pour False.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Patrice Henrio wrote:
A proscrire dans une programmation correcte, rien ne prouve que les booléens sont toujours codés Vrai=-1 et faux = 0 (ou le contraire parfois). Un booléen n'est pas un nombre La fonction donnée c'était bien quand on manquait de place mémoire ou quand on ne savait pas coder les booléens (adeptes du C) ... Mais maintenant essayons d'écrire des fonctions qui soient explicites.
"Bul" a écrit dans le message de news: %
bonjour, un autre solution ? Public Function PlusPetit(ByVal A As Double, ByVal B As Double) As Double PlusPetit = (-A * (A <= B) - B * (B < A)) End Function
Jean-Marc
> > "Bul" a écrit dans le message de news: > % >> bonjour, >> un autre solution ? >> Public Function PlusPetit(ByVal A As Double, ByVal B As Double) As >> Double PlusPetit = (-A * (A <= B) - B * (B < A)) >> End Function "ng" a écrit dans le message de
news:eyf5$
Patrice Henrio wrote: > A proscrire dans une programmation correcte, rien ne prouve que les > booléens sont toujours codés Vrai=-1 et faux = 0 (ou le contraire > parfois). Un booléen n'est pas un nombre > La fonction donnée c'était bien quand on manquait de place mémoire ou > quand on ne savait pas coder les booléens (adeptes du C) ... Mais > maintenant essayons d'écrire des fonctions qui soient explicites. >
En effet, pour clarifier il faudrait utiliser CInt() qui renvoie tjrs -1 pour True et 0 pour False.
Pour clarifier, il ne faut pas utiliser de tournures comme ça. C'est ignoble d'n point de vue logique et odieux d'un point de vue programmation. Rajouter des Cint, ce n'est pas simplifier, c'est en ajouter encore une couche, alors que franchement, la, il y avait déjà la dose :-( On pourrait citer *encore* une fois toutes les raisons qui font que ces pratiques sont à bannir, mais à quoi bon? Ca a été dit et redit et ma foi, tant que les gens qui utilisent ce genre d'atrocités ne bossent pas pour moi, hein...
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
> > "Bul" <marcel.bultez@spamtiscali.fr> a écrit dans le message de news:
> %23UnD3xJzEHA.2692@TK2MSFTNGP10.phx.gbl...
>> bonjour,
>> un autre solution ?
>> Public Function PlusPetit(ByVal A As Double, ByVal B As Double) As
>> Double PlusPetit = (-A * (A <= B) - B * (B < A))
>> End Function
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:eyf5$fMzEHA.3808@TK2MSFTNGP15.phx.gbl...
Patrice Henrio wrote:
> A proscrire dans une programmation correcte, rien ne prouve que les
> booléens sont toujours codés Vrai=-1 et faux = 0 (ou le contraire
> parfois). Un booléen n'est pas un nombre
> La fonction donnée c'était bien quand on manquait de place mémoire ou
> quand on ne savait pas coder les booléens (adeptes du C) ... Mais
> maintenant essayons d'écrire des fonctions qui soient explicites.
>
En effet, pour clarifier il faudrait utiliser CInt() qui renvoie tjrs -1
pour True et 0 pour False.
Pour clarifier, il ne faut pas utiliser de tournures comme ça. C'est
ignoble d'n point de vue logique et odieux d'un point de vue
programmation. Rajouter des Cint, ce n'est pas simplifier, c'est en
ajouter encore une couche, alors que franchement, la, il y avait déjà
la dose :-( On pourrait citer *encore* une fois toutes les raisons qui
font que ces pratiques sont à bannir, mais à quoi bon? Ca a été dit et
redit et ma foi, tant que les gens qui utilisent ce genre d'atrocités ne
bossent pas pour moi, hein...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
> > "Bul" a écrit dans le message de news: > % >> bonjour, >> un autre solution ? >> Public Function PlusPetit(ByVal A As Double, ByVal B As Double) As >> Double PlusPetit = (-A * (A <= B) - B * (B < A)) >> End Function "ng" a écrit dans le message de
news:eyf5$
Patrice Henrio wrote: > A proscrire dans une programmation correcte, rien ne prouve que les > booléens sont toujours codés Vrai=-1 et faux = 0 (ou le contraire > parfois). Un booléen n'est pas un nombre > La fonction donnée c'était bien quand on manquait de place mémoire ou > quand on ne savait pas coder les booléens (adeptes du C) ... Mais > maintenant essayons d'écrire des fonctions qui soient explicites. >
En effet, pour clarifier il faudrait utiliser CInt() qui renvoie tjrs -1 pour True et 0 pour False.
Pour clarifier, il ne faut pas utiliser de tournures comme ça. C'est ignoble d'n point de vue logique et odieux d'un point de vue programmation. Rajouter des Cint, ce n'est pas simplifier, c'est en ajouter encore une couche, alors que franchement, la, il y avait déjà la dose :-( On pourrait citer *encore* une fois toutes les raisons qui font que ces pratiques sont à bannir, mais à quoi bon? Ca a été dit et redit et ma foi, tant que les gens qui utilisent ce genre d'atrocités ne bossent pas pour moi, hein...
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
Zoury
Salut!
et l'autre problème de IIF() c'est qu'il test toujours les deux expressions pouvant être retournées même si une seule d'entre elle sera retournée..
Il effectue donc un test de plus que la structure If ...Then ... Else ... en plus de laisser la chance à certain bug de se glisser dans le code, comme le montrait la discussion suivante : http://groups.google.com/groups?threadm=OjrZg3vCCHA.1880%40tkmsftngp04
-- Cordialement Yanick Lefebvre MVP pour Visual Basic "ng" a écrit dans le message de news:%
Salut,
Le probmèe c'est que IIf() travail en variant => C'est donc plus lent (à cause des castings), le mieux (surtout si c'est une fonction bcp utilisée) est de la coder toi même en la typant correctement.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Pascal B. wrote: > Salut, > > Le plus court des plus courts: > > Minimum = IIf(Expr1 < Expr2, Expr1, Expr2) > > Si tu cherches 1 seule fois le minimum de 2 nombres dans ton programme > il n'est pas nécessaire d'écrire une fonction > > Pascal B. > > "Barsalou" wrote in message > news:% >> Bonjour >> >> Le plus court: >> >> minimum=expr1 >> if expr2<expr1 then minimum=expr2
Salut!
et l'autre problème de IIF() c'est qu'il test toujours les deux expressions
pouvant être retournées même si une seule d'entre elle sera retournée..
Il effectue donc un test de plus que la structure If ...Then ... Else ... en
plus de laisser la chance à certain bug de se glisser dans le code, comme le
montrait la discussion suivante :
http://groups.google.com/groups?threadm=OjrZg3vCCHA.1880%40tkmsftngp04
--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:%23aPqNfMzEHA.3656@TK2MSFTNGP09.phx.gbl...
Salut,
Le probmèe c'est que IIf() travail en variant => C'est donc plus lent (à
cause des castings), le mieux (surtout si c'est une fonction bcp utilisée)
est de la coder toi même en la typant correctement.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Pascal B. wrote:
> Salut,
>
> Le plus court des plus courts:
>
> Minimum = IIf(Expr1 < Expr2, Expr1, Expr2)
>
> Si tu cherches 1 seule fois le minimum de 2 nombres dans ton programme
> il n'est pas nécessaire d'écrire une fonction
>
> Pascal B.
>
> "Barsalou" <eric.barsalou@wanadoo.fr> wrote in message
> news:%230h1hhIzEHA.2656@TK2MSFTNGP14.phx.gbl...
>> Bonjour
>>
>> Le plus court:
>>
>> minimum=expr1
>> if expr2<expr1 then minimum=expr2
et l'autre problème de IIF() c'est qu'il test toujours les deux expressions pouvant être retournées même si une seule d'entre elle sera retournée..
Il effectue donc un test de plus que la structure If ...Then ... Else ... en plus de laisser la chance à certain bug de se glisser dans le code, comme le montrait la discussion suivante : http://groups.google.com/groups?threadm=OjrZg3vCCHA.1880%40tkmsftngp04
-- Cordialement Yanick Lefebvre MVP pour Visual Basic "ng" a écrit dans le message de news:%
Salut,
Le probmèe c'est que IIf() travail en variant => C'est donc plus lent (à cause des castings), le mieux (surtout si c'est une fonction bcp utilisée) est de la coder toi même en la typant correctement.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Pascal B. wrote: > Salut, > > Le plus court des plus courts: > > Minimum = IIf(Expr1 < Expr2, Expr1, Expr2) > > Si tu cherches 1 seule fois le minimum de 2 nombres dans ton programme > il n'est pas nécessaire d'écrire une fonction > > Pascal B. > > "Barsalou" wrote in message > news:% >> Bonjour >> >> Le plus court: >> >> minimum=expr1 >> if expr2<expr1 then minimum=expr2
Pascal B.
Il ne faut pas toujours dramatiser, tout est une question de contexte et de ce que l'on doit faire...
Ici, dans le cas qui est demandé, mon code n'a rien de gênant si il est utilisé de manière ponctuelle et n'est pas placé dans une boucle avec des milliers itérations.
Aussi, je comprend qu'il faille mettre en garde sur certaines pratiques de programmation, mais c'est valable pour beaucoup d'autres instructions (et pas qu'en VB).
Pascal B.
"Zoury" wrote in message news:% | Salut! | | et l'autre problème de IIF() c'est qu'il test toujours les deux expressions | pouvant être retournées même si une seule d'entre elle sera retournée.. | | Il effectue donc un test de plus que la structure If ...Then ... Else ... en | plus de laisser la chance à certain bug de se glisser dans le code, comme le | montrait la discussion suivante : | http://groups.google.com/groups?threadm=OjrZg3vCCHA.1880%40tkmsftngp04 | | | -- | Cordialement | Yanick Lefebvre | MVP pour Visual Basic | "ng" a écrit dans le message de | news:% | > Salut, | > | > Le probmèe c'est que IIf() travail en variant => C'est donc plus lent (à | > cause des castings), le mieux (surtout si c'est une fonction bcp utilisée) | > est de la coder toi même en la typant correctement. | > | > -- | > Nicolas G. | > FAQ VB : http://faq.vb.free.fr | > API Guide : http://www.allapi.net | > Google Groups : http://groups.google.fr/ | > MZ-Tools : http://www.mztools.com/ | > | > Pascal B. wrote: | > > Salut, | > > | > > Le plus court des plus courts: | > > | > > Minimum = IIf(Expr1 < Expr2, Expr1, Expr2) | > > | > > Si tu cherches 1 seule fois le minimum de 2 nombres dans ton programme | > > il n'est pas nécessaire d'écrire une fonction | > > | > > Pascal B. | > > | > > "Barsalou" wrote in message | > > news:% | > >> Bonjour | > >> | > >> Le plus court: | > >> | > >> minimum=expr1 | > >> if expr2<expr1 then minimum=expr2 | > | > | |
Il ne faut pas toujours dramatiser,
tout est une question de contexte et de ce que l'on doit faire...
Ici, dans le cas qui est demandé, mon code n'a rien de gênant
si il est utilisé de manière ponctuelle et n'est pas placé
dans une boucle avec des milliers itérations.
Aussi, je comprend qu'il faille mettre en garde sur certaines pratiques
de programmation, mais c'est valable pour beaucoup d'autres instructions
(et pas qu'en VB).
Pascal B.
"Zoury" <yanick_lefebvre@hotmail.com> wrote in message news:%23mAJ5sPzEHA.1404@TK2MSFTNGP11.phx.gbl...
| Salut!
|
| et l'autre problème de IIF() c'est qu'il test toujours les deux expressions
| pouvant être retournées même si une seule d'entre elle sera retournée..
|
| Il effectue donc un test de plus que la structure If ...Then ... Else ... en
| plus de laisser la chance à certain bug de se glisser dans le code, comme le
| montrait la discussion suivante :
| http://groups.google.com/groups?threadm=OjrZg3vCCHA.1880%40tkmsftngp04
|
|
| --
| Cordialement
| Yanick Lefebvre
| MVP pour Visual Basic
| "ng" <ng@ngsoft-fr.com> a écrit dans le message de
| news:%23aPqNfMzEHA.3656@TK2MSFTNGP09.phx.gbl...
| > Salut,
| >
| > Le probmèe c'est que IIf() travail en variant => C'est donc plus lent (à
| > cause des castings), le mieux (surtout si c'est une fonction bcp utilisée)
| > est de la coder toi même en la typant correctement.
| >
| > --
| > Nicolas G.
| > FAQ VB : http://faq.vb.free.fr
| > API Guide : http://www.allapi.net
| > Google Groups : http://groups.google.fr/
| > MZ-Tools : http://www.mztools.com/
| >
| > Pascal B. wrote:
| > > Salut,
| > >
| > > Le plus court des plus courts:
| > >
| > > Minimum = IIf(Expr1 < Expr2, Expr1, Expr2)
| > >
| > > Si tu cherches 1 seule fois le minimum de 2 nombres dans ton programme
| > > il n'est pas nécessaire d'écrire une fonction
| > >
| > > Pascal B.
| > >
| > > "Barsalou" <eric.barsalou@wanadoo.fr> wrote in message
| > > news:%230h1hhIzEHA.2656@TK2MSFTNGP14.phx.gbl...
| > >> Bonjour
| > >>
| > >> Le plus court:
| > >>
| > >> minimum=expr1
| > >> if expr2<expr1 then minimum=expr2
| >
| >
|
|
Il ne faut pas toujours dramatiser, tout est une question de contexte et de ce que l'on doit faire...
Ici, dans le cas qui est demandé, mon code n'a rien de gênant si il est utilisé de manière ponctuelle et n'est pas placé dans une boucle avec des milliers itérations.
Aussi, je comprend qu'il faille mettre en garde sur certaines pratiques de programmation, mais c'est valable pour beaucoup d'autres instructions (et pas qu'en VB).
Pascal B.
"Zoury" wrote in message news:% | Salut! | | et l'autre problème de IIF() c'est qu'il test toujours les deux expressions | pouvant être retournées même si une seule d'entre elle sera retournée.. | | Il effectue donc un test de plus que la structure If ...Then ... Else ... en | plus de laisser la chance à certain bug de se glisser dans le code, comme le | montrait la discussion suivante : | http://groups.google.com/groups?threadm=OjrZg3vCCHA.1880%40tkmsftngp04 | | | -- | Cordialement | Yanick Lefebvre | MVP pour Visual Basic | "ng" a écrit dans le message de | news:% | > Salut, | > | > Le probmèe c'est que IIf() travail en variant => C'est donc plus lent (à | > cause des castings), le mieux (surtout si c'est une fonction bcp utilisée) | > est de la coder toi même en la typant correctement. | > | > -- | > Nicolas G. | > FAQ VB : http://faq.vb.free.fr | > API Guide : http://www.allapi.net | > Google Groups : http://groups.google.fr/ | > MZ-Tools : http://www.mztools.com/ | > | > Pascal B. wrote: | > > Salut, | > > | > > Le plus court des plus courts: | > > | > > Minimum = IIf(Expr1 < Expr2, Expr1, Expr2) | > > | > > Si tu cherches 1 seule fois le minimum de 2 nombres dans ton programme | > > il n'est pas nécessaire d'écrire une fonction | > > | > > Pascal B. | > > | > > "Barsalou" wrote in message | > > news:% | > >> Bonjour | > >> | > >> Le plus court: | > >> | > >> minimum=expr1 | > >> if expr2<expr1 then minimum=expr2 | > | > | |
Barsalou
Bonjour
Je trouve amusant que les questions les plus simples provoquent souvent les discussions les plus longues ! Ceci dit je constate que ma solution (voir plus haut) est quand même courte, rapide, claire et sans bugs cachés !
Bonjour
Je trouve amusant que les questions les plus simples provoquent souvent les
discussions les plus longues !
Ceci dit je constate que ma solution (voir plus haut) est quand même courte,
rapide, claire et sans bugs cachés !
Je trouve amusant que les questions les plus simples provoquent souvent les discussions les plus longues ! Ceci dit je constate que ma solution (voir plus haut) est quand même courte, rapide, claire et sans bugs cachés !