Traitement simple des variables : priorité des opérateurs

Maintenant que vous connaissez les opérateurs mathématiques de base, vous devez connaître l'ordre dans lequel ils sont calculés (aussi appelé priorité des opérateurs). PureBasic respecte les mêmes règles qu'en mathématiques donc les opérateurs de multiplication et de division sont évalués en premier (et dans l'ordre où ils sont écrits - de gauche à droite - s'ils sont placés de chaque côté d'un élément). Les opérateurs d'addition et de soustraction sont ensuite calculés (également de gauche à droite s'ils se trouvent de chaque côté d'un élément).

Par exemple, étant donné le calcul suivant :

a = b + c - d + e * f * g / h
L'ordre dans lequel les différentes parties seront traitées sera le suivant :
  1. e * f
  2. ... * g
  3. ... / h
  4. b + c
  5. ... - d
  6. Enfin les deux parties du calcul seront ajoutées ensemble et le résultat sera assigné à la variable a.

Cependant vous pouvez changer l'ordre dans lequel les calculs s'effectuent. Cela est possible en écrivant des parenthèses autour des parties du calcul afin qu'elles soient traitées en premier. Vous pouvez également insérer des parenthèses à l'intérieur de parenthèses pour forcer l'ordre d'évaluation. L'exemple ci-dessous présente certaines applications des opérateurs de priorité et des parenthèses. Vous pouvez obtenir le source ici

OpenConsole()

a = 3
b = 5
c = 2
d = 7

; Différents opérateurs - multiplication avant addition
e = a + b * c
PrintN("La valeur de e devrait etre 13 : "+Str(e))

; Changement de l'ordre d'évaluation
e = (a + b) * c
PrintN("e devrait maintenant valoir 16 : "+Str(e))

; Plusieurs opérateurs de même priorité - de gauche à droite
e = a + b - c
PrintN("e devrait maintenant valoir 6 : "+Str(e))

Define.f f

; Plusieurs opérateurs de même priorité - de gauche à droite
f = a / b * c
PrintN("f = "+StrF(f)+" (devrait valoir 1.2)")

; Changement de l'ordre d'évaluation - mais résultat identique car
; la position des parenthèses indique que le même ordre est suivi
f = (a / b) * c
PrintN("f = "+StrF(f)+" (devrait valoir 1.2)")

; Changement de l'ordre d'évaluation
f = a / (b * c)
PrintN("f = "+StrF(f)+" (devrait valoir 0.3)")

; Parenthèses imbriquées
f = (a - ((b + d) / (c + d)))
PrintN("f = "+StrF(f)+" (devrait valoir 1.6666...)")

; Sans parenthèses
f = a - b + d / c + d
PrintN("f = "+StrF(f)+" (devrait valoir 8.5)")

PrintN("Appuyez sur ENTREE pour quitter")
Input()
CloseConsole()
End

Sortie (Output) de l'exemple parenthèses