Lolcode - Opérateurs

Les opérateurs jouent un rôle important pour effectuer diverses opérations sur les variables. Ce chapitre vous présente différents opérateurs dans LOLCODE et leur utilisation.

Les opérateurs

Les opérateurs mathématiques dépendent d'une notation de préfixe, c'est-à-dire la notation qui précède l'opérande. Lorsque tous les opérateurs ont un nombre connu d'arguments ou d'opérandes, aucun marqueur de regroupement n'est nécessaire. Dans les cas où les opérateurs n'ont pas d'arguments ou d'opérandes fixes, l'opération est fermée avec MKAY.

Un MKAY ne peut pas être utilisé s'il coïncide avec la fin de l'instruction. Dans de tels cas, le mot clé EOL doit être utilisé. Pour utiliser des opérateurs mathématiques unaires, utilisez la syntaxe suivante -

<operator> <expression>

Le mot clé AN peut éventuellement être utilisé pour séparer les arguments et appliquer une seule opération sur plusieurs opérandes, de sorte qu'une expression d'opérateur binaire a la syntaxe suivante -

<operator> <expression1> AN <expression2>

Toute expression contenant un opérateur avec un nombre infini d'arguments peut être exprimée avec la syntaxe suivante -

<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY

Math

Voici les opérations mathématiques de base dans LOLCODE -

SUM OF <a> AN <b>      BTW This is a plus + operator
DIFF OF <a> AN <n>     BTW This is a minus - operator
PRODUKT OF <a> AN <n>  BTW This is a multiply operator *
QUOSHUNT OF <a> AN <n> BTW This is a divide operator
MOD OF <a> AN <n>      BTW This is a modulo operator
BIGGR OF <a> AN <n>    BTW This is a max operator
SMALLR OF <a> AN <n>   BTW This is a min operator

<a> et <b> peuvent chacun être des expressions uniques dans ce qui précède, de sorte que les opérateurs mathématiques peuvent être imbriqués et groupés indéfiniment.

Les mathématiques sont effectuées en considérant les arguments comme des nombres entiers en présence de deux NUMBR, mais si l'une des expressions est NUMBAR, alors les opérations sont considérées comme des opérations en virgule flottante.

Exemple

HAI 1.2
   I HAS A m ITZ 4
   I HAS A n ITZ 2
VISIBLE SUM OF m AN n      BTW +
VISIBLE DIFF OF m AN n     BTW -
VISIBLE PRODUKT OF m AN n  BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n      BTW modulo
VISIBLE BIGGR OF m AN n    BTW max
VISIBLE SMALLR OF m AN n   BTW min
KTHXBYE

Le code ci-dessus produira la sortie suivante lorsque vous l'exécuterez -

sh-
4.3$ lci main.lo
6
2
8
2
0
4
2

Points importants -

Considérez les points importants suivants liés au travail avec des opérateurs mathématiques dans LOLCODE−

  • Si l'un ou les deux arguments d'une expression sont YARN, ils sont traités comme des NUMBAR.

  • Si l'un des arguments ne peut pas être converti en toute sécurité en interne en type numérique, cela échoue avec une erreur

Booléen

Les opérateurs booléens sont appliqués aux valeurs qui peuvent être vraies ou fausses. Les opérateurs booléens travaillant sur les TROOF sont les suivants:

BOTH OF <m> AN <n>             BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF <m> AN <n>           BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF <m> AN <n>              BTW its xor operation: FAIL if m = n
NOT <m>                        BTW its an unary negation: WIN if m = FAIL
ALL OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply AND
ANY OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply OR.

Veuillez noter que <m> et <n> dans la syntaxe d'expression ci-dessus sont automatiquement convertis en valeurs TROOF s'ils ne sont pas déjà des valeurs TROOF.

Comparaison

Lorsque vous souhaitez comparer deux opérandes ou plus dans LOLCODE, vous pouvez le faire dans l'une des méthodes suivantes:

Méthode 1

Vous pouvez comparer deux opérandes binaires à l'aide d'opérateurs d'égalité. La syntaxe est indiquée ci-dessous -

BOTH SAEM <m> AN <n>   BTW this will return WIN if m is equal to n
DIFFRINT <m> AN <n>    BTW this will return WIN if m is not equal to n

Méthode 2

Vous pouvez comparer si les deux valeurs sont de type NUMBR. N'oubliez pas que si l'une des valeurs est NUMBAR, elle est comparée en tant que valeur à virgule flottante.

Méthode 3

Vous pouvez également effectuer une comparaison à l'aide des opérateurs minimum et maximum. La syntaxe est indiquée ci-dessous -

BOTH SAEM <m>   AN BIGGR OF <m> AN <n>

BOTH SAEM <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN BIGGR OF <m> AN <n>

Example

HAI 1.2
I HAS A VAR11 ITZ 7
BOTH SAEM VAR11 SMALLR OF VAR11 AN 8, O RLY?
YA RLY
VISIBLE "TRUE"
NO WAI
VISIBLE "FALSE"
OIC
KTHXBYE

Vous pouvez voir la sortie suivante lorsque vous exécutez le code donné -

sh-
4.3$ lci main.lo

TRUE

Concaténation de valeurs

LOLCODE vous permet de concaténer explicitement un nombre infini de YARN à l'aide de l'opérateur SMOOSH… MKAY. Pour la concaténation, plusieurs arguments peuvent être séparés avec leAN opérateur.

Exemple

HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"

I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"

I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE

Le code donné ci-dessus produira le résultat suivant lors de l'exécution -

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

Type Casting

Les opérateurs qui travaillent sur des types spécifiques transtypent ou convertissent implicitement les valeurs d'un type en un autre type en toute sécurité. Si la valeur ne peut pas être convertie en toute sécurité en un autre type, cela entraîne une erreur.

La valeur d'une expression peut être explicitement castée ou convertie en un autre type avec l'opérateur MAEK binaire. La syntaxe de l'opérateur MAEK est -

MAEK <expression> A <type>

où, <type> peut être l'un des TROOF, YARN, NUMBR, NUMBAR ou NOOB.

Pour convertir explicitement une variable en un autre type, une instruction d'affectation normale avec l'opérateur MAEK peut être utilisée, ou une instruction d'affectation de conversion peut être utilisée comme suit -

<Any_variable> IS NOW A <type>  BTW this code will be equal to
<Any_variable> R MAEK <variable> A <type>

Exemple

HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food

BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE

Le code ci-dessus produira la sortie suivante -

sh-4.3$ lci main.lo
111.00033
111.00033