Lolcode - Hướng dẫn nhanh

LOLCODE là một ngôn ngữ lập trình bí truyền lấy cảm hứng từ những điều vui nhộn trên Internet. Nó được thiết kế để kiểm tra các ranh giới của thiết kế ngôn ngữ lập trình.

Chương này sẽ giúp bạn làm quen với việc thiết lập môi trường cục bộ cho LOLCODE, cài đặt nó trên Windows và thực thi trực tuyến tập lệnh của nó tại Tutorialspoint-codingground.

Thiết lập môi trường cục bộ

Trình thông dịch LOLCODE được viết bằng Ngôn ngữ C. Nó diễn giải mã được viết bằng ngôn ngữ LOLCODE trên nhiều nền tảng. Trình thông dịch LOLCODE được gọi là lci, viết tắt của LOLCODE Interpreter.

Xin lưu ý rằng LOLCODE chỉ hỗ trợ cài đặt trực tiếp trình thông dịch cho Hệ điều hành MAC. Để cài đặt LOLCODE trong hệ điều hành của mình, bạn cần làm theo các bước dưới đây:

  • Nhấn Command + Space và nhập Terminal và hãy nhấn enter/return Chìa khóa
  • Chạy trong ứng dụng Terminal
  • $ git clone https://github.com/justinmeza/lci.git
  • $ cd lci
  • $ cmake.
  • $ make && thực hiện cài đặt

Cài đặt trên Windows

Nếu bạn cần cài đặt LOLCODE trên hệ điều hành Windows, hãy thực hiện các bước sau:

  • Đầu tiên hãy thêm MinGW và Python vào đường dẫn biến môi trường của bạn. Để làm điều này, nhấp chuột phải vàoMy Computer, chọn Properties, sau đó chọn Advanced system settings. Lựa chọn Environment Variables. Trong hộp này, hãy chọnPATH biến và sau đó nhấp vào Edit.

  • Bây giờ, thêm "; C: \ MinGW \ bin; C: \ Python32" vào cuối đường dẫn đó.

  • Tiếp theo, mở Command Prompt và điều hướng đến thư mục dự án bằng lệnh "cd", chẳng hạn.

  • Chạy script install.py.

Thực thi Script trực tuyến với TutorialsPoint - codingground

Để thực hiện kịch bản của bạn một cách dễ dàng và nhanh chóng, sử dụng codingground nền tảng cung cấp bởi TutorialsPoint. Đối với điều này, hãy truy cập liên kết sau để thực thi các tập lệnh của bạn trực tuyến -

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

LOLCODE có một cú pháp khác so với các ngôn ngữ lập trình khác, tuy nhiên, nó dễ nhớ hơn. Chương này cung cấp cho bạn cú pháp cơ bản của LOLCODE.

Cấu trúc

Các cấu trúc LOLCODE là các từ lóng. Bảng sau đây cho thấy danh sách các cấu trúc được triển khai theo thứ tự bảng chữ cái cho đến nay:

Sr.No. Cấu tạo & Cách sử dụng
1

BTW

Nó bắt đầu một dòng bình luận.

2

DOWN <variable>!!<times>

Điều này tương ứng với biến = biến - lần. Lưu ý rằng "times" là phần mở rộng ngôn ngữ chỉ dành cho wut.

3

GIMMEH <variable>

Điều này đại diện cho câu lệnh đầu vào.

4

GTFO

Điều này tương tự như break bằng các ngôn ngữ khác và cung cấp cách thoát khỏi vòng lặp.

5

HAI

Điều này tương ứng với main ()chức năng trong các ngôn ngữ khác. Đây là điểm nhập chương trình trong LOLCODE.

6

HEREZ <label>

Đây là một tiện ích mở rộng ngôn ngữ chỉ dành cho wut khác và khai báo nhãn để sử dụng với SHOO

7

I HAS A <type> <variable>

Điều này khai báo một biến loại đã nói.

Có ba kiểu tích hợp trong LOLCODE -

  • NUMBAH (int)
  • DECINUMBAH (gấp đôi)
  • WORDZ (std :: string)

Lưu ý rằng các loại là một phần mở rộng ngôn ngữ chỉ wut.

số 8

IM IN YR LOOP

Điều này bắt đầu một vòng lặp vô hạn. Cách duy nhất để thoát khỏi vòng lặp là sử dụng GTFO. Tương ứng với for(;;) bằng các ngôn ngữ khác

9

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

Điều này tương tự như toán tử if trong các ngôn ngữ khác. Nhà khai thác là một trong số: LỚN HƠN, NHỎ HƠN, SAEM NHƯ. Lưu ý rằng ? ở cuối là tùy chọn.

10

KTHX

