[VB] opérateur équivalents à "And Then" et "Or Else"

opérateur équivalents à "And Then" et "Or Else" [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 03-05-2002 à 13:24:41    

Salut à tous !
 
Je voulais savoir si il existe des opérateurs comme && et || en C/C++/JAVA qui n'évaluent le deuxième élément que si c'est nécessaire.
 
par exemple dans ça:

Code :
  1. If (i<>0) And Then (val/i >5) then
  2.   //instructions...
  3. end if


 
VB n'évaluerai (val/i>5) que si (i<>0) est vrai.
 
Si quelqu'un peux maider, je lui en serai grandement reconnaissant.
 
Merci d'avance  :hello:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 03-05-2002 à 13:24:41   

Reply

Marsh Posté le 03-05-2002 à 13:44:28    

Tu peux utiliser une boucle imbriquée comme ça
 
if i<>0 then
  if (val/i > 5) then
 
  endif
endif
 
Voila .. :hello:

Reply

Marsh Posté le 03-05-2002 à 14:30:09    

brunix007 a écrit a écrit :

Tu peux utiliser une boucle imbriquée comme ça
 
if i<>0 then
  if (val/i > 5) then
 
  endif
endif
 
Voila .. :hello:  




 
Le pb, c'est que si je fais comme ça, je dois faire 2 fois le même else:

Code :
  1. if i<>0 then
  2.   if (val/i > 5) then
  3.     'Instruction 1
  4.   else
  5.     'instruction 2
  6.   end if
  7. else
  8.   'instruction 2
  9. end if


 
alors qu'avec le "and then" je ferais ça:

Code :
  1. if i<>0 and then (val/i > 5) then
  2.   'Instruction 1
  3. else
  4.   'instruction 2
  5. end if


 
donc ça m'éviterai de la redondance de code et les problèmes inhérents en cas de modif du code.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-05-2002 à 12:26:12    

[:tomilou] pour la forme, mais je pense que ça doit pas exister (remarque je m'en serais rendu compte depuis le temps que ça me fait chier  :( )


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-05-2002 à 12:51:37    

La méthode indiquée est la plus sûre si on ne veut pas évaluer la deuxième condition si la première est fausse (comme en C).
 
On peut aussi faire if ((A = B) AND (C = D)) then
 
mais qui peut dire si la seconde expression sera ou non évaluée si A <> B .....?

Reply

Marsh Posté le 06-05-2002 à 12:54:10    

carbon_14 a écrit a écrit :

La méthode indiquée est la plus sûre si on ne veut pas évaluer la deuxième condition si la première est fausse (comme en C).
 
On peut aussi faire if ((A = B) AND (C = D)) then
 
mais qui peut dire si la seconde expression sera ou non évaluée si A <> B .....?  




 
Elle est évaluée, j'en ai fait la cruelle experience...


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 06-05-2002 à 13:33:07    

il exite aussi la commande select case je crois:
 
select case (variable)
case is 1 : ...
case is 2 : ...
else : ...
end case
 
ou qq ch du genre

Reply

Marsh Posté le 06-05-2002 à 13:42:51    

Si le problème est que la structure
if i<>0 then
 if (val/i > 5) then
   'Instruction 1
 else
   'instruction 2
 end if
else
 'instruction 2
end if
 
risque de poser des problèmes lors de changements du code, il suffit de créer une fonction "mère" qui traîte l'instruction 2 globalement, il suffira ensuite de ne changer que le contenu du corps de cette fonction => pas de risque d'erreur.
 
if i<>0 then
 if (val/i > 5) then
   'Instruction 1
 else
   Call FonctionMere
 end if
else
 Call FonctionMere
end if
 
Le VB, ce n'est pas le C ! Ca a des avantages et des inconvénients..

Reply

Marsh Posté le 06-05-2002 à 14:32:09    

carbon_14 a écrit a écrit :

Le VB, ce n'est pas le C ! Ca a des avantages et des inconvénients..  




 
Je sais, je n'ai pas choisi de programmer en VB :(


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed