Lolcode - Guida rapida

LOLCODE è un linguaggio di programmazione esoterico ispirato alle cose divertenti su Internet. È progettato per testare i confini della progettazione del linguaggio di programmazione.

Questo capitolo ti renderà familiare la configurazione dell'ambiente locale per LOLCODE, l'installazione su Windows e l'esecuzione del suo script in linea su Tutorialspoint-codingground.

Configurazione dell'ambiente locale

L'interprete LOLCODE è scritto in linguaggio C. Interpreta il codice scritto in linguaggio LOLCODE su più piattaforme. L'interprete LOLCODE è noto come lci, che sta per LOLCODE Interpreter.

Si prega di notare che LOLCODE supporta ufficialmente l'installazione diretta dell'interprete solo per i sistemi operativi MAC. Per installare LOLCODE nel tuo sistema operativo, devi seguire i passaggi indicati di seguito:

  • Premi Comando + Spazio e digita Terminal e premete enter/return chiave
  • Esegui nell'app Terminal
  • $ git clone https://github.com/justinmeza/lci.git
  • $ cd lci
  • $ cmake.
  • $ make && make install

Installazione su Windows

Se è necessario installare LOLCODE sul sistema operativo Windows, eseguire questi passaggi:

  • Per prima cosa aggiungi MinGW e Python al percorso delle variabili di ambiente. Per fare ciò, fare clic con il tasto destro suMy Computer, scegliere Properties, quindi seleziona Advanced system settings. Selezionare Environment Variables. In questa casella, seleziona il filePATH variabile e quindi fare clic su Edit.

  • Ora aggiungi "; C: \ MinGW \ bin; C: \ Python32" alla fine di quel percorso.

  • Quindi, apri il file Command Prompt e passare alla directory del progetto utilizzando il comando "cd", ad esempio.

  • Esegui lo script install.py.

Esecuzione di script in linea con TutorialsPoint - codingground

Per eseguire i tuoi script in modo facile e veloce, usa la piattaforma codingground fornita da TutorialsPoint. Per questo, vai al seguente link per eseguire i tuoi script online -

https://www.tutorialspoint.com/execute_lolcode_online.php

LOLCODE ha una sintassi diversa rispetto ad altri linguaggi di programmazione, tuttavia è più facile da ricordare. Questo capitolo fornisce la sintassi di base di LOLCODE.

Costruisce

I costrutti LOLCODE sono parole gergali. La tabella seguente mostra l'elenco alfabetico dei costrutti implementati finora:

Sr.No. Costruzione e utilizzo
1

BTW

Inizia un commento a riga singola.

2

DOWN <variable>!!<times>

Ciò corrisponde a variabile = variabile - volte. Nota che "times" è un'estensione del linguaggio solo wut.

3

GIMMEH <variable>

Questo rappresenta la dichiarazione di input.

4

GTFO

Questo è simile a break in altre lingue e fornisce un modo per uscire da un ciclo.

5

HAI

Ciò corrisponde a main ()funzione in altre lingue. È il punto di ingresso del programma in LOLCODE.

6

HEREZ <label>

Questa è un'altra estensione del linguaggio solo wut e dichiara un'etichetta da utilizzare con SHOO

7

I HAS A <type> <variable>

Questo dichiara una variabile di detto tipo.

Ci sono tre tipi integrati in LOLCODE -

  • NUMBAH (int)
  • DECINUMBAH (doppio)
  • WORDZ (std :: stringa)

Nota che i tipi sono un'estensione del linguaggio solo wut.

8

IM IN YR LOOP

Questo avvia un ciclo infinito. L'unico modo per uscire dal ciclo è usare GTFO. Corrisponde a per(;;) in altre lingue

9

IZ <expr1> <operator> <expr2>?: Conditional structure

È simile all'operatore if in altre lingue. L'operatore è uno di: PIÙ GRANDE DI, PIÙ PICCOLO DI, SAEM AS. Nota che il? alla fine è opzionale.

10

KTHX

Finisce un blocco. Corrisponde a}

11

KTHXBAI

Questo termina un programma

12