Nó kết thúc một khối. Tương ứng với}

11

KTHXBAI

Điều này kết thúc một chương trình

12

NOWAI

Điều này tương ứng với khác

13

PURR <expr>

Điều này in đối số trên màn hình, theo sau là một dòng mới. Nó là một phần mở rộng ngôn ngữ chỉ dành cho wut.

14

RELSE

Điều này tương ứng với else (if)

15

SHOO

Đây là một phần mở rộng ngôn ngữ chỉ wut khác, tương ứng với goto (kinh dị!)

16

UP <variable>!!<times>

Điều này tương ứng với biến = biến + lần. Ở đây "times" là một phần mở rộng ngôn ngữ chỉ wut.

17

VISIBLE <expr>

Điều này sẽ in đối số trên màn hình. Lưu ý rằng điều này không in dòng mới.

18

YARLY

Điều này biểu thị sự bắt đầu của khối điều kiện "true"

Một số ví dụ về thuật ngữ tiếng lóng trong LOLCODE là -

  • HẢI chào
  • KTHXBYE ổn, cảm ơn, tạm biệt
  • BTW là bằng cách này
  • OBTW là ồ, nhân tiện
  • TLDR quá dài; không đọc

Khoảng trắng

Trong hầu hết các ngôn ngữ lập trình, từ khóa hoặc mã thông báo có thể không có khoảng cách giữa chúng. Tuy nhiên, trong một số ngôn ngữ, dấu cách được sử dụng trong mã thông báo để phân biệt chúng.

Dấu phẩy

Ví dụ: dấu phẩy hoạt động giống như một từ khóa dòng mới trong hầu hết các ngôn ngữ, \n trong Java và C. Bạn có thể viết nhiều lệnh trong một dòng trong LOLCODE, miễn là bạn phân tách chúng bằng dấu phẩy (,).

Ba kỳ (…)

Ba dấu chấm (…) cho phép bạn kết hợp nhiều dòng mã thành một dòng hoặc một lệnh đơn bằng cách bao gồm (…) ở cuối dòng. Điều này làm cho trình biên dịch coi nội dung của dòng tiếp theo chỉ là nội dung của dòng trước. Các dòng mã vô hạn có thể được viết cùng nhau dưới dạng một lệnh, miễn là mỗi dòng được kết thúc bằng ba dấu chấm.

Một bình luận được kết thúc bởi một dòng mới. Xin lưu ý rằng phần tiếp theo dòng (...) và (,) sau chú thích (BTW) bị lci bỏ qua.

Bình luận

Nhận xét dòng đơn được viết theo sau bởi từ khóa BTW. Chúng có thể xuất hiện ở bất kỳ đâu bên trong nội dung chương trình: nó có thể ở dòng đầu tiên của chương trình, ở giữa chương trình, ở giữa một số dòng hoặc ở cuối chương trình.

Tất cả những điều này là bình luận dòng đơn hợp lệ

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

Trong LOLCODE, nhiều dòng nhận xét được viết theo sau là OBTW và chúng được kết thúc bằng TLDR.

Đây là một bình luận nhiều dòng hợp lệ -

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

Tạo tệp

Một chương trình LOLCODE bắt đầu bằng từ khóa HAI và nó phải kết thúc bằng KTHXBYE. Vì LOLCODE sử dụng ngôn ngữ viết tắt nên HAI về cơ bản là viết tắt của Hi và KTHXBYE có thể được nhớ là“Ok, thanks, bye ”.

Thí dụ

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

Như trong bất kỳ ngôn ngữ lập trình nào khác, LOLCODE cho phép bạn xác định các biến thuộc nhiều loại khác nhau. Chương này sẽ giúp bạn làm quen với các biến trong LOLCODE.

Phạm vi của các biến

Phạm vi của một biến là cục bộ đối với hàm hoặc đối với khối chương trình, tức là một biến được xác định trong một phạm vi không thể được gọi trong bất kỳ phạm vi nào khác của cùng một chương trình. Các biến chỉ có thể truy cập sau khi chúng được khai báo.

Xin lưu ý rằng không có phạm vi toàn cục của các biến trong LOLCODE.

Quy ước đặt tên

Tên biến thường được gọi là định danh. Dưới đây là một số quy ước đặt tên biến trong LOLCODE -

  • Các số nhận dạng biến có thể bằng tất cả các chữ viết hoa hoặc viết thường (hoặc kết hợp cả hai).

  • Chúng chỉ có thể bắt đầu bằng một chữ cái và sau đó có thể được theo sau bởi các chữ cái, số và dấu gạch dưới khác.

  • LOLCODE không cho phép sử dụng dấu cách, dấu gạch ngang hoặc các ký hiệu khác trong khi đặt tên biến.

  • Số nhận dạng biến có phân biệt chữ hoa chữ thường.

