Учебники

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

Введение и настройка среды

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

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

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

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

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

  • Нажмите Ctrl + Пробел, введите Терминал и нажмите клавишу ввода / возврата
  • Запустить в терминальном приложении
  • $ git clone https://github.com/justinmeza/lci.git
  • $ cd lci
  • $ cmake.
  • $ make && make install

Установка на Windows

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

  • Сначала добавьте MinGW и Python в путь переменных вашей среды. Для этого щелкните правой кнопкой мыши на « Мой компьютер», выберите « Свойства», затем выберите « Дополнительные параметры системы». Выберите переменные среды . В этом поле выберите переменную PATH и нажмите « Изменить» .

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

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

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

Сначала добавьте MinGW и Python в путь переменных вашей среды. Для этого щелкните правой кнопкой мыши на « Мой компьютер», выберите « Свойства», затем выберите « Дополнительные параметры системы». Выберите переменные среды . В этом поле выберите переменную PATH и нажмите « Изменить» .

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

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

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

Выполнение скрипта онлайн с TutorialsPoint — codingground

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

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

Lolcode — Синтаксис

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

Формирует

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

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

КСТАТИ

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

2

ВНИЗ <переменная> !! <раз>

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

3

GIMMEH <переменная>

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

4

GTFO

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

5

HAI

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

6

HEREZ <ярлык>

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

7

У меня есть <тип> <переменная>

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

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

  • NUMBAH (int)
  • ДЕЦИНУМБАХ (двойной)
  • WORDZ (std :: string)

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

8

IM IN YR LOOP

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

9

IZ <expr1> <оператор> <expr2> ?: условная структура

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

10

KTHX

Это заканчивается блок. Соответствует }

11

KTHXBAI

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

12

NOWAI

Это соответствует другому

13

PURR <expr>

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

14

RELSE

Это соответствует другому (если)

15

СЪ

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

16

UP <переменная> !! <раз>

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

17

VISIBLE <expr>

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

18

Ярли

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

КСТАТИ

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

ВНИЗ <переменная> !! <раз>

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

GIMMEH <переменная>

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

GTFO

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

HAI

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

HEREZ <ярлык>

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

У меня есть <тип> <переменная>

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

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

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

IM IN YR LOOP

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

IZ <expr1> <оператор> <expr2> ?: условная структура

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

KTHX

Это заканчивается блок. Соответствует }

KTHXBAI

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

NOWAI

Это соответствует другому

PURR <expr>

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

RELSE

Это соответствует другому (если)

СЪ

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

UP <переменная> !! <раз>

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

VISIBLE <expr>

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

Ярли

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

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

  • Привет привет
  • KTHXBYE все в порядке, спасибо, пока
  • Кстати, кстати
  • OBTW — о, кстати
  • TLDR слишком длинный; не читал

Пробелы

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

запятая

Запятая ведет себя как ключевое слово newline в большинстве языков, например, \ 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 можно запомнить как «Хорошо, спасибо, пока» .

пример

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

Lolcode — переменные

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

Область Переменных

Область видимости переменной является локальной для функции или для программного блока, т.е. переменная, определенная в одной области видимости, не может быть вызвана в любой другой области действия той же программы. Переменные доступны только после их объявления.

Обратите внимание, что в LOLCODE нет глобальной области видимости переменных.

Соглашения об именах

Имена переменных обычно называются идентификаторами. Вот некоторые соглашения для именования переменных в LOLCODE:

  • Идентификаторы переменных могут быть прописными или строчными буквами (или их сочетанием).

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

  • LOLCODE не позволяет использовать пробелы, тире или другие символы при именовании переменной.

  • Идентификаторы переменных чувствительны к регистру.

Идентификаторы переменных могут быть прописными или строчными буквами (или их сочетанием).

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

LOLCODE не позволяет использовать пробелы, тире или другие символы при именовании переменной.

Идентификаторы переменных чувствительны к регистру.

