Opérateurs et expressions logiques en OPLPlan
|
| Opérateur | Fonction |
| + | additionner |
| - | soustraire |
| * | multiplier |
| / | diviser |
| ** | élever à la puissance |
| - | négativer (par exemple, -10) |
| % | pourcentage |
| MOD | modulo - reste de la division de deux nombres |
> En OPL on dispose des opérateurs de comparaison suivants :
| Opérateur | Fonction |
| > | supérieur à |
| >= | supérieur ou égal à |
| > | inférieur à |
| <= | inférieur ou égal à |
| = | égal à |
| <> | différent de |
> En OPL on dispose des opérateurs logiques et booléains suivants :
| Opérateur | Fonction |
| AND | ET logique |
| OR | OU logique |
| NOT | NON logique |
| XOR | OU exclusif |
> L'opérateur de pourcentage peut être utilisé dans des expressions telles que :
| Expression | Sign si ication | Résultat |
| 60+5% | 60 plus 5% de 60 | 63 |
| 60-5% | 60 moins 5% de 60 | 57 |
| 60*5% | 5% de 60 | 3 |
| 60/5% | 5% de quel nombre vaut 60 ? | 1200 |
> On peut également l'utiliser de cette façon :
| Expression | Sign si ication | Résultat |
| 105>5% | quel nombre vaut 105 quand on l'augmente de 5% ? | 100 |
| 105<5% | quelle est la valeur de l'augmentation de 5% qui donne 105 ? | 5 |
| Priorité | Opérateur | Haute | ** |
| - (négativation) | |
| NOT | |
| * / | |
| + - (soustraction) | |
| = > < <> >= <= | |
| Basse | AND OR |
> Si dans une expression tous les opératuers ont le même degré de priorité, ils sont évalués de gauche à droite (à l'exception des puissances).
> Les puissances sont pour leur part évaluées de droite ŕ gauche.
> Le résultat d'une expression telle que a+b+c est identique quelque soit l'ordre d'addition de a avec b, ou de b avec c. Mais comment l'expression a+b*c/d est -elle évaluée ? Il vous est loisible de mettre des parenthèses :
> Par défaut, l'expression a+b*c/d est évaluée dans l'ordre suivant : b est multiplié par c, puis divisé par d, puis le résultat est additionné à a. Afin de réaliser l'addition et la division avant la multiplication, utilisez des parenthčses : (a+b)*(c/d). En cas de doute sur l'ordre d'effection des opérations, utilisez des parenthčses.
> Vous êtes libres de mélanger des valeurs entières et des nombres en virgule-flottante, mais il vous faut prendre en compte la façon dont OPL gère ce mélange :
> De telles conversions peuvent générer des résultats étranges.
> L' OPL ne fait pas de rapport d'erreur pour ce genre de problème et c'est à vous de prendre en compte ce fait pour que cela ne survienne pas sauf si vous le souhaitez.
> Il existe en OPL trois types pour représenter les nombres : les nombres en virgule-flottante, les entiers et les entiers longs. Vous avez la possibilité de convertir chacun de ces types en l'un quelconques des autres. La valeur de l'expression de droite sera automatiquement convertie au type de la variable de gauche.
> L'arrondi à zéro peut parfois donner des résultats surprenants.
|
> Les opérateurs de comparaison et les opérateurs logiques reposent sur l'idée qu'on peut évaluer certaines situations soit comme étant « Vraies » ou comme étant « Fausses »
> Ces opérateurs utiles pour paramétrer les embranchements alternatifs de vos procédures.
IF salaire<depenses
FairePasBon:
ELSE
FaireBon:
ENDIF
> Vous pouvez également tirer parti du fait que le résultat de ces expressions logiques est représenté par un nombre entier :
| Opérateur | Exemple | Résultat retourné | Valeur retournée |
| < | a<b | Vrai si a inférieur à b | -1 |
| Faux si a supérieur ou égal à b | 0 | ||
| > | a>b | Vrai si a supérieur à b | -1 |
| Faux si a inférieur ou égal à b | 0 | ||
| <= | a<=b | Vrai si a inférieur ou égal à b | -1 |
| Faux si a supérieur à b | 0 | ||
| = | a>=b | Vrai si a supérieur ou égal à b | -1 |
| Faux si a inférieur à b | 0 | ||
| <> | a<>b | Vrai si a différent de b | -1 |
| Faux si a égal à b | 0 | ||
| = | a=b | Vrai si a égal à b | -1 |
| Faux si a différent de b | 0 |
Ces valeurs entières peuvent être assignées à une variable, affichées à l'écran pour vous signaler si une condition particulière est vraie ou fausse, ou utilisées dans des instructions IF.
> Les opérateurs AND, OR et NOT ont des effets qui diffèrent selon qu'ils sont utilisés avec des nombres en virgule-flottante ou des entiers.
Les commande AND, OR et NOT sont des opérateurs logiques. Ils agissent de la manière suivante :
| Exemple | Résultat | Valeur retournée |
| a AND b | Vrai si a et b sont différents de zéro | -1 |
| Faux si a ou b égale zéro | 0 | |
| a OR b | Vrai si a ou b est différent de zéro | -1 |
| Faux si a et b égalent zéro | 0 | |
| NOT a | Vrai si a égale zéro | -1 |
| Faux si a est différent de zéro | 0 |
Les commandes AND, OR et NOT sont des opérateurs booléains. En interne, OPL traite les nombres entiers de façons binaire avec un code sur 16 bits pour les nombres Entiers, et 32 bits pour les Entiers longs. Ces commandes opèrent sur chaque bit du code (bitwise operator en anglais). Un bit est activé (set) s'il vaut 1, ou inactivé (clear) s'il vaut 0. Les nombres entiers longs se comportent de la même mainères que les entiers avec AND, OR et NOT.
Cette commande laisse le bit actif si les deux entrées sont actives, sinon elle l'inactive.
Cette commande active le bit du résultat si l'un au moins des bits d'entrée est activé, sinon elle l'inactive.
Cette commande active le bit si l'entrée est inactivée, et inversement.
La commande NOT ne s'applique qu'à un seul nombre. Elle retourne son complément, en remplaçant les 0 par des 1 et les 1 par des 0.
| Pour calculer rapidement le résultat de la commande NOT sur un entier, il suffit de lui ajouter 1 et de le négativer Exemples : NOT 23 égale -24, NOT 0 égale -1 et NOT -1 égale 0. |