Dưới đây là một số quy tắc cho tên hợp lệ và không hợp lệ cho các biến trong LOLCODE−

  • Tên phải luôn bắt đầu bằng một bảng chữ cái. Ví dụ,name, Name có giá trị.

  • Tên của một biến không được bắt đầu bằng một chữ số. Ví dụ,2var không có hiệu lực.

  • Tên của một biến không được bắt đầu bằng một ký tự đặc biệt.

  • Một biến có thể chứa _ hoặc một chữ số ở bất kỳ đâu bên trong tên của nó, ngoại trừ ở chỉ mục bắt đầu. Ví dụ,name2_m là một tên hợp lệ.

Dưới đây là một số ví dụ về tên hợp lệ trong 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

Tất cả các câu lệnh khai báo trong đoạn mã trên đều hợp lệ và sẽ tạo ra kết quả sau khi được thực thi:

sh-4.3$ lci main.lo
111.00033
111
1

Dưới đây là một số ví dụ về các câu lệnh không hợp lệ và đầu ra của chúng:

ví dụ 1

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

Đoạn mã trên sẽ cho kết quả sau khi bạn thực thi nó:

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

Ví dụ 2

HAI 1.2
I HAS A _food ITZ "111.00033"
KTHXBYE

Đoạn mã trên sẽ cho kết quả sau khi bạn thực thi nó:

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

Ví dụ 3

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

Đoạn mã trên sẽ cho kết quả sau khi bạn thực thi nó:

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

Khai báo và chỉ định các biến

Đến declaremột biến, LOLCODE cung cấp từ khóa “TÔI CÓ A” theo sau là tên biến. Bạn có thể tìm thấy cú pháp khai báo một biến bên dưới.

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

Đến assignbiến một giá trị trong cùng một câu lệnh, sau đó bạn có thể theo sau tên biến với “ITZ” và sau đó đưa ra giá trị bạn muốn gán. Sử dụng cú pháp sau để gán giá trị cho một biến:

<variable> R <expression>

Thí dụ

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

Bạn cũng có thể declareassign đồng thời sử dụng cú pháp sau:

I HAS A VAR ITZ VALUE

Thí dụ

I HAS A NAME ITS “TUTORIALS POINT”

Thí dụ

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

Chương trình trên hiển thị phần khai báo của các biến và in ra chúng. Đầu ra là -

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

Loại Đúc

Để chuyển đổi giá trị của một kiểu này sang kiểu khác, chúng ta sử dụng kiểu ép kiểu. Truyền một NUMBAR thành NUMBR cắt bớt phần thập phân của số dấu phẩy động. Truyền MỘT SỐ sang SỢI (ví dụ: bằng cách in nó), cắt ngắn đầu ra thành 2 chữ số thập phân mặc định.

Thí dụ

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

Dòng mã trên sẽ tạo ra kết quả sau:

sh-4.3$ lci main.lo
111.00033
111.00033

Tất cả các biến được khai báo trong chương trình LOLCODE là biến cục bộ và không có phạm vi toàn cục trong ngôn ngữ này cho bất kỳ biến nào.

LOLCODE được thiết kế để kiểm tra các ranh giới của thiết kế ngôn ngữ lập trình. Nó là một ngôn ngữ lập trình bí truyền lấy cảm hứng từ những điều vui nhộn trên Internet. Chương này cung cấp cho bạn sự hiểu biết về các loại LOLCODE.

Các loại

Hiện tại, các loại biến trong LOLCODE là -

  • chuỗi (SỢI)
  • số nguyên (NUMBR)
  • nổi (NUMBAR)
  • và booleans (TROOF)
  • Mảng (BUKKIT)

Trong LOLCODE, kiểu biến được trình biên dịch xử lý động. Nếu một biến không có giá trị ban đầu, nó được gọi là không định kiểu (được gọi là NOOB trong LOLCODE).

Cú pháp khai báo và sử dụng các kiểu khác nhau trong LOLCODE được trình bày dưới đây:

Để tạo một biến của bất kỳ kiểu dữ liệu nào

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

Để tạo một biến và gán giá trị cho nó

I HAS A <VARIABLE> ITZ <EXPRESSION<

Để gán giá trị cho một kiểu dữ liệu đã được tạo

<VARIABLE> R <EXPRESSION>

Không định kiểu (NOOB)

Không thể chuyển đổi kiểu dữ liệu chưa định kiểu (được gọi là NOOB) thành bất kỳ kiểu nào khác ngoại trừ thành kiểu dữ liệu TROOF. Việc ép kiểu ngầm một NOOB vào TROOF làm cho biến FAIL. Sau đó, bất kỳ thao tác nào trên NOOB đều dẫn đến lỗi.

