Lolcode - Operadores
Los operadores juegan un papel importante para realizar diversas operaciones sobre variables. Este capítulo le ofrece varios operadores en LOLCODE y su uso.
Operadores
Los operadores matemáticos dependen de una notación de prefijo, es decir, la notación que viene antes del operando. Cuando todos los operadores tienen un número conocido de argumentos u operandos, no se necesitan marcadores de agrupación. En los casos en que los operadores no tienen argumentos u operandos fijos, la operación se cierra con MKAY.
No se puede utilizar un MKAY si coincide con el final de la declaración. En tales casos, se debe utilizar la palabra clave EOL. Para usar operadores matemáticos unarios, use la siguiente sintaxis:
<operator> <expression>
La palabra clave AN se puede usar opcionalmente para separar argumentos y aplicar una sola operación en más de un operando, por lo que una expresión de operador binario tiene la siguiente sintaxis:
<operator> <expression1> AN <expression2>
Cualquier expresión que contenga un operador con un número infinito de argumentos se puede expresar con la siguiente sintaxis:
<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY
Matemáticas
Las siguientes son las operaciones matemáticas básicas en 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> y <b> pueden ser expresiones únicas en lo anterior, por lo que los operadores matemáticos se pueden anidar y agrupar indefinidamente.
Las matemáticas se realizan considerando los argumentos como matemáticas enteras en presencia de dos NUMBR, pero si alguna de las expresiones es NUMBAR, las operaciones se consideran operaciones de punto flotante.
Ejemplo
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
El código anterior producirá el siguiente resultado cuando lo ejecute:
sh-
4.3$ lci main.lo
6
2
8
2
0
4
2
Puntos importantes -
Considere los siguientes puntos importantes relacionados con el trabajo con operadores matemáticos en LOLCODE−
Si uno o ambos argumentos de una expresión son YARN, se tratan como NUMBAR.
Si alguno de los argumentos no se puede convertir de forma segura internamente en un tipo numérico, entonces falla con un error
Booleano
Los operadores booleanos se aplican a aquellos valores que pueden ser verdaderos o falsos. Los operadores booleanos que trabajan en TROOF son los siguientes:
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.
Tenga en cuenta que <m> y <n> en la sintaxis de expresión anterior se emiten automáticamente como valores TROOF si aún no son valores TROOF.
Comparación
Cuando desee comparar dos o más operandos en LOLCODE, puede hacerlo en cualquiera de los siguientes métodos:
Método 1
Puede comparar dos operandos binarios utilizando operadores de igualdad. La sintaxis se muestra a continuación:
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étodo 2
Puede comparar si ambos valores son del tipo NUMBR. Recuerde que si alguno de los valores es NUMBAR, entonces se compara como valores de coma flotante.
Método 3
También puede realizar una comparación utilizando los operadores mínimo y máximo. La sintaxis se muestra a continuación:
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
Puede ver la siguiente salida cuando ejecuta el código dado:
sh-
4.3$ lci main.lo
TRUE
Concatenación de valores
LOLCODE le permite concatenar explícitamente un número infinito de YARN usando el operador SMOOSH… MKAY. Para la concatenación, varios argumentos se pueden separar con elAN operador.
Ejemplo
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
El código dado anteriormente producirá el siguiente resultado tras la ejecución:
sh-
4.3$ lci main.lo
TRUE ONE MORE TRUE ANOTHER TRUE
Tipo Casting
Los operadores que trabajan en tipos específicos emiten o convierten implícitamente los valores de un tipo en otro tipo de forma segura. Si el valor no se puede convertir de forma segura a otro tipo, se produce un error.
El valor de una expresión se puede convertir explícitamente o convertir a algún otro tipo con el operador binario MAEK. La sintaxis de MAEK Operator es:
MAEK <expression> A <type>
donde, <tipo> puede ser uno de TROOF, YARN, NUMBR, NUMBAR o NOOB.
Para convertir explícitamente una variable a algún otro tipo, se puede usar una declaración de asignación normal con el operador MAEK, o se puede usar una declaración de asignación de conversión de la siguiente manera:
<Any_variable> IS NOW A <type> BTW this code will be equal to
<Any_variable> R MAEK <variable> A <type>
Ejemplo
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
El código anterior producirá el siguiente resultado:
sh-4.3$ lci main.lo
111.00033
111.00033