Lolcode - Краткое руководство

LOLCODE - это эзотерический язык программирования, вдохновленный забавными вещами в Интернете. Он предназначен для проверки границ проектирования языков программирования.

Эта глава познакомит вас с настройкой локальной среды для LOLCODE, его установкой в ​​Windows и выполнением его сценария в Интернете на Tutorialspoint-codingground.

Настройка локальной среды

Интерпретатор LOLCODE написан на языке C. Он интерпретирует код, написанный на языке LOLCODE, на нескольких платформах. Интерпретатор LOLCODE известен как lci, что означает интерпретатор LOLCODE.

Обратите внимание, что LOLCODE официально поддерживает прямую установку интерпретатора только для операционных систем MAC. Чтобы установить LOLCODE в вашей операционной системе, вам необходимо выполнить следующие шаги:

  • Нажмите Command + Пробел и введите Terminal и нажмите enter/return ключ
  • Запустить в приложении Терминал
  • $ git clone https://github.com/justinmeza/lci.git
  • $ cd lci
  • $ cmake.
  • $ make && сделать установку

Установка в Windows

Если вам нужно установить LOLCODE в операционной системе Windows, выполните следующие действия:

  • Сначала добавьте MinGW и Python в свой путь к переменным среды. Для этого щелкните правой кнопкой мыши наMy Computer, выберите Properties, затем выберите Advanced system settings. Выбрать Environment Variables. В этом поле выберитеPATH переменная, а затем щелкните Edit.

  • Теперь добавьте "; C: \ MinGW \ bin; C: \ Python32" в конец этого пути.

  • Затем откройте Command Prompt и перейдите в каталог проекта, например, с помощью команды «cd».

  • Запускаем скрипт install.py.

Выполнение скрипта онлайн с помощью TutorialsPoint - codingground

Чтобы легко и быстро выполнять сценарии, используйте платформу Codingground, предоставляемую TutorialsPoint. Для этого перейдите по следующей ссылке, чтобы выполнить свои скрипты в Интернете -

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

LOLCODE имеет другой синтаксис по сравнению с другими языками программирования, однако его легче запомнить. В этой главе дается основной синтаксис LOLCODE.

Конструкции

Конструкции LOLCODE - это жаргонные слова. В следующей таблице показан алфавитный список реализованных конструкций:

Sr. No. Построение и использование
1

BTW

Начинается однострочный комментарий.

2

DOWN <variable>!!<times>

Это соответствует переменной = переменная - раз. Обратите внимание, что «times» - это языковое расширение только для wut.

3

GIMMEH <variable>

Это представляет собой оператор ввода.

4

GTFO

Это похоже на break на других языках и позволяет выйти из цикла.

5

HAI

Это соответствует main ()работают на других языках. Это точка входа в программу в LOLCODE.

6

HEREZ <label>

Это еще одно языковое расширение, предназначенное только для wut, и объявляет метку для использования с SHOO

7

I HAS A <type> <variable>

Это объявляет переменную указанного типа.

В LOLCODE есть три встроенных типа:

  • ЧИСЛО (число)
  • ДЕЦИНУМБА (двойной)
  • WORDZ (std :: строка)

Обратите внимание, что типы являются расширением только для языка.

8

IM IN YR LOOP

Это запускает бесконечный цикл. Единственный способ выйти из цикла - использовать GTFO. Соответствует для(;;) на других языках

9

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

Это похоже на оператор if в других языках. Оператор является одним из: БОЛЬШЕ, МЕНЬШЕ, ЧЕМ SAEM AS. Обратите внимание, что? в конце не является обязательным.

10

KTHX

Это завершает блок. Соответствует}

11

KTHXBAI

Это завершает программу

12

NOWAI

Это соответствует else

13

PURR <expr>

Это выводит на экран аргумент, за которым следует новая строка. Это языковое расширение только для wut.

14

RELSE

Это соответствует else (if)

15

SHOO

Это еще одно расширение языка, предназначенное только для wut, которое соответствует goto (ужас!)

16

UP <variable>!!<times>

Это соответствует переменным = переменная + время. Здесь "times" - это расширение языка только для wut.

17

VISIBLE <expr>

Это выводит аргумент на экран. Обратите внимание, что это не печатает новую строку.

18

YARLY

Это означает начало «истинного» условного блока.

Некоторые примеры сленговых терминов в LOLCODE:

  • HAI привет
  • KTHXBYE в порядке, спасибо, пока
  • Кстати, это кстати
  • OBTW - это кстати
  • TL; DR слишком длинный; не читал

Пробел

В большинстве языков программирования ключевые слова или токены не могут иметь пробелов между ними. Однако в некоторых языках пробелы используются в токенах, чтобы различать их.

Запятая

Запятая ведет себя как ключевое слово новой строки в большинстве языков, например, \n в Java и C. В LOLCODE можно записать множество команд в одной строке при условии, что вы разделите их запятой (,).

Три периода (…)

Три точки (…) позволяют объединить несколько строк кода в одну строку или одну команду, включив (...) в конец строки. Это заставляет компилятор рассматривать содержимое следующей строки только как содержимое предыдущей строки. Бесконечные строки кода можно записать вместе как одну команду, если каждая строка заканчивается тремя точками.

Комментарий заканчивается новой строкой. Обратите внимание, что продолжение строки (...) и (,) после комментария (BTW) игнорируются lci.

Комментарии

Однострочные комментарии пишутся после ключевого слова 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 -

  • Имя всегда должно начинаться с алфавита. Например,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".