Các mẫu rõ ràng của kiểu dữ liệu NOOB (tức là các kiểu chưa được khởi tạo và không có bất kỳ giá trị ban đầu nào) biến kết quả thành giá trị 0 cho tất cả các kiểu khác.

Để xác định một biến không định kiểu, chỉ cần khai báo một biến và gán một giá trị như trong ví dụ này -

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

Khi bạn chạy chương trình trên, bạn sẽ thấy kết quả sau:

sh-
4.3$ lci main.lo 
ANYVALUE
44

Booleans (TROOFS)

Trong LOLCODE, các giá trị Boolean có hai loại. BOOLEAN thường có hai giá trị - đúng và sai. Tuy nhiên, trong LOLCODE, Boolean được gọi là TROOF và các giá trị đúng / sai được gọi là WIN / FAIL tương ứng. Tất cả các giá trị chưa được khởi tạo như một chuỗi rỗng ("") hoặc một mảng trống đều sẽ chuyển thành FAIL. Tất cả các giá trị khởi tạo khác được đánh giá thành WIN.

Thí dụ

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

Bạn có thể thấy kết quả sau khi thực thi đoạn mã trên:

sh-4.3$ lci main.lo
FAIL

Loại số (NUMBR)

Trong LOLCODE, NUMBR là viết tắt của một số nguyên. Bất kỳ dãy chữ số nào cũng được coi là một NUMBR, trừ khi nó có một số thập phân xuất hiện ở bất kỳ đâu giữa dãy số. Để làm cho bất kỳ số nào là số âm, nó có thể được đặt trước bởi một dấu gạch ngang (-) biểu thị một số âm.

Thí dụ

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

Đoạn mã trên hiển thị cho bạn kết quả sau khi bạn chạy nó−

sh- 
4.3$ lci main.lo
0

Tương tự như NUMBR, LOLCODE có một kiểu dữ liệu khác, đại diện cho một số thập phân hoặc một số thực trong nhiều ngôn ngữ lập trình. Trong LOLCODE, NUMBAR là một số thực chứa một dấu thập phân. Việc truyền một NUMBAR thành NUMBR sẽ cắt bớt phần thập phân của số dấu phẩy động và trả về nó dưới dạng NUMBR, không có bất kỳ số thập phân nào.

Chuỗi (SỢI)

Trong LOLCODE, giá trị chứa chuỗi, tức là chuỗi ký tự (YARN) phải bắt đầu và kết thúc bằng dấu ngoặc kép ("”).

Bất kỳ thứ gì có thể được viết bên trong chuỗi, như dấu cách, dấu phẩy, dấu chấm hết, dấu chấm than hoặc bất kỳ ký hiệu nào khác. Một chuỗi mà bất kỳ trích dẫn nào bị thiếu có thể gây ra lỗi. Dấu hai chấm được sử dụng làm ký tự thoát trong LOLCODE và bất kỳ giá trị nào sau dấu hai chấm đều có ý nghĩa đặc biệt.

  • :) - Dấu ngoặc đóng sau dấu hai chấm biểu thị một dòng mới (\ n)

  • :> - Dấu ngoặc nhọn đóng sau dấu hai chấm biểu thị một tab (\ t)

  • :o - A ‘o’ ký tự sau dấu hai chấm đại diện cho tiếng chuông (tiếng bíp) (\ g)

  • :" - Dấu “đứng sau dấu hai chấm biểu thị một dấu ngoặc kép theo nghĩa đen (")

  • :: - Dấu hai chấm theo sau dấu hai chấm đại diện cho một dấu hai chấm đơn (:)

Thí dụ

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

Đoạn mã được đưa ra ở trên tạo ra kết quả sau khi thực thi:

sh-
4.3$ lci main.lo 
XYZ

BUKKIT

Kiểu này đại diện cho một mảng. Nó có các khe được đặt tên, có thể chứa các biến hoặc hàm. Một BUKKIT có thể được khai báo theo cách sau:

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

Một hàm bên trong BUKKIT cũng có thể truy cập các biến và các hàm khác của BUKKIT bằng cách sử dụng ME'Z [var] hoặc ME IZ [tên hàm] (YR [đối số1] (AN YR [đối số2] (AN YR [đối số3] ... ))) THAY.

Thí dụ

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

Đây là đầu ra bạn sẽ tìm thấy khi chạy đoạn mã được đưa ra ở trên -

sh-
4.3$ lci main.lo 
DOGE

Các toán tử đóng một vai trò quan trọng để thực hiện các hoạt động khác nhau trên các biến. Chương này cung cấp cho bạn các toán tử khác nhau trong LOLCODE và cách sử dụng chúng.

