
Lolcode 快速指南
Lolcode - 介紹和環境設定
LOLCODE 是一種受網際網路上有趣事物啟發的深奧程式語言。它旨在測試程式語言設計的邊界。
本章將使您熟悉設定 LOLCODE 的本地環境,在 Windows 上安裝它,以及在 Tutorialspoint-codingground 上線上執行其指令碼。
設定本地環境
LOLCODE 直譯器是用 C 語言編寫的。它解釋在多個平臺上用 LOLCODE 語言編寫的程式碼。LOLCODE 直譯器稱為 lci,代表 LOLCODE 直譯器。
請注意,LOLCODE 官方僅支援直接安裝 MAC 作業系統的直譯器。要在您的作業系統中安裝 LOLCODE,您需要按照以下步驟操作:
- 按 Command+Space,輸入終端並按回車鍵
- 在終端應用程式中執行
- $ git clone https://github.com/justinmeza/lci.git
- $ cd lci
- $ cmake.
- $ make && make install
在 Windows 上安裝
如果您需要在 Windows 作業系統上安裝 LOLCODE,請執行以下步驟:
首先將 MinGW 和 Python 新增到您的環境變數路徑中。為此,右鍵單擊我的電腦,選擇屬性,然後選擇高階系統設定。選擇環境變數。在此框中,選擇PATH變數,然後單擊編輯。
現在,將“;C:\MinGW\bin;C:\Python32”新增到該路徑的末尾。
接下來,開啟命令提示符並使用“cd”命令導航到專案目錄,例如。
執行 install.py 指令碼。
使用 TutorialsPoint - codingground 線上執行指令碼
要輕鬆快捷地執行您的指令碼,請使用 TutorialsPoint 提供的 codingground 平臺。為此,請訪問以下連結線上執行您的指令碼:
https://tutorialspoint.tw/execute_lolcode_online.phpLolcode - 語法
LOLCODE 結構是俚語詞。下表顯示了迄今為止實現的結構的字母順序列表:
序號 | 結構和用法 |
---|---|
1 | BTW 它開始單行註釋。 |
2 | DOWN <變數>!!<次數> 這對應於 variable = variable - times。請注意,“times”是僅限 wut 的語言擴充套件。 |
3 | GIMMEH <變數> 這表示輸入語句。 |
4 | GTFO 這類似於其他語言中的break,並提供了一種跳出迴圈的方法。 |
5 | HAI 這對應於其他語言中的main ()函式。它是 LOLCODE 中的程式入口點。 |
6 | HEREZ <標籤> 這是另一個僅限 wut 的語言擴充套件,宣告一個標籤以供 SHOO 使用 |
7 | I HAS A <型別> <變數> 這聲明瞭指定型別的變數。 LOLCODE 中有三種內建型別:
請注意,型別是僅限 wut 的語言擴充套件。 |
8 | IM IN YR LOOP 這啟動一個無限迴圈。退出迴圈的唯一方法是使用 GTFO。對應於其他語言中的 for(;;) |
9 | IZ <表示式1> <運算子> <表示式2>?: 條件結構 這類似於其他語言中的 if 運算子。運算子是以下之一:BIGGER THAN、SMALLER THAN、SAEM AS。請注意,末尾的 ? 是可選的。 |
10 | KTHX 它結束一個塊。對應於} |
11 | KTHXBAI 這結束一個程式 |
12 | NOWAI 這對應於 else |
13 | PURR <表示式> 這在螢幕上列印引數,後跟換行符。它是僅限 wut 的語言擴充套件。 |
14 | RELSE 這對應於else (if) |
15 | SHOO 這是另一個僅限 wut 的語言擴充套件,對應於goto(恐怖!) |
16 | UP <變數>!!<次數> 這對應於 variables = variable + times。這裡“times”是僅限 wut 的語言擴充套件。 |
17 | VISIBLE <表示式> 這在螢幕上列印引數。請注意,這不會列印換行符。 |
18 | YARLY 這表示“真”條件塊的開始 |
一些 LOLCODE 俚語示例:
- HAI 是 hi
- KTHXBYE 是 okay, thanks, bye
- BTW 是 by the way
- OBTW 是 oh, by the way
- TLDR 是 too long; didn't read
空白符
在大多數程式語言中,關鍵字或標記之間可能沒有空格。但是,在某些語言中,空格用於區分標記。
逗號
逗號在大多數語言中像換行符關鍵字一樣工作,例如 Java 和 C 中的\n。您可以在 LOLCODE 中在一行中編寫許多命令,前提是您使用逗號 (,) 將它們分隔開。
三個點 (…)
三個點 (…) 使您能夠透過在行尾包含 (...) 將多行程式碼組合成單行或單個命令。這使編譯器將下一行的內容僅視為上一行的內容。只要每行以三個點結尾,就可以將無限行程式碼編寫在一起作為單個命令。
註釋以換行符結束。請注意,lci 忽略註釋 (BTW) 後的行延續 (...) 和 (,)。
註釋
單行註釋寫在 BTW 關鍵字之後。它們可以出現在程式主體中的任何位置:可以位於程式的第一行、程式之間、某些行之間或程式的末尾。
所有這些都是有效的單行註釋:
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
在 LOLCODE 中,多行註釋寫在 OBTW 之後,並以 TLDR 結束。
這是一個有效的多行註釋:
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
檔案建立
LOLCODE 程式以 HAI 關鍵字開頭,應該以 KTHXBYE 結尾。由於 LOLCODE 使用速記語言,HAI 基本上代表 Hi,KTHXBYE 可以記為“Ok, thanks, bye”。
示例
HAI 1.2 I HAS A NAME VISIBLE "NAME::"! GIMMEH NAME VISIBLE "tutorialsPoint " NAME "!" KTHXBYE
Lolcode - 變數
與任何其他程式語言一樣,LOLCODE 允許您定義各種型別的變數。本章將使您熟悉在 LOLCODE 中使用變數。
變數的作用域
變數的作用域是區域性於函式或程式塊的,即在一個作用域中定義的變數不能在同一程式的任何其他作用域中呼叫。變數只有在聲明後才能訪問。
請注意,LOLCODE 中沒有變數的全域性作用域。
命名約定
變數名通常稱為識別符號。以下是 LOLCODE 中變數命名的約定:
變數識別符號可以全部大寫或小寫字母(或兩者的混合)。
它們只能以字母開頭,然後可以後跟其他字母、數字和下劃線。
LOLCODE 不允許在命名變數時使用空格、短劃線或其他符號。
變數識別符號區分大小寫。
以下是 LOLCODE 中變數有效和無效名稱的一些規則:
名稱應始終以字母開頭。例如,name、Name 是有效的。
變數名不能以數字開頭。例如,2var 是無效的。
變數名不能以特殊字元開頭。
變數可以在其名稱中的任何位置包含 _ 或數字,但起始索引除外。例如,name2_m 是有效的名稱。
以下顯示了 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
上述程式碼中的所有宣告語句都是有效的,並且執行時將產生以下輸出:
sh-4.3$ lci main.lo 111.00033 111 1
以下是無效語句及其輸出的一些示例:
示例 1
HAI 1.2 I HAS A 2food ITZ "111.00033" KTHXBYE
執行上述程式碼時,將得到以下輸出:
sh-4.3$ lci main.lo Line 2: Expected: identifier; Got: int(2).
示例 2
HAI 1.2 I HAS A _food ITZ "111.00033" KTHXBYE
執行上述程式碼時,將得到以下輸出:
sh-4.3$ lci main.lo Line 2: Unrecognized sequence at: _food ITZ "111.00033".
示例 3
HAI 1.2 I HAS A f$ood ITZ "111.00033" KTHXBYE
執行上述程式碼時,將得到以下輸出:
sh-4.3$ lci main.lo Line 2: Unrecognized sequence at: $ood ITZ "111.00033".
變數的宣告和賦值
要宣告變數,LOLCODE 提供了一個關鍵字“I HAS A”,後跟變數名。您可以在下面找到宣告變數的語法。
I HAS A VAR BTW VAR is empty now, You can use any name instead of var
要在同一語句中賦值給變數,您可以然後在變數名後跟“ITZ”,然後給出要賦值的值。使用以下語法為變數賦值:
<variable> R <expression>
示例
VAR R "Green" BTW VAR is now a YARN and equals "Green" VAR R 30 BTW VAR is now a NUMBR and equals 30
您還可以同時宣告和賦值變數,使用以下語法:
I HAS A VAR ITZ VALUE
示例
I HAS A NAME ITS “TUTORIALS POINT”
示例
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
上述程式顯示了變數的宣告並列印它們。輸出為:
sh- 4.3$ lci main.lo 1 OMG! 5
型別轉換
要將一個型別的值轉換為另一個型別,我們使用型別轉換。將 NUMBAR 轉換為 NUMBR 會截斷浮點數的小數部分。將 NUMBAR 轉換為 YARN(例如透過列印它),會將輸出截斷為預設的 2 位小數。
示例
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
上述程式碼行將產生以下輸出:
sh-4.3$ lci main.lo 111.00033 111.00033
在 LOLCODE 程式中宣告的所有變數都是區域性變數,此語言中沒有任何變數的全域性作用域。
Lolcode - 資料型別
LOLCODE 旨在測試程式語言設計的邊界。它是一種受網際網路上有趣事物啟發的深奧程式語言。本章使您瞭解 LOLCODE 型別。
型別
目前,LOLCODE 中的變數型別為:
- 字串 (YARN)
- 整數 (NUMBR)
- 浮點數 (NUMBAR)
- 和布林值 (TROOF)
- 陣列 (BUKKIT)
在 LOLCODE 中,變數型別由編譯器動態處理。如果變數沒有初始值,則稱為未型別化(在 LOLCODE 中稱為 NOOB)。
下面顯示了在 LOLCODE 中宣告和使用不同型別的語法:
建立任何資料型別的變數
I HAS A <VARIABLE> ITZ A <DATA TYPE>
建立變數併為其賦值
I HAS A <VARIABLE> ITZ <EXPRESSION<
為已建立的資料型別賦值
<VARIABLE> R <EXPRESSION>
未型別化 (NOOB)
未型別化資料型別 (稱為 NOOB) 無法轉換為除 TROOF 資料型別以外的任何其他型別。將 NOOB 隱式轉換為 TROOF 會使變數 FAIL。之後,對 NOOB 的任何操作都會導致錯誤。
未型別化資料型別 (即未初始化且沒有任何初始值的型別) 變數的顯式轉換會導致所有其他型別的零值。
要定義未型別化變數,只需宣告一個變數並賦值,如本例所示:
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
執行上述程式時,您將看到以下結果:
sh- 4.3$ lci main.lo ANYVALUE 44
布林值 (TROOFS)
在 LOLCODE 中,布林值有兩種型別。布林值通常有兩個值——真和假。但是,在 LOLCODE 中,布林值稱為 TROOF,真/假值分別稱為 WIN/FAIL。所有未初始化的值,如空字串 (“”) 或空陣列,都將轉換為 FAIL。所有其他已初始化的值都計算為 WIN。
示例
HAI 1.2 I HAS A VAR3 ITZ A TROOF VAR3 R "FAIL" VISIBLE VAR3 KTHXBYE
執行上述程式碼時,您將看到以下輸出:
sh-4.3$ lci main.lo FAIL
數值型別 (NUMBR)
在 LOLCODE 中,NUMBR 代表整數。任何數字序列都被視為 NUMBR,除非它在序列中的任何位置都包含小數點。要使任何數字為負數,可以在其前面加上一個連字元 (-),這表示負數。
示例
HAI 1.2 I HAS A VAR3 ITZ A NUMBR VISIBLE VAR3 KTHXBYE
執行上述程式碼時,您將看到以下結果:
sh- 4.3$ lci main.lo 0
類似於NUMBR,LOLCODE還有另一種資料型別,它在許多程式語言中表示十進位制數或浮點數。在LOLCODE中,NUMBAR是一個包含一個小數點的浮點數。將NUMBAR轉換為NUMBR會截斷浮點數的小數部分,並將其作為NUMBR返回,沒有任何小數。
字串 (YARN)
在LOLCODE中,包含字串的值,即字串字面量(YARN),應該以雙引號("”)開頭和結尾。
可以在字串內寫入任何內容,例如空格、逗號、句點、感嘆號或任何其他符號。任何單引號缺失的字串都可能導致錯誤。冒號在LOLCODE中用作跳脫字元,冒號後的任何值都具有特殊含義。
:) − 冒號後面的右括號表示換行符(\n)
:> − 冒號後面的右尖括號表示製表符(\t)
:o − 冒號後面的‘o’字元表示響鈴(蜂鳴聲)(\g)
:" − 冒號後面的“表示字面意義上的雙引號(")
:: − 冒號後面的冒號表示字面意義上的單個冒號(:)
示例
HAI 1.2 I HAS A VAR3 ITZ A YARN VAR3 R "XYZ" VISIBLE VAR3 KTHXBYE
上面給出的程式碼執行後會產生以下輸出:
sh- 4.3$ lci main.lo XYZ
BUKKIT
此型別表示陣列。它具有命名的槽,可以包含變數或函式。BUKKIT可以按以下方式宣告:
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
BUKKIT內的函式也可以使用ME'Z [var]或ME IZ [function name] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ...))) MKAY訪問BUKKIT的變數和其他函式。
示例
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
執行上面給出的程式碼後,您將看到以下輸出:
sh- 4.3$ lci main.lo DOGE
Lolcode - 運算子
運算子在對變數執行各種運算中起著重要作用。本章介紹LOLCODE中的各種運算子及其用法。
運算子
數學運算子依賴於字首表示法,即出現在運算元之前的表示法。當所有運算子都有已知數量的引數或運算元時,不需要分組標記。在運算子沒有固定引數或運算元的情況下,運算以MKAY結束。
如果MKAY與語句的結尾重合,則可能不使用MKAY。在這種情況下,應使用EOL關鍵字。要使用一元數學運算子,請使用以下語法:
<operator> <expression>
可以可選地使用AN關鍵字分隔引數,並對多個運算元應用單個運算,因此二元運算子表示式具有以下語法:
<operator> <expression1> AN <expression2>
任何包含具有無限多個引數的運算子的表示式都可以用以下語法表示:
<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY
數學運算
以下是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
上述和可以是唯一的表示式,因此數學運算子可以無限巢狀和分組。
如果存在兩個NUMBR,則數學運算將引數視為整數運算;但如果任一表達式為NUMBAR,則運算將視為浮點運算。
示例
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
執行上述程式碼後,將產生以下輸出:
sh- 4.3$ lci main.lo 6 2 8 2 0 4 2
重要事項:
請考慮以下與在LOLCODE中使用數學運算子相關的重要事項:
如果表示式中一個或兩個引數為YARN,則將其視為NUMBAR。
如果任何引數不能安全地內部轉換為數值型別,則會出錯。
布林值
布林運算子應用於那些可能是真或假的值。作用於TROOF的布林運算子如下:
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.
請注意,如果上述表示式語法中的
比較
如果要在LOLCODE中比較兩個或多個運算元,可以使用以下任何方法:
方法1
可以使用等號運算子比較兩個二元運算元。語法如下所示:
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
方法2
可以比較兩個值是否為NUMBR型別。請記住,如果任一值為NUMBAR,則將其作為浮點值進行比較。
方法3
還可以使用最小值和最大值運算子進行比較。語法如下所示:
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>
示例
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 KTHXBY
執行給定程式碼後,您將看到以下輸出:
sh- 4.3$ lci main.lo TRUE
值的連線
LOLCODE允許您使用SMOOSH…MKAY運算子顯式連線無限多個YARN。對於連線,可以使用AN運算子分隔多個引數。
示例
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
上面給出的程式碼執行後將產生以下結果:
sh- 4.3$ lci main.lo TRUE ONE MORE TRUE ANOTHER TRUE
型別轉換
作用於特定型別的運算子會隱式轉換或安全地將一種型別的值轉換為另一種型別。如果值不能安全地轉換為另一種型別,則會發生錯誤。
可以使用二元MAEK運算子將表示式的值顯式轉換為其他型別。MAEK運算子的語法如下:
MAEK <expression> A <type>
其中,
要將變數顯式轉換為其他型別,可以使用帶有MAEK運算子的普通賦值語句,或者可以使用以下賦值語句:
<Any_variable> IS NOW A <type> BTW this code will be equal to <Any_variable> R MAEK <variable> A <type>
示例
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
上述程式碼將產生以下輸出:
sh-4.3$ lci main.lo 111.00033
Lolcode - 輸入/輸出
本章將解釋如何透過LOLCODE終端輸入值以及如何將其輸出到終端。
終端I/O
可以使用VISIBLE關鍵字在LOLCODE中列印內容。VISIBLE是一個函式,可以接收無限多個字元作為輸入,並透過內部連線並將它們轉換為字串或YARN來一次性列印所有字元。
VISIBLE函式以分隔符結束或終止,該分隔符是行尾或逗號。
輸出由編譯器自動以回車符終止。如果最終標記以感嘆號(!)結尾,則回車符將被此符號覆蓋。
VISIBLE <any_expression> [<any_expression> ...][!]
請注意,在LOLCODE中,目前沒有定義將某些資料列印到檔案的標準。
要從使用者處獲取一些輸入,使用的關鍵字是GIMMEH。它是一個函式,可以接收任意數量的變數作為輸入。它接收YARN作為輸入,並將值儲存在任何給定的變數中。
GIMMEH <any_variable>
示例
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
執行此程式碼時,它將要求您輸入一個數字,然後自動在下一行列印該數字。執行此程式碼時,它將列印以下輸出:
sh- 4.3$ lci main.lo TYPE SOMETHING AND ENTER 67 67
Lolcode - 語句和流程控制
LOLCODE允許您透過各種語句控制程式的流程。本章解釋LOLCODE中可用的不同型別的語句。
表示式語句
在LOLCODE中,沒有任何賦值的表示式(即簡單地呼叫數學運算或任何函式)都是合法的語句。表示式求值後,其最終值將放入臨時變數IT中。IT的值保留在區域性作用域中,並且存在直到下次被表示式替換。
賦值語句
賦值語句用於將任何表示式的輸出賦值給給定的變數。它們通常採用以下形式:
<any_variable> <assignment operator> <any expression>
請注意,即使在變數被賦值之前,您也可以在表示式中使用它。
條件語句
If-Then語句
if-then語句是一個作用於IT變數的非常簡單的操作。它類似於C和Java等其他程式語言中的if-else語句。
有四個關鍵字可以應用if-then語句。
- O RLY?
- YA RLY
- NO WAI
- OIC
一般形式為:
<any_expression> O RLY? YA RLY <code to execute if above condition is true> NO WAI <code to execute in this block> OIC
以上所有語句都可以用逗號分隔寫在同一行,例如:
BOTH SAEM NAMES AN "Name", O RLY? YA RLY, VISIBLE "My name is ABCD" NO WAI, VISIBLE "Your name is ABCD" OIC
使用if-then語句時,可以在YA RLY和NO WAI塊之間可選地使用MEBBE
如果MEBBE後面的
示例
<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
示例
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
Case語句
在LOLCODE中,“WTF?”關鍵字類似於許多其他語言中的switch。WTF?關鍵字將IT作為比較的表示式值。要使用WTF,比較塊由OMG開啟,OMG應該是一個字面量,而不是一個表示式。
請記住,每個字面量必須是唯一的,類似於其他語言中的情況。
OMG塊必須以GTFO語句終止。如果OMG塊沒有以GTFO終止,則將執行下一個OMG塊,直到到達GTFO。
如果沒有任何字面量求值為真,則預設情況由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
上述程式碼的輸出結果將是:
"E"
EFGH
Lolcode - 迴圈
迴圈用於程式語言中多次執行一組語句。例如,如果要列印數字5五次,則無需將VISIBLE “5”語句編寫五次,而可以使用單個VISIBLE “5”語句迴圈執行五次。
簡單的迴圈用IM IN YR
迭代迴圈具有以下結構:
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>
請注意,在函式體中,可以使用UPPIN(加一)、NERFIN(減一)或任何一元函式。
TIL關鍵字將表示式計算為TROOF:如果其值為FAIL,則迴圈再繼續一次;如果其值為WIN,則迴圈執行停止,並在匹配的IM OUTTA YR語句之後繼續。
WILE關鍵字與TIL關鍵字相反,如果表示式為WIN,則繼續執行,否則迴圈退出。
示例
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
當上述程式碼在任何LOLCODE編譯器或我們的線上編碼環境中編譯時,這將產生以下輸出。
sh- 4.3$ lci main.lo 1 2 3 4 5 6 7 8 9 10
Lolcode - 函式
函式在程式設計中非常有用,因為它們減少了反覆編寫程式碼的時間和精力。編寫良好的函式程式碼具有很高的可重用性。本章解釋如何在LOLCODE中編寫和使用函式。
函式的定義
函式是一組語句,透過呼叫該函式一次性執行所有語句。在LOLCODE中,函式的定義以關鍵字“HOW IZ I”開頭,結束關鍵字是“IF U SAY SO”。
在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
重要事項
定義LOLCODE函式時,請考慮以下重要事項:
在LOLCODE中,函式只能接受一定數量的固定引數作為輸入。
引數或變數是成為函式變數的識別符號。
LOLCODE中的函式無法訪問除作為引數傳遞給它們的值之外的任何其他值。
從函式返回值
編碼中的返回意味著返回某些內容。在程式設計中,函式可以在執行完成後向程式返回某些值。在LOLCODE中,函式返回的值如下所述:
FOUND YR
在函式塊完全執行時返回表示式的值。 -
GTFO不返回值(NOOB),這類似於C和Java等其他程式語言中的return 0。
如果沒有找到其他返回語句,則執行IF U SAY SO,並返回IT變數中的值。
.
呼叫函式
函式在程式體中定義,稍後呼叫以執行。接受給定數量引數的函式呼叫如下所示:
I IZ <function_name> [YR <expression_One> [AN YR <expression_Two> [AN YR <expression_Three> ...]]] MKAY
呼叫函式時,表示式由函式名後跟函式將接受的引數數量構成。這些引數可以是簡單的變數或任何表示式。如果函式接受任何表示式而不是簡單值,則在呼叫函式之前計算表示式的值。
請記住,函式將接受的引數數量應在函式定義中定義。
示例
HAI HOW DUZ I MAINUMBA I HAS A NUMBA GIMMEH NUMBA FOUND YR NUMBA IF U SAY SO VISIBLE MAINUMBA KTHXBYE
執行以上程式碼時,它會要求輸入,然後提交輸入後,您將看到與結果相同的輸出。例如,如果我們輸入 55,它將列印 55。
示例
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
當您執行執行輸入運算元乘法的上述函式時,它將列印以下輸出:
sh- 4.3$ lci main.lo 6
示例
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
以上程式碼將產生以下輸出:
sh- 4.3$ lci main.lo OBJECT1
Lolcode - 異常處理
異常處理是處理執行時錯誤的強大機制之一,以便可以維護應用程式的正常流程。LOLCODE 對異常處理的支援不像其他程式語言那樣廣泛。與其他語言中的 Try-Catch 塊類似,LOLCODE 有 PLZ 塊。
例如,如果您想開啟可能存在也可能不存在的檔案,請使用:
PLZ OPEN FILE "filename.TXT"? AWSUM THX VISIBLE FILE O NOES INVISIBLE "ERROR!" KTHX
可能導致異常的程式碼寫在 PLZ 塊中,異常在 O NOES 塊中處理。在這裡,INVISIBLE 關鍵字向偵錯程式傳送內部訊息。
請注意,由於 LOLCODE 並非定期維護,因此 LOLCODE 異常處理和許多其他功能均不再提供更新。
Lolcode - 更多示例
前面的章節解釋了 LOLCODE 的程式設計。在本章中,您將學習一些示例,讓您能夠在 LOLCODE 中進行更高級別的編碼。
示例 1:計算數字的冪的程式
在此示例中,您將找到計算輸入數字的冪的程式碼。例如,2 的 4 次冪等於 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
以上程式碼成功執行後將列印以下輸出:
sh- 4.3$ lci main.lo 16
示例 2:建立陣列的程式
此示例顯示了建立包含五個元素的陣列的程式碼,每個元素的值為 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
執行上述程式碼時,您將看到以下輸出:
sh-4.3$ lci main.lo 10 10 10 10 10
示例 3:計算數字階乘的程式
此程式顯示了計算輸入數字階乘的程式碼。
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
以上程式列印數字 6 的階乘,您可以看到如下所示的輸出:
sh- 4.3$ lci main.lo 720
示例 4:設計計算器的程式
您可以使用 LOLCODE 程式設計設計一個計算器來執行基本的數學運算。觀察以下給出的程式碼:
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
當我們使用以下輸入執行上述程式時:
3 4 +
執行後,上述程式將生成以下輸出:
VALUE1 VALUE2 Choose Operation? + - * / 7