Объявление и присвоение переменных

Чтобы declareпеременная LOLCODE предоставляет ключевое слово «I HAS A», за которым следует имя переменной. Ниже вы можете найти синтаксис объявления переменной.

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

Чтобы assignпеременной значение в том же операторе, вы можете после имени переменной поставить «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

Вы также можете declare и assign переменные одновременно, используя следующий синтаксис -

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 (например, путем его печати) обрезает вывод до двух знаков после запятой по умолчанию.

пример

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:

  • струны (ПРЯЖА)
  • целые числа (NUMBR)
  • поплавки (NUMBAR)
  • и логические (TROOF)
  • Массивы (БУККИТ)

В 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 приводит к ошибке.

Явное приведение типа данных 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 логические значения бывают двух типов. BOOLEAN обычно имеет два значения - истину и ложь. Но в 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 означает целое число. Любая последовательность цифр рассматривается как ЧИСЛО, если десятичная дробь не появляется где-либо между ними. Чтобы сделать любое число отрицательным, ему может предшествовать дефис (-), обозначающий отрицательное число.

пример

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 без десятичной дроби.

Струны (ПРЯЖА)

В LOLCODE значение, содержащее строки, т.е. строковые литералы (YARN), должно начинаться и заканчиваться двойными кавычками («»).

Внутри строки может быть написано что угодно, например пробел, запятая, точка, восклицательный знак или любой другой символ. Строка, в которой отсутствует одна кавычка, может вызвать ошибку. Двоеточие используются как escape-символы в 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 можно объявить следующим образом -

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 может также обращаться к переменным и другим функциям BUKKIT, используя ME'Z [var] или ME IZ [имя функции] (YR [аргумент1] (AN YR [аргумент2] (AN YR [аргумент3] ... ))) МКАЙ.

пример

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 и их использование.

Операторы

Математические операторы зависят от обозначения префикса, т.е. обозначения, которое стоит перед операндом. Когда всем операторам известно количество аргументов или операндов, маркеры группировки не требуются. В случаях, когда операторы не имеют фиксированных аргументов или операндов, операция закрывается с помощью 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

Каждое из <a> и <b> может быть уникальным выражением из приведенного выше, поэтому математические операторы могут быть вложены и сгруппированы бесконечно.

Математика выполняется с учетом аргументов как целочисленной математики при наличии двух чисел 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.

Обратите внимание, что <m> и <n> в приведенном выше синтаксисе выражения автоматически приводятся как значения TROOF, если они еще не являются значениями TROOF.

Сравнение

Если вы хотите сравнить два или более операндов в 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. Помните, что если любое из значений - ЧИСЛО, то они сравниваются как значения с плавающей запятой.

Способ 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>

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

Вы можете увидеть следующий вывод при выполнении данного кода -

sh-
4.3$ lci main.lo

TRUE

Конкатенация ценностей

LOLCODE позволяет вам явно объединять бесконечное количество ПРЯЖИ с помощью оператора SMOOSH… MKAY. Для конкатенации несколько аргументов можно разделить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>

где <тип> может быть одним из TROOF, YARN, NUMBR, NUMBAR или NOOB.

Чтобы явно привести переменную к какому-либо другому типу, можно использовать обычный оператор присваивания с оператором 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
111.00033

В этой главе объясняется, как ввести значение через терминал LOLCODE и как вывести его на терминал.

Ввод / вывод с терминала

Вы можете использовать ключевое слово 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. После вычисления выражения его окончательное значение помещается во временную переменную IT. Значение IT остается в локальной области видимости и существует до следующего раза, когда оно будет заменено выражением.

Заявления о присвоении

Операторы присваивания используются для присвоения вывода любого выражения данной переменной. Обычно они имеют вид -

<any_variable> <assignment operator> <any expression>

Обратите внимание, что вы можете использовать переменную в выражении даже до того, как она будет назначена.

Условные утверждения

Если-то утверждения

Оператор if-then - это очень простая операция, работающая с переменной IT. Это похоже на операторы if – else в других языках программирования, таких как C и Java.

Есть четыре ключевых слова для применения операторов if – then.

  • О РЛИ?
  • 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, истинно (WIN), то этот блок выполняется. В противном случае, если это выражение ложно, блок пропускается до следующих операторов MEBBE, NO WAI или OIC.

пример

<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

Заявления по делу

В LOLCODE ключевое слово WTF? аналогично переключению во многих других языках. Ключевое слово WTF? принимает IT как значение выражения для сравнения. Чтобы использовать WTF, 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

Циклы используются в языках программирования для многократного выполнения набора операторов. Например, если вы хотите напечатать цифру 5 пять раз, вместо того, чтобы писатьVISIBLE “5” оператор пять раз, вы можете запустить цикл с одним VISIBLE “5” заявление пять раз.

Простые циклы представлены с помощью IM IN YR <метка> и IM OUTTA YR <метка>. Циклы, определенные таким образом, являются бесконечными циклами, и они должны заканчиваться оператором прерывания GTFO.

Циклы итераций имеют следующую структуру -

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 определение функции начинается с ключевого слова «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 <any_expression> возвращает значение выражения, когда функциональный блок выполнен полностью.

  • GTFO не возвращает значения (NOOB), что похоже на return 0 на других языках программирования, таких как C и Java.

  • Если другой оператор возврата не найден, тогда 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 не имеет большой поддержки обработки исключений, как другие языки программирования. Подобно блоку 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.

Пример 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