Lolcode - Guía rápida
LOLCODE es un lenguaje de programación esotérico inspirado en las cosas divertidas de Internet. Está diseñado para probar los límites del diseño de lenguajes de programación.
Este capítulo lo familiarizará con la configuración del entorno local para LOLCODE, su instalación en Windows y la ejecución de su script en línea en Tutorialspoint-codingground.
Configuración del entorno local
El intérprete de LOLCODE está escrito en lenguaje C. Interpreta el código escrito en lenguaje LOLCODE en múltiples plataformas. El intérprete de LOLCODE se conoce como lci, que significa intérprete de LOLCODE.
Tenga en cuenta que LOLCODE admite oficialmente la instalación directa del intérprete solo para sistemas operativos MAC. Para instalar LOLCODE en su sistema operativo, debe seguir los pasos que se indican a continuación:
- Presione Comando + Espacio y escriba Terminal y presione enter/return llave
- Ejecutar en la aplicación Terminal
- $ git clon https://github.com/justinmeza/lci.git
- $ cd lci
- $ cmake.
- $ make && make install
Instalación en Windows
Si necesita instalar LOLCODE en el sistema operativo Windows, siga estos pasos:
Primero agregue MinGW y Python a su ruta de variables de entorno. Para hacer esto, haga clic derecho enMy Computer, escoger Properties, luego seleccione Advanced system settings. Seleccione Environment Variables. En este cuadro, seleccione elPATH variable y luego haga clic en Edit.
Ahora, agregue "; C: \ MinGW \ bin; C: \ Python32" al final de esa ruta.
A continuación, abra el Command Prompt y navegue al directorio del proyecto usando el comando "cd", por ejemplo.
Ejecute el script install.py.
Ejecución de script en línea con TutorialsPoint - codingground
Para ejecutar sus scripts de manera fácil y rápida, use la plataforma de codingground proporcionada por TutorialsPoint. Para ello, vaya al siguiente enlace para ejecutar sus scripts en línea:
LOLCODE tiene una sintaxis diferente en comparación con otros lenguajes de programación, sin embargo, es más fácil de recordar. Este capítulo le brinda la sintaxis básica de LOLCODE.
Construye
Las construcciones LOLCODE son palabras de jerga. La siguiente tabla muestra la lista alfabética de construcciones implementadas hasta ahora:
No Señor. | Construcción y uso |
---|---|
1 | BTW Comienza un comentario de una sola línea. |
2 | DOWN <variable>!!<times> Esto corresponde a variable = variable - tiempos. Tenga en cuenta que "times" es una extensión de idioma exclusiva para wut. |
3 | GIMMEH <variable> Esto representa la declaración de entrada. |
4 | GTFO Esto es similar a break en otros idiomas y proporciona una forma de salir de un bucle. |
5 | HAI Esto corresponde a main ()funcionan en otros idiomas. Es el punto de entrada del programa en LOLCODE. |
6 | HEREZ <label> Esta es otra extensión de idioma solo para wut y declara una etiqueta para usar con SHOO |
7 | I HAS A <type> <variable> Esto declara una variable de dicho tipo. Hay tres tipos integrados en LOLCODE:
Tenga en cuenta que los tipos son una extensión de idioma solo para wut. |
8 | IM IN YR LOOP Esto inicia un ciclo infinito. La única forma de salir del bucle es utilizando GTFO. Corresponde a para(;;) en otros idiomas |
9 | IZ <expr1> <operator> <expr2>?: Conditional structure Esto es similar al operador if en otros idiomas. El operador es uno de: MÁS GRANDE, MÁS PEQUEÑO QUE SAEM AS. Tenga en cuenta que el? al final es opcional. |
10 | KTHX Termina una cuadra. Corresponde a} |
11 | KTHXBAI Esto termina un programa |
12 | NOWAI Esto corresponde a otra cosa |
13 | PURR <expr> Esto imprime el argumento en la pantalla, seguido de una nueva línea. Es una extensión de idioma solo para wut. |
14 | RELSE Esto corresponde a else (if) |
15 | SHOO Esta es otra extensión de idioma solo wut, que corresponde a goto (¡el horror!) |
dieciséis | UP <variable>!!<times> Esto corresponde a variables = variable + tiempos. Aquí, "tiempos" es una extensión de idioma exclusiva para wut. |
17 | VISIBLE <expr> Esto imprime el argumento en la pantalla. Tenga en cuenta que esto no imprime una nueva línea. |
18 | YARLY Esto denota el comienzo del bloque condicional "verdadero" |
Algunos ejemplos de términos de jerga en LOLCODE son:
- HAI es hola
- KTHXBYE está bien, gracias, adiós
- Por cierto, es por cierto
- OBTW es oh, por cierto
- TLDR es demasiado largo; no leí
Espacio en blanco
En la mayoría de los lenguajes de programación, las palabras clave o los tokens pueden no tener espacios entre ellos. Sin embargo, en algunos idiomas, se utilizan espacios en los tokens para diferenciarlos.
Coma
La coma se comporta como una palabra clave de nueva línea en la mayoría de los idiomas, por ejemplo, \n en Java y C. Puede escribir muchos comandos en una sola línea en LOLCODE, siempre que los separe con una coma (,).
Tres períodos (…)
Los tres puntos (…) le permiten combinar varias líneas de código en una sola línea o en un solo comando al incluir (...) al final de la línea. Esto hace que el compilador trate el contenido de la línea siguiente como el contenido de la línea anterior únicamente. Se pueden escribir líneas infinitas de código juntas como un solo comando, siempre que cada línea termine con tres puntos.
Un comentario termina con una nueva línea. Tenga en cuenta que la línea de continuación (...) y (,) después del comentario (BTW) son ignoradas por lci.
Comentarios
Los comentarios de una sola línea se escriben seguidos de la palabra clave BTW. Pueden ocurrir en cualquier lugar dentro del cuerpo de un programa: puede estar en la primera línea del programa, entre el programa, entre alguna línea o al final de un programa.
Todos estos son comentarios válidos de una sola línea.
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
En LOLCODE, los comentarios de varias líneas se escriben seguidos de OBTW y terminan con TLDR.
Este es un comentario válido de varias líneas:
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
Creación de archivos
Un programa LOLCODE comienza con la palabra clave HAI y debe terminar con KTHXBYE. Como LOLCODE usa un lenguaje abreviado, HAI básicamente significa Hola y KTHXBYE se puede recordar como“Ok, thanks, bye ”.
Ejemplo
HAI 1.2
I HAS A NAME
VISIBLE "NAME::"!
GIMMEH NAME
VISIBLE "tutorialsPoint " NAME "!"
KTHXBYE
Como en cualquier otro lenguaje de programación, LOLCODE te permite definir variables de varios tipos. Este capítulo lo familiarizará con el trabajo con variables en LOLCODE.
Alcance de las variables
El alcance de una variable es local a la función o al bloque de programa, es decir, una variable definida en un alcance no se puede llamar en ningún otro alcance del mismo programa. Las variables son accesibles solo después de haber sido declaradas.
Tenga en cuenta que no hay un alcance global de variables en LOLCODE.
Convenciones de nombres
Los nombres de las variables generalmente se denominan identificadores. Estas son algunas de las convenciones para nombrar variables en LOLCODE:
Los identificadores de variables pueden estar en MAYÚSCULAS o en minúsculas (o una mezcla de las dos).
Solo pueden comenzar con una letra y luego pueden ir seguidas de otras letras, números y guiones bajos.
LOLCODE no permite el uso de espacios, guiones u otros símbolos al nombrar una variable.
Los identificadores de variables distinguen entre mayúsculas y minúsculas.
Estas son algunas de las reglas para nombres válidos e inválidos para variables en LOLCODE−
El nombre siempre debe comenzar con un alfabeto. Por ejemplo,name, Name son validos.
El nombre de una variable no puede comenzar con un dígito. Por ejemplo,2var es inválido.
El nombre de una variable no puede comenzar con un carácter especial.
Una variable puede contener _ o un dígito en cualquier lugar dentro de su nombre, excepto en el índice inicial. Por ejemplo,name2_m es un nombre válido.
A continuación se muestran algunos ejemplos de nombres válidos en LOLCODE:
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 las declaraciones de declaración en el código anterior son válidas y producirán la siguiente salida cuando se ejecuten:
sh-4.3$ lci main.lo
111.00033
111
1
A continuación se dan algunos ejemplos de declaraciones no válidas y su salida:
Ejemplo 1
HAI 1.2
I HAS A 2food ITZ "111.00033"
KTHXBYE
El código anterior dará el siguiente resultado cuando lo ejecute:
sh-
4.3$ lci main.lo
Line 2: Expected: identifier; Got: int(2).
Ejemplo 2
HAI 1.2
I HAS A _food ITZ "111.00033"
KTHXBYE
El código anterior dará el siguiente resultado cuando lo ejecute:
sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: _food ITZ "111.00033".
Ejemplo 3
HAI 1.2
I HAS A f$ood ITZ "111.00033"
KTHXBYE
El código anterior dará el siguiente resultado cuando lo ejecute:
sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: $ood ITZ "111.00033".
Declaración y asignación de variables
A declareuna variable, LOLCODE proporciona una palabra clave "TENGO A" que es seguida por el nombre de la variable. Puede encontrar a continuación la sintaxis para declarar una variable.
I HAS A VAR BTW VAR is empty now, You can use any name instead of var
A assignla variable un valor en la misma declaración, luego puede seguir el nombre de la variable con "ITZ" y luego dar el valor que desea asignar. Utilice la siguiente sintaxis para asignar un valor a una variable:
<variable> R <expression>
Ejemplo
VAR R "Green" BTW VAR is now a YARN and equals "Green"
VAR R 30 BTW VAR is now a NUMBR and equals 30
Tú también puedes declare y assign variables al mismo tiempo utilizando la siguiente sintaxis:
I HAS A VAR ITZ VALUE
Ejemplo
I HAS A NAME ITS “TUTORIALS POINT”
Ejemplo
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
El programa anterior muestra la declaración de variables y las imprime. La salida es -
sh-
4.3$ lci main.lo
1
OMG!
5
Tipo Casting
Para convertir un valor de un tipo en otro tipo, usamos conversión de tipos. Al convertir un NUMBAR en un NUMBR, se trunca la parte decimal del número de coma flotante. Al convertir un NUMBAR en un YARN (imprimiéndolo, por ejemplo), se trunca la salida a 2 decimales predeterminados.
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
La línea de código anterior producirá el siguiente resultado:
sh-4.3$ lci main.lo
111.00033
111.00033
Todas las variables declaradas en un programa LOLCODE son variables locales y no existe un alcance global en este lenguaje para ninguna variable.
LOLCODE está diseñado para probar los límites del diseño del lenguaje de programación. Es un lenguaje de programación esotérico inspirado en las cosas divertidas de Internet. Este capítulo le brinda una comprensión de los tipos de LOLCODE.
Tipos
Actualmente, los tipos de variables en LOLCODE son:
- cadenas (YARN)
- enteros (NUMBR)
- flotadores (NUMBAR)
- y booleanos (TROOF)
- Matrices (BUKKIT)
En LOLCODE, el compilador maneja dinámicamente el tipo de variable. Si una variable no tiene un valor inicial, se llama sin tipo (conocido como NOOB en LOLCODE).
La sintaxis para declarar y usar diferentes tipos en LOLCODE se muestra a continuación:
Para crear una variable de cualquier tipo de datos
I HAS A <VARIABLE> ITZ A <DATA TYPE>
Para crear una variable y asignarle un valor
I HAS A <VARIABLE> ITZ <EXPRESSION<
Para asignar un valor a un tipo de datos ya creado
<VARIABLE> R <EXPRESSION>
Sin tipo (NOOB)
El tipo de datos sin tipo (conocido como NOOB), no se puede convertir en ningún otro tipo excepto en un tipo de datos TROOF. La conversión implícita de un NOOB en TROOF hace que la variable FAIL. Después de eso, cualquier operación en un NOOB resulta en un error.
Las conversiones explícitas de un tipo de datos NOOB (es decir, los tipos que no están inicializados y no tienen ningún valor inicial) dan como resultado valores cero para todos los demás tipos.
Para definir una variable sin tipo, simplemente declare una variable y asigne un valor como se muestra en este ejemplo:
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
Cuando ejecute el programa anterior, encontrará el siguiente resultado:
sh-
4.3$ lci main.lo
ANYVALUE
44
Booleanos (TROOFS)
En LOLCODE, los valores booleanos son de dos tipos. BOOLEAN generalmente tiene dos valores: verdadero y falso. Pero, en LOLCODE, el booleano se conoce como TROOF, y los valores verdadero / falso se conocen como WIN / FAIL respectivamente. Todos los valores no inicializados, como una cadena vacía ("") o una matriz vacía, se convertirán en FAIL. Todos los demás valores inicializados se evalúan como WIN.
Ejemplo
HAI 1.2
I HAS A VAR3 ITZ A TROOF
VAR3 R "FAIL"
VISIBLE VAR3
KTHXBYE
Puede ver la siguiente salida cuando ejecuta el código anterior:
sh-4.3$ lci main.lo
FAIL
Tipos numéricos (NUMBR)
En LOLCODE, un NUMBR significa un número entero. Cualquier secuencia de dígitos se considera un NUMBR, a menos que tenga un decimal en cualquier lugar entre la secuencia. Para hacer que cualquier número sea negativo, puede ir precedido de un guión (-) que significa un número negativo.
Ejemplo
HAI 1.2
I HAS A VAR3 ITZ A NUMBR
VISIBLE VAR3
KTHXBYE
El código anterior le muestra el siguiente resultado cuando lo ejecuta:
sh-
4.3$ lci main.lo
0
Similar a NUMBR, LOLCODE tiene otro tipo de datos, que representa un decimal o un flotante en muchos lenguajes de programación. En LOLCODE, un NUMBAR es un flotante que contiene un punto decimal. Al convertir un NUMBAR en un NUMBR, se trunca la parte decimal del número de coma flotante y se devuelve como NUMBR, sin ningún decimal.
Cuerdas (HILO)
En LOLCODE, el valor que contiene cadenas, es decir, los literales de cadena (YARN) deben comenzar y terminar con comillas dobles ("”).
Se puede escribir cualquier cosa dentro de la cadena, como espacio, coma, punto, exclamación o cualquier otro símbolo. Una cadena en la que falte una comilla simple puede provocar un error. Los dos puntos se utilizan como caracteres de escape en LOLCODE, y cualquier valor que siga a dos puntos tiene un significado especial.
:) - Un corchete de cierre seguido de dos puntos representa una nueva línea (\ n)
:> - Un corchete de ángulo de cierre seguido de dos puntos representa una tabulación (\ t)
:o - A ‘o’ el carácter que sigue a dos puntos representa una campana (bip) (\ g)
:" - Un "seguido de dos puntos representa una comilla doble literal (")
:: - Los dos puntos después de dos puntos representan un solo punto literal (:)
Ejemplo
HAI 1.2
I HAS A VAR3 ITZ A YARN
VAR3 R "XYZ"
VISIBLE VAR3
KTHXBYE
El código dado arriba produce el siguiente resultado en la ejecución:
sh-
4.3$ lci main.lo
XYZ
BUKKIT
Este tipo representa una matriz. Tiene ranuras con nombre, que pueden contener variables o funciones. Un BUKKIT se puede declarar de la siguiente manera:
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
Una función dentro de un BUKKIT también puede acceder a variables y otras funciones del BUKKIT usando ME'Z [var] o ME IZ [nombre de función] (YR [argumento1] (AN YR [argumento2] (AN YR [argumento3] ... ))) MKAY.
Ejemplo
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 es la salida que encontrará cuando ejecute el código dado anteriormente:
sh-
4.3$ lci main.lo
DOGE
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
Este capítulo le explicará cómo ingresar un valor a través del terminal LOLCODE y cómo enviarlo al terminal.
E / S desde terminal
Puede utilizar la palabra clave VISIBLE para imprimir algo en LOLCODE. VISIBLE es una función que puede tomar un número infinito de caracteres como entrada y los imprime todos a la vez concateándolos internamente y convirtiéndolos en cadenas o YARN.
La función VISIBLE termina o termina con un delimitador, que es un final de línea o una coma.
El compilador finaliza automáticamente la salida con un retorno de carro. Si el token final termina con un símbolo de exclamación (!), Entonces el carro devuelto es anulado por este símbolo.
VISIBLE <any_expression> [<any_expression> ...][!]
Tenga en cuenta que en LOLCODE, actualmente no existe un estándar definido para imprimir algunos datos en un archivo.
Para tomar alguna entrada del usuario, la palabra clave utilizada es GIMMEH. Es una función que puede tomar cualquier número de variables como entrada. Toma YARN como entrada y almacena el valor en cualquier variable dada.
GIMMEH <any_variable>
Ejemplo
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
Cuando se ejecuta este código, le pedirá que ingrese un número y luego imprimirá el número en la siguiente línea automáticamente. Cuando ejecute este código, imprimirá la siguiente salida:
sh-
4.3$ lci main.lo
TYPE SOMETHING AND ENTER
67
67
LOLCODE le permite controlar el flujo del programa a través de varias declaraciones. Este capítulo explica los diferentes tipos de declaraciones disponibles en LOLCODE.
Declaraciones de expresión
Una expresión sin ninguna asignación, es decir, simplemente llamar a una operación matemática o cualquier función, es una declaración legal en LOLCODE. Una vez evaluada la expresión, su valor final se coloca en la variable temporal IT. El valor de TI permanece en el ámbito local y existe hasta la próxima vez que se reemplace con una expresión.
Declaraciones de asignación
Las declaraciones de asignación se utilizan para asignar la salida de cualquier expresión a una variable determinada. Generalmente tienen la forma:
<any_variable> <assignment operator> <any expression>
Tenga en cuenta que puede utilizar una variable en la expresión, incluso antes de que se asigne.
Declaraciones condicionales
Declaraciones Si-Entonces
La declaración if-then es una operación muy simple que trabaja en la variable de TI. Es similar a las sentencias if-else en otros lenguajes de programación como C y Java.
Hay cuatro palabras clave para aplicar las declaraciones si-entonces.
- O RLY?
- YA RLY
- NO WAI
- OIC
La forma general es -
<any_expression>
O RLY?
YA RLY
<code to execute if above condition is true>
NO WAI
<code to execute in this block>
OIC
Todas las declaraciones anteriores se pueden escribir en la misma línea separadas por comas como -
BOTH SAEM NAMES AN "Name", O RLY?
YA RLY, VISIBLE "My name is ABCD"
NO WAI, VISIBLE "Your name is ABCD"
OIC
Al usar las declaraciones if-then, se puede usar un MEBBE <cualquier expresión> opcional entre los bloques YA RLY y NO WAI.
Si la <cualquier expresión> que sigue a MEBBE es verdadera (WIN), ese bloque se ejecuta. De lo contrario, si esa expresión es falsa, el bloque se salta hasta las siguientes declaraciones MEBBE, NO WAI u OIC.
Ejemplo
<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
Ejemplo
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
Declaraciones de casos
En LOLCODE, la palabra clave 'WTF?' es similar a cambiar en muchos otros idiomas. ¿La palabra clave WTF? toma IT como valor de expresión para la comparación. Para usar WTF, OMG abre un bloque de comparación que debe ser un literal y no una expresión.
Recuerde que cada literal debe ser único, similar al caso en otros idiomas.
El bloque OMG debe terminar con una declaración GTFO. Si un bloque OMG no es terminado por un GTFO, entonces se ejecuta el siguiente bloque OMG hasta que se alcanza GTFO.
Si ninguno de los literales se evalúa como verdadero, entonces OMGWTF indica el caso predeterminado.
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
Los resultados de salida del código anterior serán:
"MI":
EFGH
Los bucles se utilizan en lenguajes de programación para ejecutar un conjunto de declaraciones varias veces. Por ejemplo, si desea imprimir el dígito 5 cinco veces, en lugar de escribir elVISIBLE “5” declaración cinco veces, puede ejecutar un bucle con un solo VISIBLE “5” declaración cinco veces.
Los bucles simples se representan con IM IN YR <label> e IM OUTTA YR <label>. Los bucles definidos de esta manera son bucles infinitos y deben terminar con una declaración de interrupción GTFO.
Los bucles de iteración tienen la siguiente estructura:
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>
Tenga en cuenta que dentro del cuerpo de la función, UPPIN (incremento en uno), NERFIN (decremento en uno) o cualquier función unaria se puede utilizar.
La palabra clave TIL calcula la expresión como TROOF: si se evalúa como FAIL, el ciclo continúa una vez más, si se evalúa como WIN, entonces la ejecución del ciclo se detiene y continúa después de la declaración IM OUTTA YR coincidente.
La palabra clave WILE es lo opuesto a la palabra clave TIL, si la expresión es WIN, la ejecución continúa; de lo contrario, el ciclo sale.
Ejemplo
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
Cuando el código anterior se compila en cualquier compilador LOLCODE, o en nuestro campo de codificación en línea, esto producirá la siguiente salida.
sh-
4.3$ lci main.lo
1
2
3
4
5
6
7
8
9
10
Las funciones son útiles en la programación porque reducen el tiempo y el esfuerzo de escribir el código una y otra vez. Un código de función bien escrito ofrece una alta capacidad de reutilización. Este capítulo explica cómo escribir y trabajar con funciones en LOLCODE.
Definición de una función
Una función es un conjunto de declaraciones que se ejecutan todas a la vez llamando a esa función. En LOLCODE, la definición de una función comienza con la palabra clave "CÓMO IZ I" y la palabra clave de cierre es "SI LO DIGAS".
La sintaxis para escribir una función en LOLCODE es
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
Puntos importantes
Tenga en cuenta los siguientes puntos importantes cuando defina una función LOLCODE:
En LOLCODE, la función solo puede aceptar un cierto número fijo de argumentos como entrada.
Los argumentos o parámetros, son los identificadores que se convierten en una variable para la función.
Las funciones en LOLCODE no pueden acceder a ningún otro valor que no sean los valores que se les pasan como argumentos.
Devolución de valor de una función
Devolver en codificación significa algo que se devuelve. En programación, una función puede devolver algún valor al programa cuando se completa su ejecución. En LOLCODE, las funciones devuelven valores variables como se explica a continuación:
FOUND YR <any_expression> devuelve el valor de la expresión cuando el bloque de funciones se ejecuta por completo.
GTFO no devuelve ningún valor (NOOB), que es similar a return 0 en otros lenguajes de programación como C y Java.
Si no se encuentra ninguna otra declaración de devolución, entonces IF U SAY SO se ejecuta y se devuelve el valor de la variable de TI.
Funciones de llamada
Una función se define en el cuerpo del programa y luego se llama para su ejecución. Una función que acepta un número determinado de argumentos se llama como se muestra a continuación:
I IZ <function_name> [YR <expression_One> [AN YR <expression_Two>
[AN YR <expression_Three> ...]]] MKAY
Al llamar a una función, la expresión está formada por el nombre de la función, seguido del número de argumentos que aceptará la función. Estos argumentos pueden ser variables simples o cualquier expresión. Si una función acepta cualquier expresión en lugar de un valor simple, los valores de las expresiones se calculan antes de llamar a la función.
Recuerde que el número de argumentos que aceptará una función debe definirse en la definición de la función.
Ejemplo
HAI
HOW DUZ I MAINUMBA
I HAS A NUMBA
GIMMEH NUMBA
FOUND YR NUMBA
IF U SAY SO
VISIBLE MAINUMBA
KTHXBYE
Cuando ejecute el código anterior, le pedirá una entrada y, luego, cuando envíe la entrada, verá el mismo resultado. Por ejemplo, si ingresamos 55, imprimirá 55.
Ejemplo
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
La función anterior que realiza la multiplicación de operandos de entrada imprimirá la siguiente salida cuando la ejecute:
sh-
4.3$ lci main.lo
6
Ejemplo
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
La salida que producirá el código anterior es:
sh-
4.3$ lci main.lo
OBJECT1
El manejo de excepciones es uno de los mecanismos poderosos para manejar los errores de tiempo de ejecución para que se pueda mantener el flujo normal de la aplicación. LOLCODE no tiene mucho soporte para el manejo de excepciones como otros lenguajes de programación. Similar al bloque Try-Catch en otros idiomas, LOLCODE tiene el bloque PLZ.
Por ejemplo, si desea abrir un archivo que puede o no existir, use -
PLZ OPEN FILE "filename.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHX
El código que puede causar una excepción se escribe en el bloque PLZ y la excepción se maneja en el bloque O NOES. Aquí, la palabra clave INVISIBLE envía un mensaje interno al depurador.
Tenga en cuenta que como LOLCODE no se mantiene con regularidad, no hay más actualizaciones disponibles para el manejo de excepciones de LOLCODE y muchas otras características.
Los capítulos anteriores te explicaron la programación en LOLCODE. En este capítulo, aprenderá algunos ejemplos que le permiten codificar a un nivel avanzado en LOLCODE.
Ejemplo 1: Programa para calcular la potencia de un número
En este ejemplo, encontrará el código para calcular la potencia de un número de entrada. Por ejemplo, 2 elevado a 4 es 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
El código anterior imprimirá la siguiente salida una vez que se ejecute correctamente:
sh-
4.3$ lci main.lo
16
Ejemplo 2: programa para hacer una matriz
Este ejemplo muestra el código para hacer una matriz con cinco elementos y cada elemento con 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
Puede ver la siguiente salida cuando ejecuta el código anterior:
sh-4.3$ lci main.lo
10
10
10
10
10
Ejemplo 3: Programa para calcular el factorial de un número
Este programa muestra el código para calcular el factorial de un 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
El programa anterior imprime el factorial del número 6 y puede ver la salida como se muestra a continuación:
sh-
4.3$ lci main.lo
720
Ejemplo 4: Programa para diseñar una calculadora
Puede diseñar una calculadora para realizar operaciones matemáticas básicas utilizando la programación LOLCODE. Observe el código que se proporciona a continuación:
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
Cuando ejecutamos el programa anterior con la siguiente entrada:
3
4
+
Tras la ejecución, el programa anterior generará la siguiente salida:
VALUE1
VALUE2
Choose Operation? + - * /
7