Người điều hành

Các toán tử toán học phụ thuộc vào một ký hiệu tiền tố tức là ký hiệu đứng trước toán hạng. Khi tất cả các toán tử có số đối số hoặc toán hạng đã biết, thì không cần đánh dấu nhóm. Trong trường hợp các toán tử không có các đối số hoặc toán hạng cố định, hoạt động được đóng bằng MKAY.

MKAY có thể không được sử dụng nếu nó trùng với phần cuối của câu lệnh. Trong những trường hợp như vậy, từ khóa EOL nên được sử dụng. Để sử dụng các toán tử toán học một ngôi, hãy sử dụng cú pháp sau:

<operator> <expression>

Từ khóa AN có thể được tùy chọn sử dụng để phân tách các đối số và áp dụng một phép toán đơn lẻ trên nhiều toán hạng, do đó, biểu thức toán tử nhị phân có cú pháp sau:

<operator> <expression1> AN <expression2>

Bất kỳ biểu thức nào chứa một toán tử với vô số đối số đều có thể được biểu diễn theo cú pháp sau:

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

môn Toán

Sau đây là các phép toán cơ bản trong 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> và <b> mỗi bên có thể là các biểu thức duy nhất ở trên, vì vậy các toán tử toán học có thể được lồng vào nhau và nhóm vô hạn.

Phép toán được thực hiện khi coi các đối số là phép toán số nguyên với sự hiện diện của hai CON SỐ, nhưng nếu một trong hai biểu thức là SỐ BẰNG SỐ thì các phép toán được coi là phép toán dấu phẩy động.

Thí dụ

HAI 1.2
   I HAS A m ITZ 4
   I HAS A n ITZ 2
VISIBLE SUM OF m AN n      BTW +
VISIBLE DIFF OF m AN n     BTW -
VISIBLE PRODUKT OF m AN n  BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n      BTW modulo
VISIBLE BIGGR OF m AN n    BTW max
VISIBLE SMALLR OF m AN n   BTW min
KTHXBYE

Đoạn mã trên sẽ tạo ra kết quả sau khi bạn chạy nó:

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

Điểm quan trọng -

Hãy xem xét các điểm quan trọng sau liên quan đến việc làm việc với các toán tử toán học trong LOLCODE−

  • Nếu một hoặc cả hai đối số trong một biểu thức là YARN, chúng được coi là NUMBAR.

  • Nếu bất kỳ đối số nào không thể được truyền nội bộ một cách an toàn sang một kiểu số, thì nó không thành công với lỗi

Boolean

Toán tử boolean được áp dụng trên những giá trị có thể đúng hoặc sai. Các toán tử boolean làm việc trên TROOF như sau:

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.

Xin lưu ý rằng <m> và <n> trong cú pháp biểu thức ở trên được tự động chuyển thành giá trị TROOF nếu chúng chưa phải là Giá trị TROOF.

So sánh

Khi bạn muốn so sánh hai hoặc nhiều toán hạng trong LOLCODE, bạn có thể thực hiện theo bất kỳ phương pháp nào sau đây:

Phương pháp 1

Bạn có thể so sánh hai toán hạng nhị phân bằng cách sử dụng toán tử bình đẳng. Cú pháp được hiển thị bên dưới -

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

Phương pháp 2

Bạn có thể so sánh nếu cả hai giá trị đều thuộc loại NUMBR. Hãy nhớ rằng nếu một trong hai giá trị là NUMBAR, thì chúng được so sánh dưới dạng giá trị dấu phẩy động.

Phương pháp 3

Bạn cũng có thể thực hiện so sánh bằng cách sử dụng toán tử tối thiểu và tối đa. Cú pháp được hiển thị bên dưới -

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

Bạn có thể thấy kết quả sau khi thực thi mã đã cho:

sh-
4.3$ lci main.lo

TRUE

Kết hợp các giá trị

LOLCODE cho phép bạn nối một cách rõ ràng số lượng SỢI vô hạn bằng cách sử dụng toán tử SMOOSH… MKAY. Để nối, nhiều đối số có thể được phân tách bằngAN nhà điều hành.

Thí dụ

HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"

I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"

I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE

Đoạn mã đã cho ở trên sẽ tạo ra kết quả sau khi thực thi:

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

Loại Đúc

Các toán tử làm việc trên các kiểu cụ thể truyền ngầm hoặc chuyển đổi các giá trị của kiểu này sang kiểu khác một cách an toàn. Nếu giá trị không thể được chuyển đổi một cách an toàn sang kiểu khác, thì nó sẽ dẫn đến lỗi.

