Введение и настройка среды
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 есть три встроенных типа —
Обратите внимание, что типы являются расширением языка только для 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 показаны ниже —
HAI 1.2 I HAS A food ITZ "111.00033" I HAS A food2 ITZ "111" I HAS A fo_od ITZ "1" VISIBLE food VISIBLE food2 VISIBLE fo_od KTHXBYE
Все операторы объявления в приведенном выше коде являются действительными и при выполнении выдают следующий вывод:
sh-4.3$ lci main.lo 111.00033 111 1
Некоторые примеры неверных утверждений и их вывод приведены ниже —
Пример 1
HAI 1.2 I HAS A 2food ITZ "111.00033" KTHXBYE
Приведенный выше код даст следующий вывод при его выполнении —
sh- 4.3$ lci main.lo Line 2: Expected: identifier; Got: int(2).
Пример 2
HAI 1.2 I HAS A _food ITZ "111.00033" KTHXBYE
Приведенный выше код даст следующий вывод при его выполнении —
sh- 4.3$ lci main.lo Line 2: Unrecognized sequence at: _food ITZ "111.00033".
Пример 3
HAI 1.2 I HAS A f$ood ITZ "111.00033" KTHXBYE
Приведенный выше код даст следующий вывод при его выполнении —
sh- 4.3$ lci main.lo Line 2: Unrecognized sequence at: $ood ITZ "111.00033".
Объявление и присвоение переменных
Чтобы объявить переменную, LOLCODE предоставляет ключевое слово «I HAS A», за которым следует имя переменной. Ниже вы можете найти синтаксис объявления переменной.
I HAS A VAR BTW VAR is empty now, You can use any name instead of var
Чтобы присвоить переменной значение в том же операторе, вы можете затем следовать имени переменной с помощью «ITZ» и затем дать значение, которое вы хотите присвоить. Используйте следующий синтаксис для присвоения значения переменной —
<variable> R <expression>
пример
VAR R "Green" BTW VAR is now a YARN and equals "Green" VAR R 30 BTW VAR is now a NUMBR and equals 30
Вы также можете одновременно объявлять и назначать переменные, используя следующий синтаксис:
I HAS A VAR ITZ VALUE
пример
I HAS A NAME ITS “TUTORIALS POINT”
пример
HAI 1.2 BTW this is how we declare variables I HAS A food I HAS A bird BTW this is how we assign variables food R 1 bird R 5 BTW this is how initialize variables I HAS A biz ITZ "OMG!" VISIBLE food VISIBLE biz VISIBLE bird KTHXBYE
Вышеприведенная программа показывает объявление переменных и печатает их. Выход —
sh- 4.3$ lci main.lo 1 OMG! 5
Тип литья
Чтобы преобразовать значение одного типа в другой тип, мы используем приведение типов. Приведение NUMBAR к NUMBR усекает десятичную часть числа с плавающей запятой. Приведение NUMBAR к YARN (например, путем печати) усекает вывод до 2 десятичных знаков по умолчанию.
пример
HAI 1.2 I HAS A food ITZ "111.00033" VISIBLE food BTW this is how we do type casting MAEK food A NUMBAR VISIBLE food KTHXBYE
Приведенная выше строка кода даст следующий вывод:
sh-4.3$ lci main.lo 111.00033 111.00033
Все переменные, объявленные в программе LOLCODE, являются локальными переменными, и на этом языке нет глобальной области видимости для любой переменной.
Lolcode — Типы
LOLCODE предназначен для проверки границ дизайна языка программирования. Это эзотерический язык программирования, вдохновленный забавными вещами в Интернете. Эта глава дает вам понимание типов LOLCODE.
Типы
В настоящее время типы переменных в LOLCODE:
- струны (YARN)
- целые числа (NUMBR)
- плавает (ЧИСЛО)
- и логическое значение (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 (т.е. типов, которые неинициализированы и не имеют никакого начального значения) приводит к нулевым значениям для всех других типов.
Чтобы определить нетипизированную переменную, просто объявите переменную и присвойте значение, как показано в этом примере —
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.
пример
HAI 1.2 I HAS A VAR3 ITZ A TROOF VAR3 R "FAIL" VISIBLE VAR3 KTHXBYE
Вы можете увидеть следующий вывод при выполнении вышеуказанного кода —
sh-4.3$ lci main.lo FAIL
Числовые типы (NUMBR)
В LOLCODE NUMBR обозначает целое число. Любая последовательность цифр рассматривается как NUMBR, если только она не имеет десятичной дроби, встречающейся где-либо между последовательностями. Чтобы сделать любое число отрицательным, ему может предшествовать дефис (-), который обозначает отрицательное число.
пример
HAI 1.2 I HAS A VAR3 ITZ A NUMBR VISIBLE VAR3 KTHXBYE
Приведенный выше код показывает следующий результат при запуске
sh- 4.3$ lci main.lo 0
Подобно NUMBR, LOLCODE имеет другой тип данных, который представляет собой десятичную дробь или число с плавающей точкой во многих языках программирования. В LOLCODE NUMBAR — это число с плавающей запятой, содержащее одну десятичную точку. Преобразование NUMBAR в NUMBR усекает десятичную часть числа с плавающей запятой и возвращает его как NUMBR без десятичной запятой.
Струны (ЯРНА)
В LOLCODE значение, содержащее строки, то есть строковые литералы (YARN), должно начинаться и заканчиваться двойными кавычками («»).
Внутри строки может быть написано что угодно, например, пробел, запятая, точка, восклицательный знак или любой другой символ. Строка, в которой отсутствует какая-либо одиночная кавычка, может вызвать ошибку. Двоеточие используются в качестве escape-символов в LOLCODE, и любое значение после двоеточия приобретает особое значение.
-
🙂 — Закрывающая скобка после двоеточия представляет новую строку (\ n)
-
:> — Закрывающая угловая скобка после двоеточия представляет вкладку (\ t)
-
: o — Символ «o», следующий за двоеточием, представляет колокол (звуковой сигнал) (\ g)
-
: « -» после двоеточия представляет буквальную двойную кавычку («)
-
:: — двоеточие, следующее за двоеточием, представляет собой одно буквенное двоеточие (:)
🙂 — Закрывающая скобка после двоеточия представляет новую строку (\ n)
:> — Закрывающая угловая скобка после двоеточия представляет вкладку (\ t)
: o — Символ «o», следующий за двоеточием, представляет колокол (звуковой сигнал) (\ g)
: « -» после двоеточия представляет буквальную двойную кавычку («)
:: — двоеточие, следующее за двоеточием, представляет собой одно буквенное двоеточие (:)
пример
HAI 1.2 I HAS A VAR3 ITZ A YARN VAR3 R "XYZ" VISIBLE VAR3 KTHXBYE
Приведенный выше код производит следующий вывод при исполнении —
sh- 4.3$ lci main.lo XYZ
Bukkit
Этот тип представляет массив. Он имеет именованные слоты, которые могут содержать переменные или функции. BUKKIT может быть объявлен следующим образом —
BTW declaration of the BUKKIT I HAS A [object] ITZ A BUKKIT BTW creating a variable in a slots [object] HAS A [var] ITZ [value] BTW creating a function inside the BUKKIT HOW IZ [object] [function name] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ...))) [function code] IF U SAY SO
Функция внутри BUKKIT может также обращаться к переменным и другим функциям 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 — Операторы
Операторы играют важную роль для выполнения различных операций с переменными. Эта глава знакомит вас с различными операторами в 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.
-
Если какой-либо из аргументов не может быть безопасно приведен к числовому типу, он завершается с ошибкой
Если один или оба аргумента в выражении являются 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>
пример
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 .
пример
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 — ввод / вывод
В этой главе объясняется, как ввести значение через терминал 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, выполнение продолжается, в противном случае цикл завершается.
пример
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
пример
HAI 1.2 I HAS A STRINGARRAY ITZ A BUKKIT STRINGARRAY HAS A VAR17 ITZ "OBJECT1" STRINGARRAY HAS A VAR18 ITZ "OBJECT2" HOW IZ STRINGARRAY ACCESS YR VARIABLE FOUND YR STRINGARRAY'Z SRS VARIABLE IF U SAY SO I HAS A STRING ITZ "VAR17" VISIBLE STRINGARRAY IZ ACCESS YR STRING MKAY KTHXBYE
Вывод, который произведет приведенный выше код:
sh- 4.3$ lci main.lo OBJECT1
Lolcode — обработка исключений
Обработка исключений является одним из мощных механизмов обработки ошибок времени выполнения, позволяющих поддерживать нормальный поток приложения. LOLCODE не имеет большой поддержки для обработки исключений, как другие языки программирования. Подобно блоку Try-Catch на других языках, LOLCODE имеет PLZ-блок.
Например, если вы хотите открыть файл, который может существовать или не существовать, используйте —
PLZ OPEN FILE "filename.TXT"? AWSUM THX VISIBLE FILE O NOES INVISIBLE "ERROR!" KTHX
Код, который может вызвать исключение, записывается в блоке PLZ, а исключение обрабатывается в блоке O NOES. Здесь ключевое слово INVISIBLE отправляет внутреннее сообщение отладчику.
Обратите внимание, что поскольку LOLCODE не поддерживается регулярно, больше нет доступных обновлений для обработки исключений LOLCODE и многих других функций.
Lolcode — еще несколько примеров
В предыдущих главах объяснялось программирование в LOLCODE. В этой главе вы узнаете несколько примеров, которые позволяют вам писать код на продвинутом уровне в LOLCODE.
Пример 1: Программа для вычисления мощности числа
В этом примере вы найдете код для расчета мощности входного числа. Например, 2, возведенное в степень 4, равно 16.
HAI 1.2 HOW IZ I POWERTWO YR NUM BTW RETURN 1 IF 2 TO POWER OF 0 BOTH SAEM NUM AN 0, O RLY? YA RLY, FOUND YR 1 OIC BTW CALCULATE 2 TO POWER OF NUM I HAS A INDEX ITZ 0 I HAS A TOTAL ITZ 1 IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX AN NUM TOTAL R PRODUKT OF TOTAL AN 2 IM OUTTA YR LOOP FOUND YR TOTAL IF U SAY SO BTW OUTPUT: 8 VISIBLE I IZ POWERTWO YR 4 MKAY KTHXBYE
Приведенный выше код напечатает следующий вывод после успешного выполнения:
sh- 4.3$ lci main.lo 16
Пример 2: Программа для создания массива
В этом примере показан код для создания массива из пяти элементов и каждого элемента со значением 10.
HAI 1.3 OBTW CREATES A ONE DIMENSIONAL ARRAY WITH N ELEMENTS, EACH IS A 0 TLDR HOW IZ I MAKEMATRIX YR N I HAS A MATRIX ITZ A BUKKIT IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX N MATRIX HAS A SRS INDEX ITZ 10 IM OUTTA YR LOOP FOUND YR MATRIX IF U SAY SO I HAS A N ITZ 5 I HAS A MATRIX ITZ A BUKKIT MATRIX R I IZ MAKEMATRIX YR N MKAY BTW PRINTS THE CONTENTS OF THE ARRAY IM IN YR LOOP UPPIN YR INDEX TIL BOTH SAEM INDEX N VISIBLE MATRIX'Z SRS INDEX IM OUTTA YR LOOP KTHXBYE
Вы можете увидеть следующий вывод при выполнении вышеуказанного кода —
sh-4.3$ lci main.lo 10 10 10 10 10
Пример 3: Программа для вычисления факториала числа
Эта программа показывает код для вычисления факториала входного числа.
HAI 1.3 HOW IZ I FACTORIAL YR N BOTH SAEM N AN 0 O RLY? YA RLY, FOUND YR 1 NO WAI FOUND YR PRODUKT OF N AN I IZ FACTORIAL YR DIFF OF N AN 1 MKAY OIC IF U SAY SO VISIBLE I IZ FACTORIAL YR 6 MKAY KTHXBYE
Приведенная выше программа печатает факториал числа 6, и вы можете увидеть результат, как показано ниже —
sh- 4.3$ lci main.lo 720
Пример 4: Программа для разработки калькулятора
Вы можете сконструировать калькулятор для выполнения основных математических операций с использованием программирования LOLCODE. Соблюдайте код, указанный ниже —
HAI 1.2 I HAS A V1 I HAS A V2 I HAS A CHOICE VISIBLE "VALUE1" GIMMEH V1 VISIBLE "VALUE2" GIMMEH V2VISIBLE "Choose Operation? + - * /" GIMMEH CHOICE CHOICE, WTF? OMG "+" VISIBLE SUM OF V1 AN V2 GTFO OMG "-" VISIBLE DIFF OF V1 AN V2 GTFO OMG "*" VISIBLE PRODUKT OF V1 AN V2 GTFO OMG "/" VISIBLE QUOSHUNT OF V1 AN V2 GTFO OMGWTF VISIBLE "CHOOSE SOME OPERATION" OIC KTHXBYE
Когда мы выполняем вышеуказанную программу со следующим вводом —
3 4 +
После выполнения вышеуказанная программа сгенерирует следующий вывод: