Lolcode - Operadores

Os operadores desempenham um papel importante para executar várias operações nas variáveis. Este capítulo traz vários operadores em LOLCODE e seu uso.

Operadores

Os operadores matemáticos dependem de uma notação de prefixo, isto é, a notação que vem antes do operando. Quando todos os operadores têm um número conhecido de argumentos ou operandos, nenhum marcador de agrupamento é necessário. Nos casos em que os operadores não possuem argumentos ou operandos fixos, a operação é fechada com MKAY.

Um MKAY não pode ser usado se coincidir com o final do extrato. Nesses casos, a palavra-chave EOL deve ser usada. Para usar operadores matemáticos unários, use a seguinte sintaxe -

<operator> <expression>

A palavra-chave AN pode ser usada opcionalmente para separar argumentos e aplicar uma única operação em mais de um operando, portanto, uma expressão de operador binário tem a seguinte sintaxe -

<operator> <expression1> AN <expression2>

Qualquer expressão que contenha um operador com um número infinito de argumentos pode ser expressa com a seguinte sintaxe -

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

Matemática

A seguir estão as operações matemáticas básicas em 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> e <b> podem cada um ser expressões únicas no exemplo acima, então os operadores matemáticos podem ser aninhados e agrupados indefinidamente.

A matemática é realizada considerando argumentos como matemática inteira na presença de dois NUMBRs, mas se qualquer uma das expressões for NUMBAR, as operações são consideradas como operações de ponto flutuante.

Exemplo

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

O código acima produzirá a seguinte saída quando você executá-lo -

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

Pontos importantes -

Considere os seguintes pontos importantes relacionados ao trabalho com operadores matemáticos em LOLCODE−

  • Se um ou ambos os argumentos em uma expressão forem YARN, eles serão tratados como NUMBARs.

  • Se algum dos argumentos não puder ser convertido com segurança internamente em um tipo numérico, ele falhará com um erro

boleano

Os operadores booleanos são aplicados aos valores que podem ser verdadeiros ou falsos. Operadores booleanos trabalhando em TROOFs são os seguintes -

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.

Observe que <m> e <n> na sintaxe da expressão acima são convertidos automaticamente como valores TROOF se eles ainda não forem Valores TROOF.

Comparação

Quando você deseja comparar dois ou mais operandos em LOLCODE, você pode fazer isso em qualquer um dos seguintes métodos -

Método 1

Você pode comparar dois operandos binários usando operadores de igualdade. A sintaxe é mostrada abaixo -

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

Você pode comparar se ambos os valores são do tipo NUMBRs. Lembre-se de que, se qualquer um dos valores for NUMBARs, eles serão comparados como valores de ponto flutuante.

Método 3

Você também pode realizar a comparação usando os operadores mínimo e máximo. A sintaxe é mostrada abaixo -

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

Você pode ver a seguinte saída ao executar o código fornecido -

sh-
4.3$ lci main.lo

TRUE

Concatenação de Valores

LOLCODE permite concatenar explicitamente um número infinito de YARNs usando o operador SMOOSH… MKAY. Para concatenação, vários argumentos podem ser separados com oAN operador.

Exemplo

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

O código fornecido acima produzirá o seguinte resultado na execução -

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

Fundição de Tipo

Os operadores que trabalham em tipos específicos convertem ou convertem implicitamente os valores de um tipo em outro com segurança. Se o valor não puder ser convertido com segurança em outro tipo, isso resultará em um erro.

O valor de uma expressão pode ser convertido explicitamente em algum outro tipo com o operador MAEK binário. A sintaxe do MAEK Operator é -

MAEK <expression> A <type>

onde, <tipo> pode ser TROOF, YARN, NUMBR, NUMBAR ou NOOB.

Para converter explicitamente uma variável para algum outro tipo, uma declaração de atribuição normal com o operador MAEK pode ser usada, ou uma declaração de atribuição de conversão pode ser usada da seguinte maneira -

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

Exemplo

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

O código acima irá produzir a seguinte saída−

sh-4.3$ lci main.lo
111.00033
111.00033