Giá trị của một biểu thức có thể được ép kiểu rõ ràng hoặc được chuyển đổi sang một số kiểu khác bằng toán tử MAEK nhị phân. Cú pháp của Toán tử MAEK là -

MAEK <expression> A <type>

trong đó, <type> có thể là một trong TROOF, YARN, NUMBR, NUMBAR hoặc NOOB.

Để ép kiểu một cách rõ ràng một biến sang một số kiểu khác, có thể sử dụng câu lệnh gán thông thường với toán tử MAEK hoặc có thể sử dụng câu lệnh gán kiểu như sau:

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

Thí dụ

HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food

BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE

Đoạn mã trên sẽ tạo ra kết quả sau:

sh-4.3$ lci main.lo
111.00033
111.00033

Chương này sẽ giải thích cho bạn cách nhập giá trị thông qua thiết bị đầu cuối LOLCODE và cách xuất giá trị đó vào thiết bị đầu cuối.

I / O từ Terminal

Bạn có thể sử dụng từ khóa VISIBLE để in nội dung nào đó trong LOLCODE. VISIBLE là một hàm có thể lấy vô số ký tự làm đầu vào và in tất cả chúng cùng một lúc bằng cách nối nội bộ chúng và chuyển đổi chúng thành chuỗi hoặc YARN.

Hàm VISIBLE kết thúc hoặc kết thúc bởi dấu phân cách, là dấu chấm cuối dòng hoặc dấu phẩy.

Đầu ra được trình biên dịch tự động kết thúc bằng ký tự xuống dòng. Nếu mã thông báo cuối cùng được kết thúc bằng biểu tượng dấu chấm than (!), Thì ký hiệu xuống dòng được trả về sẽ bị ký hiệu này đè lên.

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

Xin lưu ý rằng trong LOLCODE, hiện tại không có tiêu chuẩn xác định nào để in một số dữ liệu ra tệp.

Để lấy một số đầu vào từ người dùng, từ khóa được sử dụng là GIMMEH. Nó là một hàm có thể nhận bất kỳ số lượng biến nào làm đầu vào. Nó lấy YARN làm đầu vào và lưu trữ giá trị trong bất kỳ biến nhất định nào.

GIMMEH <any_variable>

Thí dụ

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

Khi mã này được chạy, nó sẽ yêu cầu bạn nhập một số và sau đó tự động in lại số đó ở dòng tiếp theo. Khi bạn chạy mã này, nó sẽ in ra kết quả sau:

sh-
4.3$ lci main.lo

TYPE SOMETHING AND ENTER
67

67

LOLCODE cho phép bạn kiểm soát luồng chương trình thông qua các câu lệnh khác nhau. Chương này giải thích các loại câu lệnh khác nhau có sẵn trong LOLCODE.

Tuyên bố biểu thức

Một biểu thức không có bất kỳ phép gán nào, tức là chỉ cần gọi một phép toán hoặc bất kỳ hàm nào, là một câu lệnh hợp pháp trong LOLCODE. Sau khi biểu thức được đánh giá, giá trị cuối cùng của nó được đặt trong IT biến tạm thời. Giá trị của CNTT vẫn nằm trong phạm vi cục bộ và tồn tại cho đến lần tiếp theo nó được thay thế bằng một biểu thức.

Tuyên bố bài tập

Các câu lệnh gán được sử dụng để gán đầu ra của bất kỳ biểu thức nào cho một biến nhất định. Chúng thường có dạng -

<any_variable> <assignment operator> <any expression>

Xin lưu ý rằng, bạn có thể sử dụng một biến trong biểu thức, ngay cả trước khi nó được gán.

Câu điều kiện

Câu lệnh If-Then

Câu lệnh if-then là một hoạt động rất đơn giản làm việc trên biến CNTT. Nó tương tự như câu lệnh if – else trong các ngôn ngữ lập trình khác như C và Java.

Có bốn từ khóa để áp dụng câu lệnh if – then.

  • HẢ?
  • YA RLY
  • KHÔNG CÓ WAI
  • OIC

Dạng chung là -

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

Tất cả các câu trên có thể được viết trên cùng một dòng được phân tách bằng dấu phẩy như:

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

Trong khi sử dụng câu lệnh if-then, một MEBBE tùy chọn <bất kỳ biểu thức nào> có thể được sử dụng giữa các khối YA RLY và NO WAI.

Nếu <bất kỳ biểu thức nào> sau MEBBE là True (WIN), thì khối đó được thực thi. Ngược lại, nếu biểu thức đó sai, khối sẽ bị bỏ qua cho đến khi có câu lệnh MEBBE, NO WAI hoặc OIC tiếp theo.

Thí dụ

<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

Thí dụ

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

Báo cáo tình huống

Trong LOLCODE, từ khóa 'WTF?' tương tự như chuyển đổi trong nhiều ngôn ngữ khác. Từ khóa WTF? lấy IT làm giá trị biểu thức để so sánh. Để sử dụng WTF, khối so sánh được mở bởi OMG, khối này phải là một ký tự chứ không phải một biểu thức.

Hãy nhớ rằng mỗi chữ phải là duy nhất, tương tự như trường hợp của các ngôn ngữ khác.

Khối OMG phải được kết thúc bằng một câu lệnh GTFO. Nếu một khối OMG không bị kết thúc bởi GTFO, thì khối OMG tiếp theo sẽ được thực thi cho đến khi đạt đến GTFO.

Nếu không có ký tự nào đánh giá là đúng, thì trường hợp mặc định được ký hiệu bởi 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

Kết quả đầu ra của đoạn mã trên sẽ là:

"E":

EFGH

Vòng lặp được sử dụng trong ngôn ngữ lập trình để thực thi một tập hợp các câu lệnh nhiều lần. Ví dụ: nếu bạn muốn in chữ số 5 trong năm lần, thì thay vì viếtVISIBLE “5” câu lệnh năm lần, bạn có thể chạy một vòng lặp với VISIBLE “5” tuyên bố cho năm lần.

Các vòng lặp đơn giản được biểu diễn bằng IM IN YR <nhãn> và IM OUTTA YR <nhãn>. Các vòng lặp được định nghĩa theo cách này là các vòng lặp vô hạn và chúng phải được kết thúc bằng một câu lệnh ngắt GTFO.

Các vòng lặp có cấu trúc sau:

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>

Xin lưu ý rằng bên trong thân hàm, có thể sử dụng UPPIN (tăng dần một), NERFIN (giảm một) hoặc bất kỳ hàm đơn phân nào.

Từ khóa TIL tính toán biểu thức dưới dạng TROOF: nếu nó đánh giá là FAIL, vòng lặp tiếp tục một lần nữa, nếu nó đánh giá là WIN, thì việc thực thi vòng lặp sẽ dừng lại và tiếp tục sau câu lệnh IM OUTTA YR phù hợp.

Từ khóa WILE ngược lại với từ khóa TIL, nếu biểu thức là WIN thì việc thực thi tiếp tục, ngược lại thì vòng lặp sẽ thoát ra.

Thí dụ

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

Khi mã trên được biên dịch trên bất kỳ trình biên dịch LOLCODE nào hoặc trên nền tảng mã hóa trực tuyến của chúng tôi, điều này sẽ tạo ra kết quả sau.

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

Các hàm rất hữu ích trong lập trình vì chúng giảm bớt thời gian và công sức cho việc viết lại mã. Một mã chức năng được viết tốt mang lại khả năng tái sử dụng cao. Chương này giải thích cho bạn cách viết và làm việc với các hàm trong LOLCODE.

Định nghĩa của một hàm

Hàm là một tập hợp các câu lệnh được thực hiện cùng một lúc bằng cách gọi hàm đó. Trong LOLCODE, định nghĩa của một hàm bắt đầu bằng từ khóa “HOW IZ I” và từ khóa đóng là “IF U SAY SO”.

Cú pháp để viết một hàm trong LOLCODE là−

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

Điểm quan trọng

Hãy xem xét các điểm quan trọng sau đây khi bạn định nghĩa một hàm LOLCODE:

  • Trong LOLCODE, hàm chỉ có thể chấp nhận một số đối số cố định nhất định làm đầu vào.

  • Các đối số hoặc tham số, là các định danh trở thành một biến cho hàm.

  • Các hàm trong LOLCODE không thể truy cập bất kỳ giá trị nào khác ngoài các giá trị được chuyển cho chúng dưới dạng đối số.

Trả về giá trị từ một hàm

Trả lại trong mã hóa có nghĩa là một cái gì đó được trả lại. Trong lập trình, một hàm có thể trả về một số giá trị cho chương trình khi quá trình thực thi của nó hoàn tất. Trong LOLCODE, các hàm trả về các giá trị khác nhau như được giải thích bên dưới:

  • FOUND YR <any_expression> trả về giá trị của biểu thức khi khối chức năng được thực thi hoàn toàn.

  • GTFO không trả về giá trị (NOOB), tương tự như return 0 bằng các ngôn ngữ lập trình khác như C và Java.

  • Nếu không tìm thấy câu lệnh trả lại nào khác, thì IF U SAY SO được thực thi và giá trị trong biến IT được trả về.

Chức năng gọi điện

Một hàm được định nghĩa trong phần thân của chương trình và sau đó được gọi để thực thi. Một hàm chấp nhận một số đối số nhất định được gọi như hình dưới đây:

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

