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.phpLOLCODE 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 -
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