Вот некоторые правила для допустимых и недействительных имен для переменных в LOLCODE-

  • Название всегда должно начинаться с алфавита. Например, имя, имя действительны.

  • Имя переменной не может начинаться с цифры. Например, 2var недействителен.

  • Имя переменной не может начинаться со специального символа.

  • Переменная может содержать _ или цифру в любом месте своего имени, за исключением начального индекса. Например, name2_m является допустимым именем.

Название всегда должно начинаться с алфавита. Например, имя, имя действительны.

Имя переменной не может начинаться с цифры. Например, 2var недействителен.

Имя переменной не может начинаться со специального символа.

Переменная может содержать _ или цифру в любом месте своего имени, за исключением начального индекса. Например, name2_m является допустимым именем.

Некоторые примеры допустимых имен в LOLCODE показаны ниже —

Live Demo

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

пример

Live Demo

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

пример

Live Demo

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)
  • плавает (ЧИСЛО)
  • и логическое значение (TROOF)
  • Массивы (БУККИТ)

В LOLCODE тип переменной динамически обрабатывается компилятором. Если переменная не имеет начального значения, она называется нетипизированной (известной как NOOB в LOLCODE).

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

Чтобы определить нетипизированную переменную, просто объявите переменную и присвойте значение, как показано в этом примере —

Live Demo

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

Booleans (TROOFS)

В LOLCODE логические значения бывают двух типов. BOOLEAN обычно имеют два значения — true и false. Но в LOLCODE логическое значение известно как TROOF, а значения true / false известны как WIN / FAIL соответственно. Все неинициализированные значения, такие как пустая строка («») или пустой массив, будут преобразованы в FAIL. Все остальные инициализированные значения оцениваются как WIN.

пример

Live Demo

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

пример

Live Demo

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)

  • : « -» после двоеточия представляет буквальную двойную кавычку («)

  • :: — двоеточие, следующее за двоеточием, представляет собой одно буквенное двоеточие (:)

🙂 — Закрывающая скобка после двоеточия представляет новую строку (\ n)

:> — Закрывающая угловая скобка после двоеточия представляет вкладку (\ t)

: o — Символ «o», следующий за двоеточием, представляет колокол (звуковой сигнал) (\ g)

: « -» после двоеточия представляет буквальную двойную кавычку («)

:: — двоеточие, следующее за двоеточием, представляет собой одно буквенное двоеточие (:)

пример

Live Demo

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

пример

Live Demo

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

пример

Live Demo

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.

  • Если какой-либо из аргументов не может быть безопасно приведен к числовому типу, он завершается с ошибкой

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

пример

Live Demo

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 позволяет вам явно объединять бесконечное число YARN с помощью оператора SMOOSH… MKAY. Для объединения нескольких аргументов можно разделить оператором AN .

пример

Live Demo

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>

пример

Live Demo

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 и как вывести его на терминал.

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

Вы можете использовать ключевое слово 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 — очень простая операция, работающая с переменной IT. Это похоже на операторы if-else в других языках программирования, таких как C и Java.

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

  • O RLY?
  • YA RLY
  • НЕТ WAI
  • ОИК

Общая форма —

<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 имеет значение True (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.

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

пример

Live Demo

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 определение функции начинается с ключевого слова «КАК 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 функция может принимать только определенное фиксированное количество аргументов в качестве входных данных.

Аргументы или параметры — это идентификаторы, которые становятся переменной для функции.

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

Возвращаемое значение из функции

Возврат в кодировке означает то, что возвращается. При программировании функция может возвращать некоторое значение программе, когда ее выполнение завершено. В LOLCODE функции возвращают переменные значения, как описано ниже —

  • FOUND YR <any_expression> возвращает значение выражения, когда функциональный блок выполняется полностью.

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

  • Если другой оператор возврата не найден, выполняется IF U SAY SO и возвращается значение в переменной IT.

FOUND YR <any_expression> возвращает значение выражения, когда функциональный блок выполняется полностью.

GTFO не возвращает значения (NOOB), что аналогично возвращению 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

пример

Live Demo

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.

Live Demo

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.

Live Demo

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: Программа для вычисления факториала числа

Эта программа показывает код для вычисления факториала входного числа.

Live Demo

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
+

После выполнения вышеуказанная программа сгенерирует следующий вывод: