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 -

  • NUMBAH (int)
  • DECINUMBAH (duplo)
  • WORDZ (std :: string)

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