If et tableau

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

If et tableau

Message par Thyphoon »

Une petite question
imaginons ce code !

Code : Tout sélectionner

Dim Tableau(100,100)
x=0
y=0

if Tableau(x-1,y)=0: 
 a=a+1
Endif 
Nous avons le message alors "Array index out of bounds" ce qui est logique
donc apres je remplace par le code suivant

Code : Tout sélectionner

Dim Tableau(100,100)
x=0
y=0
if x>0
  if Tableau(x-1,y)=0: 
   a=a+1
  Endif
Endif
Là tout marche bien
et puie j'ai essayer ce dernier code

Code : Tout sélectionner

Dim Tableau(100,100)
x=0
y=0
if x>0 and Tableau(x-1,y)=0: 
  a=a+1
Endif
Et là ça marche encore

mais si j'inverse les 2 conditions

Code : Tout sélectionner

Dim Tableau(100,100)
x=0
y=0
If Tableau(x-1,y)=0 And x>0 
  a=a+1
EndIf
là j'ai bien l'erreur ....
donc ma question est la suivante !
Est ce que si j'écris

Code : Tout sélectionner

if x>0 and Tableau(x-1,y)=0: 
C'est bien correct ?
Ou bien ça fonctionne actuellement mais ça pourrait tres bien ne plus fonctionné par la suite ou dans un autre basic ?
Vous voyez ou je veux en venir ?
Je me demande si la syntax que j'utilise est correct ou bien si la convention me dit ...oui ça marche mais il vaut mieux séparé les 2 conditions ... :roll:
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

C'est tout à fait correct,

"if x>0 and Tableau(x-1,y)=0"; tout se passe comme s'il y avait plusieurs if comme tu l'as démontré donc l'ordre des test à son importance, et If Tableau(x-1,y)=0 And x>0 est donc différent du précédent.

:)
Dernière modification par nico le jeu. 07/oct./2004 9:09, modifié 2 fois.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci Nico :wink:
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Si tu as A and B , si A n'est pas vrai , B n'est pas testé .
Idem si tu as A OR B si A est vrai , dans ce cas c'est inutile de tester B.

Quand tu demandes si cette syntaxe est valable pour tous les basics , je te répondrai non !



C'est pour ça qu'on aime purebasic , il permet de le faire :)
Dernière modification par comtois le jeu. 07/oct./2004 11:42, modifié 1 fois.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci pour cette précision Comtois :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Idem si tu as A OR B si A est vrai , dans ce cas c'est inutile de tester B.

heu je suis pas tout a fait d'accord !!

a OR b -----> veut dire (a ou b ou bien les deux !!!) c'est un "ou" et un "and" en mem temps !! un "ou" non exclusif
soit l'un soit l'autre voire les deux !!!

ta definitionserai juste avec

A XOR B ----> "ou" que l'un "ou" que l'autre !!! un "ou " exclusif !!

soit l'un soit l'autre mais pas les deux !!!
:)


d'ailleur je ne comprend pas que dans ce basic on aient pas de Xor !!!
:?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Mais il existe, le voici "!", ne soit pas étonné, c'est bien ça!

:)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

J'ai l'impression que vous confondez un peu tout, là!

A l'origine du post, il s'agit de comparer si deux valeurs correspondent à certains critères, a savoir "if x>0 and Tableau(x-1,y)=0"

Si x est plus grand que 0 ET tableau (x-1,0) est égal à 0

Il ne s'agit pas de faire une comparaison bit à bit des valeurs, mais des résultats des tests.

Dans ce cas, si
x = 500 : (x est plus grand que 0, donc VRAI)
AND
tableau(x-1,y)=0 (donc, vrai aussi)
la réponse sera VRAI (Vrai AND Vrai = Vrai)
alors que si tu fais 500 AND 0(donc, Faux), le résultat est 0.

Donc, ce que dit Comtois, dans ce cas est exact.
Répondre