NOWAI

Ciò corrisponde ad altro

13

PURR <expr>

Questo stampa l'argomento sullo schermo, seguito da una nuova riga. È un'estensione del linguaggio solo wut.

14

RELSE

Ciò corrisponde a else (if)

15

SHOO

Questa è un'altra estensione del linguaggio solo wut, che corrisponde a goto (l'orrore!)

16

UP <variable>!!<times>

Ciò corrisponde a variabili = variabile + tempi. Qui "times" è un'estensione del linguaggio solo wut.

17

VISIBLE <expr>

Questo stampa l'argomento sullo schermo. Notare che questo non stampa una nuova riga.

18

YARLY

Questo denota l'inizio del blocco condizionale "vero"

Alcuni esempi di termini gergali in LOLCODE sono:

  • HAI è ciao
  • KTHXBYE va bene, grazie, ciao
  • BTW è comunque
  • OBTW è oh, a proposito
  • TLDR è troppo lungo; non ha letto

Spazio bianco

Nella maggior parte dei linguaggi di programmazione, le parole chiave o i token potrebbero non avere spazi tra di loro. Tuttavia, in alcune lingue, gli spazi vengono utilizzati nei token per differenziarli.

Virgola

La virgola si comporta come una parola chiave di nuova riga nella maggior parte delle lingue, ad esempio, \n in Java e C. È possibile scrivere molti comandi in una singola riga in LOLCODE, a condizione di separarli utilizzando una virgola (,).

Tre periodi (...)

I tre punti (...) consentono di combinare più righe di codice in una singola riga o un singolo comando includendo (...) alla fine della riga. Questo fa sì che il compilatore consideri il contenuto della riga successiva solo come contenuto della riga precedente. Infinite righe di codice possono essere scritte insieme come un singolo comando, purché ogni riga termini con tre punti.

Un commento viene terminato da una nuova riga. Si noti che la continuazione della riga (...) e (,) dopo il commento (BTW) vengono ignorate da lci.

Commenti

I commenti su una sola riga vengono scritti seguiti dalla parola chiave BTW. Possono verificarsi ovunque all'interno del corpo di un programma: può essere nella prima riga del programma, tra il programma, tra qualche riga o alla fine di un programma.

Tutti questi sono commenti validi su una sola riga

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

In LOLCODE, i commenti su più righe vengono scritti seguiti da OBTW e terminano con TLDR.

Questo è un commento valido su più righe -

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

Creazione di file

Un programma LOLCODE inizia con la parola chiave HAI e dovrebbe terminare con KTHXBYE. Poiché LOLCODE utilizza il linguaggio abbreviato, HAI sta sostanzialmente per Ciao e KTHXBYE può essere ricordato come“Ok, thanks, bye ”.

Esempio

HAI 1.2
I HAS A NAME
VISIBLE "NAME::"!
GIMMEH NAME
VISIBLE "tutorialsPoint " NAME "!"
KTHXBYE

Come in qualsiasi altro linguaggio di programmazione, LOLCODE consente di definire variabili di vario tipo. Questo capitolo ti renderà familiare come lavorare con le variabili in LOLCODE.

Ambito delle variabili

L'ambito di una variabile è locale rispetto alla funzione o al blocco di programma, ovvero una variabile definita in un ambito non può essere richiamata in nessun altro ambito dello stesso programma. Le variabili sono accessibili solo dopo essere state dichiarate.

Tieni presente che non esiste un ambito globale delle variabili in LOLCODE.

Convenzioni di denominazione

I nomi delle variabili sono generalmente chiamati identificatori. Ecco alcune delle convenzioni per denominare le variabili in LOLCODE -

  • Gli identificatori di variabile possono essere in lettere maiuscole o minuscole (o una combinazione dei due).

  • Possono iniziare solo con una lettera e quindi possono essere seguite da altre lettere, numeri e trattini bassi.

  • LOLCODE non consente l'uso di spazi, trattini o altri simboli durante la denominazione di una variabile.

  • Gli identificatori di variabile fanno distinzione tra maiuscole e minuscole.