Trong khi gọi một hàm, biểu thức được hình thành bởi tên hàm, theo sau là số lượng đối số mà hàm sẽ chấp nhận. Các đối số này có thể là các biến đơn giản hoặc bất kỳ biểu thức nào. Nếu một hàm chấp nhận bất kỳ biểu thức nào thay vì một giá trị đơn giản, thì giá trị của biểu thức sẽ được tính trước khi hàm được gọi.

Hãy nhớ rằng số lượng đối số mà một hàm sẽ chấp nhận, phải được xác định trong định nghĩa của hàm.

Thí dụ

HAI

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

VISIBLE MAINUMBA

KTHXBYE

Khi bạn chạy đoạn mã trên, nó sẽ yêu cầu một đầu vào và sau đó khi bạn gửi đầu vào, bạn sẽ thấy kết quả giống như vậy. Ví dụ, nếu chúng ta nhập 55, nó sẽ in ra 55.

Thí dụ

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

Hàm trên thực hiện phép nhân các toán hạng đầu vào sẽ in ra kết quả sau khi bạn chạy nó−

sh-
4.3$ lci main.lo

6

Thí dụ

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

Đầu ra mà đoạn mã trên sẽ tạo ra là:

sh-
4.3$ lci main.lo 
OBJECT1

Xử lý ngoại lệ là một trong những cơ chế mạnh mẽ để xử lý các lỗi thời gian chạy để có thể duy trì luồng bình thường của ứng dụng. LOLCODE không có nhiều hỗ trợ xử lý ngoại lệ như các Ngôn ngữ lập trình khác. Tương tự như khối Try-Catch trong các ngôn ngữ khác, LOLCODE có khối PLZ.

Ví dụ: nếu bạn muốn mở một tệp có thể tồn tại hoặc không, hãy sử dụng -

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

Mã có thể gây ra ngoại lệ được viết trong khối PLZ và ngoại lệ được xử lý trong khối O NOES. Ở đây, từ khóa INVISIBLE sẽ gửi một thông báo bên trong đến trình gỡ lỗi.

Xin lưu ý rằng vì LOLCODE không được bảo trì thường xuyên, nên không có thêm bản cập nhật nào để xử lý ngoại lệ LOLCODE và nhiều tính năng khác.

Các chương trước đã giải thích cho bạn cách lập trình trong LOLCODE. Trong chương này, bạn sẽ tìm hiểu một số ví dụ cho phép bạn viết mã ở cấp độ nâng cao trong LOLCODE.

Ví dụ 1: Chương trình tính lũy thừa của một số

Trong ví dụ này, bạn sẽ tìm thấy mã để tính toán sức mạnh của một số đầu vào. Ví dụ, 2 được nâng lên lũy thừa 4 bằng 16.

HAI 1.2
HOW IZ I POWERTWO YR NUM
   BTW RETURN 1 IF 2 TO POWER OF 0
   BOTH SAEM NUM AN 0, O RLY?
   YA RLY, FOUND YR 1
   OIC
  
   BTW CALCULATE 2 TO POWER OF NUM
   I HAS A INDEX ITZ 0
   I HAS A TOTAL ITZ 1
   IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX AN NUM
   TOTAL R PRODUKT OF TOTAL AN 2
   IM OUTTA YR LOOP
  
   FOUND YR TOTAL
   IF U SAY SO
   BTW OUTPUT: 8
   VISIBLE I IZ POWERTWO YR 4 MKAY
KTHXBYE

Đoạn mã trên sẽ in kết quả sau khi nó chạy thành công:

sh-
4.3$ lci main.lo
16

Ví dụ 2: Chương trình tạo mảng

Ví dụ này cho thấy mã để tạo một mảng có năm phần tử và mỗi phần tử có giá trị 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

Bạn có thể thấy kết quả sau khi thực thi đoạn mã trên:

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

Ví dụ 3: Chương trình tính giai thừa của một số

Chương trình này hiển thị mã để tính giai thừa của một số đầu vào.

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

Chương trình trên in ra giai thừa của số 6 và bạn có thể thấy kết quả như hình dưới đây:

sh-
4.3$ lci main.lo

720

Ví dụ 4: Chương trình thiết kế máy tính

Bạn có thể thiết kế một máy tính để thực hiện các phép toán cơ bản bằng lập trình LOLCODE. Hãy quan sát đoạn mã dưới đây -

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

Khi chúng tôi thực hiện chương trình trên với đầu vào sau:

3
4
+

Khi thực thi, chương trình trên sẽ tạo ra kết quả sau:

VALUE1
VALUE2
Choose Operation? + - * /
7