Lolcode - Guia rápido
LOLCODE é uma linguagem de programação esotérica inspirada nas coisas engraçadas da Internet. Ele é projetado para testar os limites do design de uma linguagem de programação.
Este capítulo irá familiarizá-lo com a configuração do ambiente local para LOLCODE, instalando-o no Windows e executando seu script online em Tutorialspoint-codingground.
Configurando o Ambiente Local
O interpretador LOLCODE é escrito em linguagem C. Ele interpreta o código escrito na linguagem LOLCODE em várias plataformas. O interpretador LOLCODE é conhecido como lci, que significa LOLCODE Interpreter.
Observe que LOLCODE oferece suporte oficialmente à instalação direta do interpretador apenas para sistemas operacionais MAC. Para instalar LOLCODE em seu sistema operacional, você precisa seguir as etapas abaixo -
- Pressione Command + Espaço e digite Terminal e pressione enter/return chave
- Executar no aplicativo Terminal
- $ git clone https://github.com/justinmeza/lci.git
- $ cd lci
- $ cmake.
- $ make && make install
Instalação em Windows
Se você precisar instalar o LOLCODE no sistema operacional Windows, siga estas etapas -
Primeiro adicione MinGW e Python ao seu caminho de variáveis de ambiente. Para fazer isso, clique com o botão direito emMy Computer, escolher Properties, então selecione Advanced system settings. Selecione Environment Variables. Nesta caixa, selecione oPATH variável e clique em Edit.
Agora, adicione "; C: \ MinGW \ bin; C: \ Python32" ao final desse caminho.
Em seguida, abra o Command Prompt e navegue até o diretório do projeto usando o comando "cd", por exemplo.
Execute o script install.py.
Executando Script Online com TutorialsPoint - codingground
Para executar seus scripts com facilidade e rapidez, use a plataforma codingground fornecida por TutorialsPoint. Para isso, acesse o seguinte link para executar seus scripts online -
LOLCODE tem uma sintaxe diferente em comparação com outras linguagens de programação, no entanto, é mais fácil de lembrar. Este capítulo fornece a sintaxe básica do LOLCODE.
Construtos
As construções LOLCODE são palavras de gíria. A tabela a seguir mostra a lista alfabética de construções implementadas até agora -
Sr. Não. | Construir e usar |
---|---|
1 | BTW Começa um comentário de uma única linha. |
2 | DOWN <variable>!!<times> Isso corresponde a variável = variável - vezes. Observe que "times" é uma extensão de idioma apenas para wut. |
3 | GIMMEH <variable> Isso representa a declaração de entrada. |
4 | GTFO Isso é semelhante a break em outras línguas e fornece uma maneira de sair de um loop. |
5 | HAI Isso corresponde a main ()funcionar em outras línguas. É o ponto de entrada do programa em LOLCODE. |
6 | HEREZ <label> Esta é outra extensão de linguagem apenas para wut e declara um rótulo para uso com SHOO |
7 | I HAS A <type> <variable> Isso declara uma variável desse tipo. Existem três tipos integrados no LOLCODE -
Observe que os tipos são uma extensão de linguagem somente wut. |
8 | IM IN YR LOOP Isso inicia um loop infinito. A única maneira de sair do loop é usando GTFO. Corresponde a para(;;) em outras línguas |
9 | IZ <expr1> <operator> <expr2>?: Conditional structure Isso é semelhante ao operador if em outros idiomas. Operador é um dos: BIGGER THAN, SMALLER THAN, SAEM AS. Observe que o? no final é opcional. |
10 | KTHX Termina um bloco. Corresponde a} |
11 | KTHXBAI Isso encerra um programa |
12 | NOWAI Isso corresponde a outro |
13 | PURR <expr> Isso imprime o argumento na tela, seguido por uma nova linha. É uma extensão de linguagem apenas para wut. |
14 | RELSE Isso corresponde a else (if) |
15 | SHOO Esta é outra extensão de idioma somente wut, que corresponde a goto (o horror!) |
16 | UP <variable>!!<times> Isso corresponde a variáveis = variável + vezes. Aqui, "times" é uma extensão de linguagem apenas para wut. |
17 | VISIBLE <expr> Isso imprime o argumento na tela. Observe que isso não imprime uma nova linha. |
18 | YARLY Isso denota o início do bloco condicional "verdadeiro" |
Alguns exemplos de termos de gíria em LOLCODE são -
- HAI é oi
- KTHXBYE está bem, obrigado, tchau
- BTW é por sinal
- OBTW é ah, a propósito
- TLDR é muito longo; não leu
Espaço em branco
Na maioria das linguagens de programação, palavras-chave ou tokens podem não ter espaços entre eles. No entanto, em alguns idiomas, os espaços são usados em tokens para diferenciá-los.
Vírgula
A vírgula se comporta como uma palavra-chave de nova linha na maioria dos idiomas, por exemplo, \n em Java e C. Você pode escrever muitos comandos em uma única linha em LOLCODE, desde que os separe usando uma vírgula (,).
Três períodos (...)
Os três pontos (…) permitem combinar várias linhas de código em uma única linha ou um único comando, incluindo (...) no final da linha. Isso faz com que o compilador trate o conteúdo da próxima linha apenas como o conteúdo da linha anterior. Linhas infinitas de código podem ser escritas juntas como um único comando, desde que cada linha termine com três pontos.
Um comentário é encerrado por uma nova linha. Observe que a continuação da linha (...) e (,) após o comentário (BTW) são ignorados pelo lci.
Comentários
Comentários de uma única linha são escritos seguidos pela palavra-chave BTW. Eles podem ocorrer em qualquer lugar dentro do corpo de um programa: podem estar na primeira linha do programa, entre o programa, entre alguma linha ou no final de um programa.
Todos esses são comentários válidos de uma única linha
I HAS A VAL ITZ 19 BTW VAL = 19
I HAS A VAL ITZ 19, BTW VAL = 19
I HAS A VAL ITZ 14
BTW VAR = 14
No LOLCODE, comentários de várias linhas são escritos seguidos por OBTW e terminados com TLDR.
Este é um comentário válido de várias linhas -
I HAS A VAL ITZ 51
OBTW this is a comment
No it’s a two line comment
Oops no.. it has many lines here
TLDR
Criação de Arquivo
Um programa LOLCODE começa com a palavra-chave HAI e deve terminar com KTHXBYE. Como LOLCODE usa linguagem abreviada HAI basicamente significa Hi e KTHXBYE pode ser lembrado como“Ok, thanks, bye ”.
Exemplo
HAI 1.2
I HAS A NAME
VISIBLE "NAME::"!
GIMMEH NAME
VISIBLE "tutorialsPoint " NAME "!"
KTHXBYE
Como em qualquer outra linguagem de programação, LOLCODE permite definir variáveis de vários tipos. Este capítulo irá familiarizá-lo com o trabalho com variáveis no LOLCODE.
Escopo das Variáveis
O escopo de uma variável é local para a função ou para o bloco de programa, ou seja, uma variável definida em um escopo não pode ser chamada em qualquer outro escopo do mesmo programa. As variáveis são acessíveis somente após serem declaradas.
Observe que não há escopo global de variáveis em LOLCODE.
Convenções de Nomenclatura
Os nomes das variáveis geralmente são chamados de identificadores. Aqui estão algumas das convenções para nomear variáveis em LOLCODE -
Os identificadores de variáveis podem estar em MAIÚSCULAS ou em letras minúsculas (ou uma mistura dos dois).
Eles só podem começar com uma letra e, em seguida, podem ser seguidos por outras letras, números e sublinhados.
LOLCODE não permite o uso de espaços, travessões ou outros símbolos ao nomear uma variável.
Os identificadores de variáveis diferenciam maiúsculas de minúsculas.
Aqui estão algumas das regras para nomes válidos e inválidos para variáveis em LOLCODE−
O nome deve sempre começar com um alfabeto. Por exemplo,name, Name é válido.
O nome de uma variável não pode começar com um dígito. Por exemplo,2var é inválido.
O nome de uma variável não pode começar com um caractere especial.
Uma variável pode conter _ ou um dígito em qualquer lugar dentro de seu nome, exceto no índice inicial. Por exemplo,name2_m é um nome válido.
Alguns exemplos de nomes válidos em LOLCODE são mostrados abaixo -
HAI 1.2
I HAS A food ITZ "111.00033"
I HAS A food2 ITZ "111"
I HAS A fo_od ITZ "1"
VISIBLE food
VISIBLE food2
VISIBLE fo_od
KTHXBYE
Todas as instruções de declaração no código acima são válidas e produzirão a seguinte saída quando executadas -
sh-4.3$ lci main.lo
111.00033
111
1
Alguns exemplos de instruções inválidas e seus resultados são fornecidos abaixo -
Exemplo 1
HAI 1.2
I HAS A 2food ITZ "111.00033"
KTHXBYE
O código acima fornecerá a seguinte saída quando você executá-lo -
sh-
4.3$ lci main.lo
Line 2: Expected: identifier; Got: int(2).
Exemplo 2
HAI 1.2
I HAS A _food ITZ "111.00033"
KTHXBYE
O código acima fornecerá a seguinte saída quando você executá-lo -
sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: _food ITZ "111.00033".
Exemplo 3
HAI 1.2
I HAS A f$ood ITZ "111.00033"
KTHXBYE
O código acima fornecerá a seguinte saída quando você executá-lo -
sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: $ood ITZ "111.00033".
Declaração e Atribuição de Variáveis
Para declareuma variável, LOLCODE fornece uma palavra-chave “I HAS A”, que é seguida pelo nome da variável. Você pode encontrar abaixo a sintaxe para declarar uma variável.
I HAS A VAR BTW VAR is empty now, You can use any name instead of var
Para assigna variável um valor na mesma instrução, você pode então seguir o nome da variável com “ITZ” e, em seguida, fornecer o valor que deseja atribuir. Use a seguinte sintaxe para atribuir um valor a uma variável -
<variable> R <expression>
Exemplo
VAR R "Green" BTW VAR is now a YARN and equals "Green"
VAR R 30 BTW VAR is now a NUMBR and equals 30
Você também pode declare e assign variáveis ao mesmo tempo usando a seguinte sintaxe -
I HAS A VAR ITZ VALUE
Exemplo
I HAS A NAME ITS “TUTORIALS POINT”
Exemplo
HAI 1.2
BTW this is how we declare variables
I HAS A food
I HAS A bird
BTW this is how we assign variables
food R 1
bird R 5
BTW this is how initialize variables
I HAS A biz ITZ "OMG!"
VISIBLE food
VISIBLE biz
VISIBLE bird
KTHXBYE
O programa acima mostra a declaração de variáveis e as imprime. O resultado é -
sh-
4.3$ lci main.lo
1
OMG!
5
Fundição de Tipo
Para converter um valor de um tipo em outro, usamos a conversão de tipos. Converter um NUMBAR em um NUMBR trunca a parte decimal do número de ponto flutuante. Lançar um NUMBAR em um YARN (imprimindo-o, por exemplo), trunca a saída para 2 casas decimais padrão.
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
A linha de código acima produzirá a seguinte saída -
sh-4.3$ lci main.lo
111.00033
111.00033
Todas as variáveis declaradas em um programa LOLCODE são variáveis locais e não há escopo global nesta linguagem para qualquer variável.
LOLCODE é projetado para testar os limites do design da linguagem de programação. É uma linguagem de programação esotérica inspirada nas coisas engraçadas da Internet. Este capítulo fornece uma compreensão dos tipos LOLCODE.
Tipos
Atualmente, os tipos de variáveis em LOLCODE são -
- strings (YARN)
- inteiros (NUMBR)
- flutuadores (NUMBAR)
- e booleanos (TROOF)
- Matrizes (BUKKIT)
Em LOLCODE, o tipo de variável é tratado dinamicamente pelo compilador. Se uma variável não tiver um valor inicial, ela é chamada de não digitada (conhecida como NOOB em LOLCODE).
A sintaxe para declarar e usar diferentes tipos em LOLCODE é mostrada abaixo -
Para criar uma variável de qualquer tipo de dados
I HAS A <VARIABLE> ITZ A <DATA TYPE>
Para criar uma variável e atribuir um valor a ela
I HAS A <VARIABLE> ITZ <EXPRESSION<
Para atribuir um valor a um tipo de dados já criado
<VARIABLE> R <EXPRESSION>
Sem tipo (NOOB)
O tipo de dados sem tipo (conhecido como NOOB) não pode ser convertido em qualquer outro tipo, exceto em um tipo de dados TROOF. A conversão implícita de um NOOB em TROOF torna a variável FAIL. Depois disso, qualquer operação em um NOOB resulta em um erro.
Casts explícitos de um tipo de dados NOOB (ou seja, os tipos que não foram inicializados e não têm nenhum valor inicial) resultam em valores zero para todos os outros tipos.
Para definir uma variável sem tipo, basta declarar uma variável e atribuir um valor conforme mostrado neste exemplo -
HAI 1.2
I HAS A VAR3
VAR3 R "ANYVALUE"
VISIBLE VAR3
BTW Or declare in same line
I HAS A VAR4 ITZ 44
VISIBLE VAR4
KTHXBYE
Ao executar o programa acima, você encontrará o seguinte resultado -
sh-
4.3$ lci main.lo
ANYVALUE
44
Booleanos (TROOFS)
Em LOLCODE, os valores booleanos são de dois tipos. BOOLEAN geralmente tem dois valores - verdadeiro e falso. Mas, em LOLCODE, o booleano é conhecido como TROOF e os valores verdadeiro / falso são conhecidos como WIN / FAIL, respectivamente. Todos os valores não inicializados, como uma string vazia ("") ou uma matriz vazia, serão convertidos em FAIL. Todos os outros valores inicializados são avaliados como WIN.
Exemplo
HAI 1.2
I HAS A VAR3 ITZ A TROOF
VAR3 R "FAIL"
VISIBLE VAR3
KTHXBYE
Você pode ver a seguinte saída ao executar o código acima -
sh-4.3$ lci main.lo
FAIL
Tipos numéricos (NUMBR)
Em LOLCODE, um NUMBR significa um inteiro. Qualquer sequência de dígitos é considerada um NUMBR, a menos que tenha um decimal aparecendo em qualquer lugar entre a sequência. Para tornar qualquer número negativo, ele pode ser precedido por um hífen (-) que significa um número negativo.
Exemplo
HAI 1.2
I HAS A VAR3 ITZ A NUMBR
VISIBLE VAR3
KTHXBYE
O código acima mostra o seguinte resultado quando você o executa−
sh-
4.3$ lci main.lo
0
Semelhante a NUMBR, LOLCODE tem outro tipo de dados, que representa um decimal ou um float em muitas linguagens de programação. Em LOLCODE, um NUMBAR é um float que contém um ponto decimal. Converter um NUMBAR em um NUMBR trunca a parte decimal do número de ponto flutuante e o retorna como NUMBR, sem nenhum decimal.
Strings (YARN)
Em LOLCODE, o valor que contém strings, ou seja, strings literais (YARN) deve começar e terminar com aspas duplas ("”).
Qualquer coisa pode ser escrita dentro da string, como espaço, vírgula, ponto final, exclamação ou qualquer outro símbolo. Uma string em que não há aspas simples pode causar um erro. Os dois pontos são usados como caracteres de escape em LOLCODE e qualquer valor após os dois pontos recebe um significado especial.
:) - Um colchete de fechamento após dois pontos representa uma nova linha (\ n)
:> - Um colchete angular de fechamento após dois pontos representa uma tabulação (\ t)
:o - A ‘o’ caractere após dois pontos representa um sino (bipe) (\ g)
:" - Um “após dois pontos representa uma aspa dupla literal (")
:: - Os dois pontos após os dois pontos representam um único ponto literal (:)
Exemplo
HAI 1.2
I HAS A VAR3 ITZ A YARN
VAR3 R "XYZ"
VISIBLE VAR3
KTHXBYE
O código fornecido acima produz a seguinte saída durante a execução -
sh-
4.3$ lci main.lo
XYZ
BUKKIT
Este tipo representa uma matriz. Ele tem slots nomeados, que podem conter variáveis ou funções. Um BUKKIT pode ser declarado da seguinte maneira -
BTW declaration of the BUKKIT
I HAS A [object] ITZ A BUKKIT BTW creating a variable in a slots
[object] HAS A [var] ITZ [value] BTW creating a function inside the BUKKIT
HOW IZ [object] [function name] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ...)))
[function code]
IF U SAY SO
Uma função dentro de um BUKKIT também pode acessar variáveis e outras funções do BUKKIT usando ME'Z [var] ou ME IZ [nome da função] (YR [argumento1] (AN YR [argumento2] (AN YR [argumento3] ... ))) MKAY.
Exemplo
HAI 1.2
I HAS A VAR6 ITZ A BUKKIT
BTW DECLARING AN ARRAY
VAR6 HAS A VAR7 ITZ "DOGE"
BTW VAR7 IS A STRING VARIABLE THAT IS INSERTED INTO ARRAY VAR6
VISIBLE VAR6'Z VAR7
BTW GET THE ELEMENT OF ARRAY
KTHXBYE
Esta é a saída que você encontrará ao executar o código fornecido acima -
sh-
4.3$ lci main.lo
DOGE
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 contendo 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 irá 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 algum 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 binário MAEK. A sintaxe do MAEK Operator é -
MAEK <expression> A <type>
onde, <tipo> pode ser um de TROOF, YARN, NUMBR, NUMBAR ou NOOB.
Para converter explicitamente uma variável para algum outro tipo, uma instrução de atribuição normal com o operador MAEK pode ser usada, ou uma instrução de atribuição de projeçã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
Este capítulo explicará como inserir um valor por meio do terminal LOLCODE e como gerá-lo no terminal.
E / S do Terminal
Você pode usar a palavra-chave VISIBLE para imprimir algo em LOLCODE. VISIBLE é uma função que pode receber um número infinito de caracteres como entrada e imprime-os todos de uma vez, concatenando-os internamente e convertendo-os em strings ou YARN.
A função VISIBLE termina ou termina por um delimitador, que é um final de linha ou uma vírgula.
A saída é encerrada automaticamente pelo compilador com um retorno de carro. Se o token final terminar com um símbolo de exclamação (!), O carro retornado será substituído por esse símbolo.
VISIBLE <any_expression> [<any_expression> ...][!]
Observe que em LOLCODE, atualmente não há um padrão definido para imprimir alguns dados em um arquivo.
Para obter alguma entrada do usuário, a palavra-chave usada é GIMMEH. É uma função que pode receber qualquer número de variáveis como entrada. Ele recebe YARN como entrada e armazena o valor em qualquer variável fornecida.
GIMMEH <any_variable>
Exemplo
HAI 1.2
I HAS A VAR ITZ A YARN BTW DECLARE A VARIABLE FOR LATER USE
VISIBLE "TYPE SOMETHING AND ENTER"
GIMMEH VAR BTW GET INPUT (STRING) INTO VARIABLE
VISIBLE VAR
KTHXBYE
Quando este código for executado, ele pedirá que você insira um número e o imprimirá de volta na próxima linha automaticamente. Quando você executar este código, ele imprimirá a seguinte saída -
sh-
4.3$ lci main.lo
TYPE SOMETHING AND ENTER
67
67
LOLCODE permite controlar o fluxo do programa por meio de várias instruções. Este capítulo explica os diferentes tipos de instruções disponíveis no LOLCODE.
Declarações de expressão
Uma expressão sem qualquer atribuição, ou seja, simplesmente chamando uma operação matemática ou qualquer função, é uma declaração válida em LOLCODE. Depois de avaliada a expressão, seu valor final é colocado na variável temporária IT. O valor de TI permanece no escopo local e existe até a próxima vez que for substituído por uma expressão.
Declarações de atribuição
As instruções de atribuição são usadas para atribuir a saída de qualquer expressão a uma determinada variável. Eles geralmente têm a forma -
<any_variable> <assignment operator> <any expression>
Observe que você pode usar uma variável na expressão, mesmo antes de ser atribuída.
Declarações Condicionais
Declarações If-Then
A instrução if-then é uma operação muito simples que trabalha na variável de TI. É semelhante a instruções if – else em outras linguagens de programação como C e Java.
Existem quatro palavras-chave para aplicar as instruções if – then.
- O RLY?
- YA RLY
- NO WAI
- OIC
A forma geral é -
<any_expression>
O RLY?
YA RLY
<code to execute if above condition is true>
NO WAI
<code to execute in this block>
OIC
Todas as declarações acima podem ser escritas na mesma linha, separadas por vírgulas como -
BOTH SAEM NAMES AN "Name", O RLY?
YA RLY, VISIBLE "My name is ABCD"
NO WAI, VISIBLE "Your name is ABCD"
OIC
Ao usar as instruções if-then, um MEBBE <qualquer expressão> opcional pode ser usado entre os blocos YA RLY e NO WAI.
Se a <qualquer expressão> após MEBBE for verdadeira (WIN), o bloco será executado. Caso contrário, se a expressão for falsa, o bloco é ignorado até as próximas instruções MEBBE, NO WAI ou OIC.
Exemplo
<any expression>
O RLY?
YA RLY
<code to be executed if true>
MEBBE <expression>
<code to be executed mebbe is true>
MEBBE <expression>
<code to be executed mebbe is true>
NO WAI
<code to be executed if above are false>
OIC
Exemplo
BOTH SAEM NAMES AN "NAME"
O RLY?
YA RLY, VISIBLE "YOUR NAME IS ABCD"
MEBBE BOTH SAEM ANIMAL AN "OUR NAME IS ABCD"
VISIBLE "NO ABCD"
OIC
Declarações de caso
Em LOLCODE, a palavra-chave 'WTF?' é semelhante ao switch em muitos outros idiomas. A palavra-chave WTF? considera IT como o valor da expressão para comparação. Para usar o WTF, um bloco de comparação é aberto pelo OMG, que deve ser um literal e não uma expressão.
Lembre-se de que cada literal deve ser único, semelhante ao caso em outras línguas.
O bloco OMG deve ser encerrado por uma instrução GTFO. Se um bloco OMG não for encerrado por um GTFO, o próximo bloco OMG será executado até que GTFO seja alcançado.
Se nenhum dos literais for avaliado como verdadeiro, o caso padrão será representado por OMGWTF.
WTF?
OMG <any value to compare>
<code block to execute if expression is satisfied>
OMG <any value to compare>
<code block to execute if expression is satisfied>
OMGWTF
<code block to execute as a default case>
OIC
NAME, WTF?
OMG "A"
VISIBLE "ABCD"
GTFO
OMG "E"
VISIBLE "EFGH"
GTFO
OMGWTF
VISIBLE "ZYXW"
OIC
Os resultados de saída do código acima serão -
"E":
EFGH
Os loops são usados em linguagens de programação para executar um conjunto de instruções várias vezes. Por exemplo, se você quiser imprimir o dígito 5 cinco vezes, em vez de escrever oVISIBLE “5” declaração cinco vezes, você pode executar um loop com uma única VISIBLE “5” declaração por cinco vezes.
Os loops simples são representados com IM IN YR <etiqueta> e IM OUTTA YR <etiqueta>. Os loops definidos dessa forma são loops infinitos e devem ser encerrados com uma instrução break GTFO.
Os loops de iteração têm a seguinte estrutura -
IM IN YR <label> <any_operation> YR <any_variable> [TIL|WILE <expression>]
<code block to execute inside the loop multiple times>
IM OUTTA YR <label>
Observe que, dentro do corpo da função, UPPIN (aumentar em um), NERFIN (diminuir em um) ou qualquer função unária pode ser usada.
A palavra-chave TIL calcula a expressão como TROOF: se for avaliada como FAIL, o loop continua mais uma vez, se for avaliado como WIN, a execução do loop para e continua após a instrução IM OUTTA YR correspondente.
A palavra-chave WILE é o oposto da palavra-chave TIL, se a expressão for WIN, a execução continua, caso contrário, o loop termina.
Exemplo
HAI 1.2
I HAS A VAR ITZ 0
IM IN YR LOOPY UPPIN YR VAR TIL BOTH SAEM VAR AN 10
VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOPY
KTHXBYE
Quando o código acima é compilado em qualquer compilador LOLCODE, ou em nosso codingground online, isso produzirá a seguinte saída.
sh-
4.3$ lci main.lo
1
2
3
4
5
6
7
8
9
10
As funções são úteis na programação porque reduzem o tempo e o esforço para escrever o código repetidamente. Um código de função bem escrito oferece alta capacidade de reutilização. Este capítulo explica como escrever e trabalhar com funções em LOLCODE.
Definição de uma função
Uma função é um conjunto de instruções que são executadas todas de uma vez ao chamar essa função. Em LOLCODE, a definição de uma função começa com a palavra-chave “HOW IZ I” e a palavra-chave de fechamento é “IF U SAY SO”.
A sintaxe para escrever uma função em LOLCODE é−
HOW IZ I <function name> [YR <parameter/argument> [AN YR <other _arguments..> …]]
<code block to execute / Set of statements to execute>
IF U SAY SO
Pontos importantes
Considere os seguintes pontos importantes ao definir uma função LOLCODE -
Em LOLCODE, a função pode aceitar apenas um certo número fixo de argumentos como entrada.
Os argumentos ou parâmetros são os identificadores que se tornam uma variável para a função.
As funções em LOLCODE não podem acessar nenhum outro valor além dos valores passados a eles como argumentos.
Retornando valor de uma função
Retorno na codificação significa algo que é devolvido. Na programação, uma função pode retornar algum valor ao programa quando sua execução for concluída. No LOLCODE, as funções retornam valores variados conforme explicado abaixo -
FOUND YR <any_expression> retorna o valor da expressão quando o bloco de funções é executado completamente.
GTFO não retorna nenhum valor (NOOB), que é semelhante a return 0 em outras linguagens de programação como C e Java.
Se nenhuma outra instrução de retorno for encontrada, então IF U SAY SO é executado e o valor na variável IT é retornado.
Funções de chamada
Uma função é definida no corpo do programa e posteriormente chamada para execução. Uma função que aceita um determinado número de argumentos é chamada conforme mostrado abaixo -
I IZ <function_name> [YR <expression_One> [AN YR <expression_Two>
[AN YR <expression_Three> ...]]] MKAY
Ao chamar uma função, a expressão é formada pelo nome da função, seguido pelo número de argumentos que a função aceitará. Esses argumentos podem ser variáveis simples ou quaisquer expressões. Se uma função aceita qualquer expressão em vez de um valor simples, os valores das expressões são calculados antes de a função ser chamada.
Lembre-se de que o número de argumentos que uma função aceitará deve ser definido na definição da função.
Exemplo
HAI
HOW DUZ I MAINUMBA
I HAS A NUMBA
GIMMEH NUMBA
FOUND YR NUMBA
IF U SAY SO
VISIBLE MAINUMBA
KTHXBYE
Ao executar o código acima, ele solicitará uma entrada e, em seguida, quando você enviar a entrada, verá o mesmo que o resultado. Por exemplo, se inserirmos 55, ele imprimirá 55.
Exemplo
HAI 1.2
HOW IZ I MULTIPLY YR FIRSTOPERANT AN YR SECONDOPERANT
FOUND YR PRODUKT OF FIRSTOPERANT AN SECONDOPERANT
IF U SAY SO
VISIBLE I IZ MULTIPLY YR 2 AN YR 3
KTHXBYE
A função acima que realiza a multiplicação dos operandos de entrada imprimirá a seguinte saída quando você executá-la−
sh-
4.3$ lci main.lo
6
Exemplo
HAI 1.2
I HAS A STRINGARRAY ITZ A BUKKIT
STRINGARRAY HAS A VAR17 ITZ "OBJECT1"
STRINGARRAY HAS A VAR18 ITZ "OBJECT2"
HOW IZ STRINGARRAY ACCESS YR VARIABLE
FOUND YR STRINGARRAY'Z SRS VARIABLE
IF U SAY SO
I HAS A STRING ITZ "VAR17"
VISIBLE STRINGARRAY IZ ACCESS YR STRING MKAY
KTHXBYE
A saída que o código acima irá produzir é -
sh-
4.3$ lci main.lo
OBJECT1
O tratamento de exceções é um dos mecanismos poderosos para tratar os erros de tempo de execução para que o fluxo normal do aplicativo possa ser mantido. LOLCODE não tem muito suporte para tratamento de exceções como outras linguagens de programação. Semelhante ao bloco Try-Catch em outras linguagens, LOLCODE tem o bloco PLZ.
Por exemplo, se você deseja abrir um arquivo que pode ou não existir, use -
PLZ OPEN FILE "filename.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHX
O código que pode causar uma exceção é escrito no bloco PLZ e a exceção é tratada no bloco O NOES. Aqui, a palavra-chave INVISIBLE envia uma mensagem interna para o depurador.
Observe que, como o LOLCODE não é mantido regularmente, não há mais atualizações disponíveis para o tratamento de exceções do LOLCODE e muitos outros recursos.
Os capítulos anteriores explicaram a programação em LOLCODE. Neste capítulo, você aprenderá alguns exemplos que permitem codificar em um nível avançado em LOLCODE.
Exemplo 1: programa para calcular a potência de um número
Neste exemplo, você encontrará o código para calcular a potência de um número de entrada. Por exemplo, 2 elevado à potência 4 é igual a 16.
HAI 1.2
HOW IZ I POWERTWO YR NUM
BTW RETURN 1 IF 2 TO POWER OF 0
BOTH SAEM NUM AN 0, O RLY?
YA RLY, FOUND YR 1
OIC
BTW CALCULATE 2 TO POWER OF NUM
I HAS A INDEX ITZ 0
I HAS A TOTAL ITZ 1
IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX AN NUM
TOTAL R PRODUKT OF TOTAL AN 2
IM OUTTA YR LOOP
FOUND YR TOTAL
IF U SAY SO
BTW OUTPUT: 8
VISIBLE I IZ POWERTWO YR 4 MKAY
KTHXBYE
O código acima irá imprimir a seguinte saída assim que for executado com sucesso -
sh-
4.3$ lci main.lo
16
Exemplo 2: Programa para fazer uma matriz
Este exemplo mostra o código para fazer uma matriz com cinco elementos e cada elemento com valor 10.
HAI 1.3
OBTW
CREATES A ONE DIMENSIONAL ARRAY WITH N ELEMENTS, EACH IS A 0
TLDR
HOW IZ I MAKEMATRIX YR N
I HAS A MATRIX ITZ A BUKKIT
IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX N
MATRIX HAS A SRS INDEX ITZ 10
IM OUTTA YR LOOP
FOUND YR MATRIX
IF U SAY SO
I HAS A N ITZ 5
I HAS A MATRIX ITZ A BUKKIT
MATRIX R I IZ MAKEMATRIX YR N MKAY
BTW PRINTS THE CONTENTS OF THE ARRAY
IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX N
VISIBLE MATRIX'Z SRS INDEX
IM OUTTA YR LOOP
KTHXBYE
Você pode ver a seguinte saída ao executar o código acima -
sh-4.3$ lci main.lo
10
10
10
10
10
Exemplo 3: programa para calcular o fatorial de um número
Este programa mostra o código para calcular o fatorial de um número de entrada.
HAI 1.3
HOW IZ I FACTORIAL YR N
BOTH SAEM N AN 0
O RLY?
YA RLY, FOUND YR 1
NO WAI
FOUND YR PRODUKT OF N AN I IZ FACTORIAL YR DIFF OF N AN 1
MKAY
OIC
IF U SAY SO
VISIBLE I IZ FACTORIAL YR 6 MKAY
KTHXBYE
O programa acima imprime o fatorial do número 6 e você pode ver a saída conforme mostrado abaixo -
sh-
4.3$ lci main.lo
720
Exemplo 4: Programa para projetar uma calculadora
Você pode projetar uma calculadora para realizar operações matemáticas básicas usando a programação LOLCODE. Observe o código fornecido abaixo -
HAI 1.2
I HAS A V1
I HAS A V2
I HAS A CHOICE
VISIBLE "VALUE1"
GIMMEH V1
VISIBLE "VALUE2"
GIMMEH V2VISIBLE "Choose Operation? + - * /"
GIMMEH CHOICE CHOICE, WTF?
OMG "+"
VISIBLE SUM OF V1 AN V2
GTFO
OMG "-"
VISIBLE DIFF OF V1 AN V2
GTFO
OMG "*"
VISIBLE PRODUKT OF V1 AN V2
GTFO
OMG "/"
VISIBLE QUOSHUNT OF V1 AN V2
GTFO
OMGWTF
VISIBLE "CHOOSE SOME OPERATION"
OIC
KTHXBYE
Quando executamos o programa acima com a seguinte entrada -
3
4
+
Após a execução, o programa acima irá gerar a seguinte saída -
VALUE1
VALUE2
Choose Operation? + - * /
7