Ecco alcune delle regole per i nomi validi e non validi per le variabili in LOLCODE-

  • Il nome dovrebbe sempre iniziare con un alfabeto. Per esempio,name, Name sono validi.

  • Il nome di una variabile non può iniziare con una cifra. Per esempio,2var è invalido.

  • Il nome di una variabile non può iniziare con un carattere speciale.

  • Una variabile può contenere _ o una cifra ovunque all'interno del suo nome, tranne che nell'indice iniziale. Per esempio,name2_m è un nome valido.

Di seguito sono riportati alcuni esempi di nomi validi in 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

Tutte le dichiarazioni di dichiarazione nel codice precedente sono valide e produrranno il seguente output quando eseguite:

sh-4.3$ lci main.lo
111.00033
111
1

Di seguito vengono forniti alcuni esempi di istruzioni non valide e il loro output:

Esempio 1

HAI 1.2
I HAS A 2food ITZ "111.00033"
KTHXBYE

Il codice sopra darà il seguente output quando lo esegui:

sh-
4.3$ lci main.lo
Line 2: Expected: identifier; Got: int(2).

Esempio 2

HAI 1.2
I HAS A _food ITZ "111.00033"
KTHXBYE

Il codice sopra darà il seguente output quando lo esegui:

sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: _food ITZ "111.00033".

Esempio 3

HAI 1.2
I HAS A f$ood ITZ "111.00033"
KTHXBYE

Il codice sopra darà il seguente output quando lo esegui:

sh-
4.3$ lci main.lo
Line 2: Unrecognized sequence at: $ood ITZ "111.00033".

Dichiarazione e assegnazione di variabili

Per declareuna variabile, LOLCODE fornisce una parola chiave "I HAS A" seguita dal nome della variabile. Di seguito è possibile trovare la sintassi per la dichiarazione di una variabile.

I HAS A VAR BTW VAR is empty now, You can use any name instead of var

Per assignla variabile un valore nella stessa istruzione, è quindi possibile seguire il nome della variabile con "ITZ" e quindi dare il valore che si desidera assegnare. Utilizzare la seguente sintassi per assegnare un valore a una variabile:

<variable> R <expression>

Esempio

VAR R "Green"         BTW VAR is now a YARN and equals "Green"
VAR R 30              BTW VAR is now a NUMBR and equals 30

Puoi anche declare e assign variabili contemporaneamente utilizzando la seguente sintassi:

I HAS A VAR ITZ VALUE

Esempio

I HAS A NAME ITS “TUTORIALS POINT”

Esempio

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

Il programma sopra mostra la dichiarazione delle variabili e le stampa. L'output è -

sh-
4.3$ lci main.lo
1
OMG!
5

Tipo Casting

Per convertire un valore di un tipo in un altro tipo, usiamo il casting del tipo. Il cast di un NUMBAR su un NUMBR tronca la parte decimale del numero in virgola mobile. Trasmettere un NUMBAR a un YARN (stampandolo, ad esempio), tronca l'output a 2 posizioni decimali predefinite.

Esempio

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 riga di codice precedente produrrà il seguente output:

sh-4.3$ lci main.lo
111.00033
111.00033

Tutte le variabili dichiarate in un programma LOLCODE sono variabili locali e non esiste uno scope globale in questa lingua per nessuna variabile.

LOLCODE è progettato per testare i confini del design del linguaggio di programmazione. È un linguaggio di programmazione esoterico ispirato alle cose divertenti su Internet. Questo capitolo fornisce una comprensione dei tipi di LOLCODE.

Tipi

Attualmente, i tipi di variabili in LOLCODE sono:

  • stringhe (YARN)
  • numeri interi (NUMBR)
  • floats (NUMBAR)
  • e booleani (TROOF)
  • Array (BUKKIT)

In LOLCODE il tipo di variabile viene gestito dinamicamente dal compilatore. Se una variabile non ha un valore iniziale, viene chiamata untyped (noto come NOOB in LOLCODE).

La sintassi per la dichiarazione e l'utilizzo di diversi tipi in LOLCODE è mostrata di seguito:

Per creare una variabile di qualsiasi tipo di dati

I HAS A <VARIABLE> ITZ A <DATA TYPE>

Per creare una variabile e assegnarle un valore

I HAS A <VARIABLE> ITZ <EXPRESSION<

Per assegnare un valore a un tipo di dati già creato

<VARIABLE> R <EXPRESSION>

Non tipizzato (NOOB)

Il tipo di dati non tipizzato (noto come NOOB) non può essere convertito in nessun altro tipo tranne che in un tipo di dati TROOF. Il casting implicito di un NOOB in TROOF rende la variabile FAIL. Dopo di che qualsiasi operazione su un NOOB si traduce in un errore.

I cast espliciti di un tipo di dati NOOB (cioè i tipi che non sono inizializzati e non hanno alcun valore iniziale) restituiscono valori zero per tutti gli altri tipi.

Per definire una variabile non tipizzata, basta dichiarare una variabile e assegnare un valore come mostrato in questo esempio:

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

Quando esegui il programma sopra, troverai il seguente risultato:

sh-
4.3$ lci main.lo 
ANYVALUE
44

Booleani (TROOFS)

In LOLCODE, i valori booleani sono di due tipi. BOOLEANO generalmente ha due valori: vero e falso. Tuttavia, in LOLCODE, il valore booleano è noto come TROOF e i valori true / false sono noti rispettivamente come WIN / FAIL. Tutti i valori non inizializzati come una stringa vuota ("") o un array vuoto verranno tutti convertiti in FAIL. Tutti gli altri valori inizializzati restituiscono WIN.

Esempio

HAI 1.2
I HAS A VAR3 ITZ A TROOF
VAR3 R "FAIL"
   VISIBLE VAR3
KTHXBYE

Puoi vedere il seguente output quando esegui il codice sopra -

sh-4.3$ lci main.lo
FAIL

Tipi numerici (NUMBR)

In LOLCODE, un NUMBR sta per un numero intero. Qualsiasi sequenza di cifre è considerata un NUMBR, a meno che non abbia un decimale che appare ovunque tra la sequenza. Per rendere un numero negativo, può essere preceduto da un trattino (-) che indica un numero negativo.

Esempio

HAI 1.2
I HAS A VAR3 ITZ A NUMBR
   VISIBLE VAR3
KTHXBYE

Il codice sopra mostra il seguente risultato quando lo esegui -

sh- 
4.3$ lci main.lo
0

Simile a NUMBR, LOLCODE ha un altro tipo di dati, che rappresenta un decimale o un float in molti linguaggi di programmazione. In LOLCODE, un NUMBAR è un float contenente un punto decimale. Il cast di un NUMBAR su un NUMBR tronca la parte decimale del numero in virgola mobile e lo restituisce come NUMBR, senza alcun decimale.

Stringhe (YARN)

In LOLCODE, il valore contenente stringhe, cioè i valori letterali di stringa (YARN) devono iniziare e finire con virgolette doppie ("”).

Qualsiasi cosa può essere scritta all'interno della stringa, come spazio, virgola, punto, punto esclamativo o qualsiasi altro simbolo. Una stringa in cui manca una virgoletta singola può causare un errore. I due punti vengono utilizzati come caratteri di escape in LOLCODE e qualsiasi valore che segue i due punti assume un significato speciale.

  • :) - Una parentesi quadra di chiusura che segue i due punti rappresenta una nuova riga (\ n)

  • :> - Una parentesi angolare di chiusura che segue i due punti rappresenta una tabulazione (\ t)

  • :o - A ‘o’ il carattere che segue i due punti rappresenta un campanello (beep) (\ g)

  • :" - Un "che segue i due punti rappresenta una virgoletta doppia letterale (")

  • :: - I due punti che seguono i due punti rappresentano un singolo due punti letterali (:)

Esempio

HAI 1.2
I HAS A VAR3 ITZ A YARN
VAR3 R "XYZ"
   VISIBLE VAR3
KTHXBYE

Il codice sopra riportato produce il seguente output al momento dell'esecuzione:

sh-
4.3$ lci main.lo 
XYZ

BUKKIT

Questo tipo rappresenta un array. Ha slot denominati, che possono contenere variabili o funzioni. Un BUKKIT può essere dichiarato nel modo seguente:

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 funzione all'interno di un BUKKIT può anche accedere alle variabili e ad altre funzioni del BUKKIT utilizzando ME'Z [var] o ME IZ [nome funzione] (YR [argomento1] (AN YR [argomento2] (AN YR [argomento3] ... ))) MKAY.

Esempio

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

Questo è l'output che troverai quando esegui il codice sopra indicato -

sh-
4.3$ lci main.lo 
DOGE

Gli operatori svolgono un ruolo importante per eseguire varie operazioni sulle variabili. Questo capitolo presenta vari operatori in LOLCODE e il loro utilizzo.

Operatori

Gli operatori matematici dipendono da una notazione di prefisso, cioè dalla notazione che precede l'operando. Quando tutti gli operatori hanno un numero noto di argomenti o operandi, non sono necessari indicatori di raggruppamento. Nei casi in cui gli operatori non hanno argomenti o operandi fissi, l'operazione viene chiusa con MKAY.

Un MKAY non può essere utilizzato se coincide con la fine dell'istruzione. In questi casi, è necessario utilizzare la parola chiave EOL. Per utilizzare operatori matematici unari, utilizzare la seguente sintassi:

<operator> <expression>

La parola chiave AN può essere facoltativamente utilizzata per separare gli argomenti e applicare una singola operazione su più di un operando, quindi un'espressione di operatore binario ha la seguente sintassi:

<operator> <expression1> AN <expression2>

Qualsiasi espressione contenente un operatore con un numero infinito di argomenti può essere espressa con la seguente sintassi:

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

Matematica

Di seguito sono riportate le operazioni matematiche di base in 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> possono essere espressioni univoche di cui sopra, quindi gli operatori matematici possono essere nidificati e raggruppati indefinitamente.

La matematica viene eseguita considerando gli argomenti come matematica intera in presenza di due NUMBR, ma se una delle espressioni è NUMBAR, le operazioni sono considerate operazioni in virgola mobile.

Esempio

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

Il codice sopra produrrà il seguente output quando lo esegui:

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

Punti importanti -

Considera i seguenti punti importanti relativi al lavoro con operatori matematici in LOLCODE−

  • Se uno o entrambi gli argomenti in un'espressione sono YARN, vengono trattati come NUMBAR.

  • Se uno qualsiasi degli argomenti non può essere convertito in modo sicuro internamente a un tipo numerico, non riesce con un errore

Booleano

Gli operatori booleani vengono applicati a quei valori che possono essere veri o falsi. Gli operatori booleani che lavorano sui TROOF sono i seguenti:

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.

Si noti che <m> e <n> nella sintassi dell'espressione sopra vengono espressi automaticamente come valori TROOF se non sono già valori TROOF.

Confronto

Quando si desidera confrontare due o più operandi in LOLCODE, è possibile farlo in uno dei seguenti metodi:

Metodo 1

È possibile confrontare due operandi binari utilizzando operatori di uguaglianza. La sintassi è mostrata di seguito:

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

Metodo 2

Puoi confrontare se entrambi i valori sono di tipo NUMBR. Ricorda che se uno dei valori è NUMBAR, vengono confrontati come valori in virgola mobile.

Metodo 3

È inoltre possibile eseguire il confronto utilizzando gli operatori minimo e massimo. La sintassi è mostrata di seguito:

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

Puoi vedere il seguente output quando esegui il codice dato:

sh-
4.3$ lci main.lo

TRUE

Concatenazione dei valori

LOLCODE ti consente di concatenare esplicitamente un numero infinito di YARN utilizzando l'operatore SMOOSH… MKAY. Per la concatenazione, più argomenti possono essere separati con ilAN operatore.

Esempio

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

Il codice sopra dato produrrà il seguente risultato all'esecuzione:

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

Tipo Casting

Gli operatori che lavorano su tipi specifici eseguono il cast o convertono in modo implicito i valori di un tipo in un altro tipo in modo sicuro. Se il valore non può essere convertito in modo sicuro in un altro tipo, viene restituito un errore.

Il valore di un'espressione può essere convertito in modo esplicito o convertito in un altro tipo con l'operatore binario MAEK. La sintassi dell'operatore MAEK è:

MAEK <expression> A <type>

dove, <type> può essere uno tra TROOF, YARN, NUMBR, NUMBAR o NOOB.

Per eseguire il cast esplicito di una variabile su un altro tipo, è possibile utilizzare una normale istruzione di assegnazione con l'operatore MAEK o un'istruzione di assegnazione casting come segue:

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

Esempio

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

Il codice precedente produrrà il seguente output:

sh-4.3$ lci main.lo
111.00033
111.00033

Questo capitolo spiegherà come inserire un valore tramite il terminale LOLCODE e come inviarlo al terminale.

I / O dal terminale

È possibile utilizzare la parola chiave VISIBILE per stampare qualcosa in LOLCODE. VISIBILE è una funzione che può prendere un numero infinito di caratteri come input e li stampa tutti in una volta concatenandoli internamente e convertendoli in stringhe o YARN.

La funzione VISIBILE termina o termina con un delimitatore, che può essere un'estremità di riga o una virgola.

L'output viene terminato automaticamente dal compilatore con un ritorno a capo. Se il token finale termina con un simbolo esclamativo (!), Il carrello restituito viene sostituito da questo simbolo.

VISIBLE <any_expression> [<any_expression> ...][!]

Si noti che in LOLCODE, attualmente non esiste uno standard definito per la stampa di alcuni dati in un file.

Per ricevere un input dall'utente, la parola chiave utilizzata è GIMMEH. È una funzione che può accettare un numero qualsiasi di variabili come input. Prende YARN come input e memorizza il valore in una determinata variabile.

GIMMEH <any_variable>

Esempio

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 questo codice viene eseguito, ti chiederà di inserire un numero e quindi stampa automaticamente il numero nella riga successiva. Quando esegui questo codice, stamperà il seguente output:

sh-
4.3$ lci main.lo

TYPE SOMETHING AND ENTER
67

67

LOLCODE ti permette di controllare il flusso del programma attraverso varie istruzioni. Questo capitolo spiega i diversi tipi di istruzioni disponibili in LOLCODE.

Dichiarazioni di espressione

Un'espressione senza assegnazione, cioè semplicemente chiamando un'operazione matematica o qualsiasi funzione, è una dichiarazione legale in LOLCODE. Una volta valutata l'espressione, il suo valore finale viene inserito nella variabile temporanea IT. Il valore di IT rimane nell'ambito locale ed esiste fino alla successiva sostituzione con un'espressione.

Dichiarazioni di assegnazione

Le istruzioni di assegnazione vengono utilizzate per assegnare l'output di qualsiasi espressione a una determinata variabile. Sono generalmente della forma -

<any_variable> <assignment operator> <any expression>

Si noti che è possibile utilizzare una variabile nell'espressione, anche prima che venga assegnata.

Dichiarazioni condizionali

Dichiarazioni Se-Allora

L'istruzione if-then è un'operazione molto semplice che lavora sulla variabile IT. È simile alle istruzioni if ​​– else in altri linguaggi di programmazione come C e Java.

Ci sono quattro parole chiave per applicare le istruzioni if ​​– then.

  • O RLY?
  • YA RLY
  • NO WAI
  • OIC

La forma generale è:

<any_expression>
O RLY?
   YA RLY
      <code to execute if above condition is true>
   NO WAI
      <code to execute in this block>
OIC

Tutte le istruzioni precedenti possono essere scritte nella stessa riga separate da virgole come -

BOTH SAEM NAMES AN "Name", O RLY?
   YA RLY, VISIBLE "My name is ABCD"
   NO WAI, VISIBLE "Your name is ABCD"
 OIC

Durante l'utilizzo delle istruzioni if-then, è possibile utilizzare un MEBBE <qualsiasi espressione> opzionale tra i blocchi YA RLY e NO WAI.

Se <qualsiasi espressione> che segue MEBBE è True (WIN), viene eseguito quel blocco. Altrimenti, se tale espressione è falsa, il blocco viene ignorato fino alle successive istruzioni MEBBE, NO WAI o OIC.

Esempio

<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

Esempio

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

Dichiarazioni di casi

In LOLCODE, la parola chiave "WTF?" è simile allo switch in molte altre lingue. La parola chiave WTF? prende IT come valore dell'espressione per il confronto. Per utilizzare WTF, un blocco di confronto viene aperto da OMG che dovrebbe essere un letterale e non un'espressione.

Ricorda che ogni letterale deve essere univoco, simile al caso in altre lingue.

Il blocco OMG deve essere terminato da un'istruzione GTFO. Se un blocco OMG non viene terminato da un GTFO, viene eseguito il blocco OMG successivo fino a raggiungere GTFO.

Se nessuno dei letterali viene valutato come vero, il caso predefinito viene indicato da 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

I risultati di output del codice precedente saranno:

"E":

EFGH

I cicli vengono utilizzati nei linguaggi di programmazione per eseguire più volte un insieme di istruzioni. Ad esempio, se si desidera stampare la cifra 5 per cinque volte, invece di scrivere ilVISIBLE “5” cinque volte, puoi eseguire un ciclo con single VISIBLE “5” dichiarazione per cinque volte.

I loop semplici sono rappresentati con IM IN YR <label> e IM OUTTA YR <label>. I loop definiti in questo modo sono infiniti e dovrebbero essere terminati con un'istruzione GTFO break.

I cicli di iterazione hanno la seguente struttura:

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>

Si noti che all'interno del corpo della funzione è possibile utilizzare UPPIN (incremento di uno), NERFIN (decremento di uno) o qualsiasi funzione unaria.

La parola chiave TIL calcola l'espressione come TROOF: se viene valutata come FAIL, il ciclo continua ancora una volta, se valuta come WIN, l'esecuzione del ciclo si interrompe e continua dopo l'istruzione IM OUTTA YR corrispondente.

La parola chiave WILE è l'opposto della parola chiave TIL, se l'espressione è WIN, l'esecuzione continua, altrimenti il ​​ciclo termina.

Esempio

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 il codice precedente viene compilato su qualsiasi compilatore LOLCODE, o sul nostro codingground in linea, questo produrrà il seguente output.

sh-
4.3$ lci main.lo
1
2
3
4
5
6
7
8
9
10

Le funzioni sono utili nella programmazione perché riducono il tempo e lo sforzo per scrivere il codice ancora e ancora. Un codice funzione ben scritto offre un'elevata riutilizzabilità. Questo capitolo spiega come scrivere e lavorare con le funzioni in LOLCODE.

Definizione di una funzione

Una funzione è un insieme di istruzioni che vengono eseguite tutte in una volta chiamando quella funzione. In LOLCODE, la definizione di una funzione inizia con la parola chiave "HOW IZ I" e la parola chiave di chiusura è "IF U DICE SO".

La sintassi per scrivere una funzione in 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

Punti importanti

Considera i seguenti punti importanti quando definisci una funzione LOLCODE:

  • In LOLCODE, la funzione può accettare solo un certo numero fisso di argomenti come input.

  • Gli argomenti o parametri, sono gli identificatori che diventano una variabile per la funzione.

  • Le funzioni in LOLCODE non possono accedere ad altri valori diversi dai valori loro passati come argomenti.

Restituzione di valore da una funzione

Ritorno in codifica significa qualcosa che viene restituito. Nella programmazione, una funzione può restituire un valore al programma quando la sua esecuzione è completata. In LOLCODE, le funzioni restituiscono valori variabili come spiegato di seguito:

  • FOUND YR <any_expression> restituisce il valore dell'espressione quando il blocco funzione viene eseguito completamente.

  • GTFO non restituisce alcun valore (NOOB), che è simile a return 0 in altri linguaggi di programmazione come C e Java.

  • Se non viene trovata nessun'altra istruzione return, allora IF U SAY SO viene eseguito e viene restituito il valore nella variabile IT.

Funzioni di chiamata

Una funzione è definita nel corpo del programma e successivamente viene chiamata per l'esecuzione. Una funzione che accetta un dato numero di argomenti viene chiamata come mostrato di seguito:

I IZ <function_name> [YR <expression_One> [AN YR <expression_Two> 
   [AN YR <expression_Three> ...]]] MKAY

Durante la chiamata di una funzione, l'espressione è formata dal nome della funzione, seguito dal numero di argomenti che la funzione accetterà. Questi argomenti possono essere semplici variabili o qualsiasi espressione. Se una funzione accetta qualsiasi espressione invece di un valore semplice, i valori delle espressioni vengono calcolati prima che la funzione venga chiamata.

Ricorda che il numero di argomenti che una funzione accetterà, dovrebbe essere definito nella definizione della funzione.

Esempio

HAI

HOW DUZ I MAINUMBA
   I HAS A NUMBA
   GIMMEH NUMBA
   FOUND YR NUMBA
IF U SAY SO

VISIBLE MAINUMBA

KTHXBYE

Quando esegui il codice sopra, ti chiederà un input, quindi quando invii l'input, vedrai lo stesso del risultato. Ad esempio, se inseriamo 55, verrà stampato 55.

Esempio

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 funzione precedente che esegue la moltiplicazione degli operandi di input stamperà il seguente output quando la si esegue -

sh-
4.3$ lci main.lo

6

Esempio

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

L'output che il codice precedente produrrà è:

sh-
4.3$ lci main.lo 
OBJECT1

La gestione delle eccezioni è uno dei potenti meccanismi per gestire gli errori di runtime in modo che il normale flusso dell'applicazione possa essere mantenuto. LOLCODE non ha molto supporto per la gestione delle eccezioni come altri linguaggi di programmazione. Simile al blocco Try-Catch in altre lingue, LOLCODE ha il blocco PLZ.

Ad esempio, se desideri aprire un file che può o non può esistere, usa -

PLZ OPEN FILE "filename.TXT"?
   AWSUM THX
      VISIBLE FILE
      O NOES
   INVISIBLE "ERROR!"
KTHX

Il codice che può causare un'eccezione viene scritto nel blocco PLZ e l'eccezione viene gestita nel blocco O NOES. Qui, la parola chiave INVISIBILE invia un messaggio interno al debugger.

Si noti che poiché LOLCODE non viene mantenuto regolarmente, non sono disponibili più aggiornamenti per la gestione delle eccezioni LOLCODE e molte altre funzionalità.

I capitoli precedenti ti hanno spiegato la programmazione in LOLCODE. In questo capitolo imparerai alcuni esempi che ti consentono di programmare a un livello avanzato in LOLCODE.

Esempio 1: programma per calcolare la potenza di un numero

In questo esempio, troverai il codice per calcolare la potenza di un numero di input. Ad esempio, 2 elevato a potenza 4 è uguale 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

Il codice sopra stamperà il seguente output una volta eseguito correttamente:

sh-
4.3$ lci main.lo
16

Esempio 2: programma per creare un array

Questo esempio mostra il codice per creare un array con cinque elementi e ogni elemento con valore 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

Puoi vedere il seguente output quando esegui il codice sopra -

sh-4.3$ lci main.lo
10
10
10
10
10

Esempio 3: programma per calcolare il fattoriale di un numero

Questo programma mostra il codice per calcolare il fattoriale di un numero di input.

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

Il programma sopra stampa il fattoriale del numero 6 e puoi vedere l'output come mostrato di seguito -

sh-
4.3$ lci main.lo

720

Esempio 4: programma per progettare una calcolatrice

È possibile progettare una calcolatrice per eseguire operazioni matematiche di base utilizzando la programmazione LOLCODE. Rispettare il codice riportato di seguito -

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 eseguiamo il programma precedente con il seguente input -

3
4
+

Al momento dell'esecuzione, il programma precedente genererà il seguente output:

VALUE1
VALUE2
Choose Operation? + - * /
7