Sb forum speech.png DiscordLink.png FacebookLink.png RedditLink.png SteamLink.png TwitterLink.png YoutubeLink.png

YOLOL:ru

From Starbase wiki
Revision as of 21:19, 11 February 2020 by Eclair (talk | contribs) (→‎Логические операторы: Понятное русское описание, ёфикация, правка ошибок)

Jump to navigation Jump to search
English

Кратко

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

Код пишется на строках в  чипах YOLOL, которые впоследствии вставляются в  модульные стойки для чипов (Сокет).
Сокет читает и передает сообщения из кода в сеть (систему) корабля.

Базовая информация

Как работает YOLOL?

Код пишется и выполняется на программируемом чипе и может использоваться, как для мониторинга, так и управления устройствами, соединенных в сеть передачи данных.
Строки кода длиной максимум в 70 символов выполняются в последовательности сверху вниз, повторяя цикл чипа после выполнения последней строки, если только код не содержит инструкций для перенаправления на конкретную строку или полной остановки выполнения.

А если простыми словами:

  1. Выполнение кода начинается с первой строки
  2. После прочтения первой строки чип переходит к следующей строке на основе интервала времени чипа(то есть задержки выполнения каждой строки, составляющей на данный момент 0.2 секунды)
  3. Затем процесс повторяется для 2й, 3й, 4й строки и так далее
  4. Чип снова начнет выполнять 1 строку после того, как была выполнена последняя строка(Если конечно же код не содержит инструкций для перенаправления на конкретную строку или полной остановки)

Связанные страницы

Ссылки на команды

Без учета регистра

Код YOLOL полностью Нечувствителен к регистру. Это означает, что следующие два примера работают идентично друг другу.

if ButtonState == 1 then DoorState = 1 end
IF buttonstate == 1 THEN doorstate = 1 END
  • Оба сценария устанавливают doorState в 1, если значение buttonState равно 1.
  • Символы на языке программирования могут быть написаны как строчными, так и прописными буквами.
    • Они анализируются как нечувствительные к регистру.
    • Таким образом, код может выглядеть более организованным.

Переменные

  • Переменные в YOLOL слабо типизированы (то есть не требуют проверки правильности типа) и поддерживают два типа данных: десятичные числа с фиксированной запятой (с точностью до 0.001), а также строки.
    • Проще говоря, переменные могут быть введены в виде строк или чисел, игнорируя более ранний тип переменной, если предыдущий тип не идентичен, без возникновения ошибки.
  • Каждая переменная всегда имеет один тип, хотя она будет неявно преобразована при необходимости.
  • Значение по умолчанию для неинициализированной переменной равно 0, а нулевые значения не поддерживаются.
  • True и False идентичны значениям "не ноль" и "ноль", соответственно.
    • True != 0
    • False == 0

Присвоение значения переменной всегда преобразует переменную в тип присваиваемого значения.

Пример:

ultimateAutopilot = 128.643
  • Это приводит к переменной ultimateAutopilot, содержащей числовое значение 128,643


ultimateAutopilot = "Error prone"
  • Это приводит к тому, что переменная ultimateAutopilot является строковой переменной Склонность к ошибкам, и числовое значение 128,643 удаляется.

Десятичные числа

Числовые значения в языке программирования - это 64-разрядные десятичные числа с фиксированной запятой.
Переменные содержат десятичные числа с точностью до трех знаков после запятой.
В результате максимальный диапазон значений (даже во время операций) составляет [-9223372036854775.808, 9223372036854775.807]

pieVariable = 3.142
  • Приведенный выше скрипт присваивает числовое значение 3,142 переменной pieVariable.
    • Предоставление более точных значений, чем переменные могут хранить работы, но не влияет на конечный результат.

notPieVariable = 0.5772156649

  • Приведенный выше скрипт пытается присвоить числовое значение 0,5772156649 переменной notPieVariable.
  • Однако конечный результат notPieVariable == 0,577
    • Здесь сокращаются более точные значения, оставляя только три знака после запятой.

Строки

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

 badRobots = "saltberia"
  • Этот сценарий присваивает строковое значение " saltberia " переменной badRobots.

Поля устройств / Внешние переменные

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

  • : variableName
    • variableName - настроенный идентификатор поля устройства.

Префикс двоеточия : используется для идентификации переменной в качестве внешней, в отличие от переменной, которая может быть объявлена и использована в самом коде.
Чип, подключенный к устройству (модульной стойке), имеет доступ ко всем устройствам в данной сети, что предоставляет доступ к изменению или получению значений любых данных для устройств в ней.

if :ButtonState == 1 then :DoorState = 1 end

  • Этот код отправит значение 1 любому устройству, прослушивающему поле DoorState, если значение ButtonState равно 1 в сети передачи данных.

Операторы и команды

Доступные операторы ограничены типом (другими словами - уровнем) программируемого чипа.
Базовые чипы имеют ограниченный набор функций, в то время, как более продвинутые могут выполнять более сложные операции.

Основные арифметические и операторы присваивания

Оператор Операции с числами Операции со строками
A + B Сложение К строке A добавляется строка B.
A - B Вычитание Последнее совпадение строки B в строке A удаляется из строки A.
A * B Умножение Ошибка выполнения. Остаток кода на текущей линии пропускается.
A / B Деление Ошибка выполнения. Остаток кода на текущей линии пропускается.
A ++ Постинкрементация (A=A+1) Добавляет пробел к строке А. Возвращает исходное значение (До добавления).
A -- Постдекрементация (A=A-1) Удаляет последний символ строки. Приводит к ошибке при попытке удалить "". Возвращает исходное значение (До удаления).
++ A Преинкрементация (A=A+1) Добавляет пробел к строке А. Возвращает получившееся значение.
-- A Предекрементация (A=A-1) Удаляет последний символ строки. Приводит к ошибке при попытке удалить "". Возвращает получившееся значение.
A = B Присваивание (Переменной A присваивается значение переменной B) Присваивание
A += B Присваивание сложения (A=A+B) Строке A присваивается значение операции A+B.
A -= B Присваивание вычитания (A=A-B) Строке A присваивается значение операции A-B.
A *= B Присваивание умножения (A=A*B) Ошибка выполнения. Остаток кода на текущей линии пропускается.
A /= B Присваивание деления (A=A/B) Ошибка выполнения. Остаток кода на текущей линии пропускается.
A %= B Присваивание остатка от деления (A=A%B) Ошибка выполнения. Остаток кода на текущей линии пропускается.
A ^ B Возведение в степень Ошибка выполнения. Остаток кода на текущей линии пропускается.
A % B Остаток от деления Ошибка выполнения. Остаток кода на текущей линии пропускается.
ABS A Остаток от деления (абсолютное значение) (A=A if A>=0, else A=-A) Ошибка выполнения. Остаток кода на текущей линии пропускается.
A! Факториал Ошибка выполнения. Остаток кода на текущей линии пропускается.
SQRT A Корень квадратный из A Ошибка выполнения. Остаток кода на текущей линии пропускается.
SIN A Синус A (в градусах) Ошибка выполнения. Остаток кода на текущей линии пропускается.
COS A Косинус A (в градусах) Ошибка выполнения. Остаток кода на текущей линии пропускается.
TAN A Тангенс A (в градусах) Ошибка выполнения. Остаток кода на текущей линии пропускается.
ASIN A Арксинус A (в градусах) Ошибка выполнения. Остаток кода на текущей линии пропускается.
ACOS A Арккосинус A (в градусах) Ошибка выполнения. Остаток кода на текущей линии пропускается.
ATAN A Арктангенс A (в градусах) Ошибка выполнения. Остаток кода на текущей линии пропускается.

Логические операторы

Логические операторы проверяют, является ли утверждение истиной или ложью.
Все логические операторы возвращают либо "0 как False", либо "1 как True"

Оператор Операции с числами Операции со строками
A < B Меньше чем Возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.
A > B Больше чем Возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.
A <= B Меньше или равно Возвращает 1, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 0, если нет.
A >= B Больше или равно Возвращает 0, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 1, если нет.
A != B Не равно Возвращает 1, если строка A не равна строке B, 0, если она есть.
A == B Равно Возвращает 1, если строка A равна строке B, 0, если нет.

Смешивание типов переменных в операциях

При использовании смешанных типов переменных, операция обрабатывается используя все параметры как тип «строка».


previouslyNumber = "10" + 15
  • Данный скрипт приводит к тому, что переменная previouslyNumber получает строковое значение «1015».
    • Обратите внимание, что сами используемые параметры не меняют типы, их значения просто приводятся в виде строк для выполнения операции:


purelyNumber = 15
purelyString = "10" + purelyNumber
  • После того, как этот скрипт выполнится, purelyString будет содержать строковое значение 1015, однако значение переменной purelyNumber будет всё ещё равно числовому значению 15.

Goto

Команда используется, когда в обычном порядке чтения скрипта с 1 по 20 строку требуется переход на другую строку.
Как использовать goto:

  • goto lineNumber
    • lineNumber - номер линии скрипта, на которую перейдёт выполнение.
    • В случае выполнения команды goto, любой оставшийся на той же линии скрипт выполнен не будет.
      • При использовании goto внутри условия if, в случае, если логическое выражение в условии будет False, то команда goto не выполнится.
    • Несколько команд goto могут быть использованы на одной линии, если находятся в условиях if.
if variable == 5 then goto 4 end goto 6

Скрипт, приведённый выше, перейдёт на линию 4, если значение variable равно 5.
В противном случае он перейдёт на линию номер 6.

Условный оператор If-Else

Условный оператор if-else используется для проверки логического выражения и выполнения скрипта в зависимости от истинности этого выражения.
Условный оператор используется в следующем виде:

  • if условие then действие else действие end
    • Условие - это логическое утверждение, результатом которого является численное значение (где 0 обозначает False, а все остальные значения - True).
    • Действие - скрипт, выполняемый в зависимости от истинности условия.
    • Все условия if-else должны иметь end в конце.

If можно использовать для разделения выполнения скрипта на два возможных результата на основе значения переменной variable.
Пример:

if variable != 2 then endResult = 3 else endResult = 4 end
  • Этот скрипт устанавливает значение 3 переменной endResult, если значение variable не равно 2.
  • Если значение переменной variable равно 2, для переменной endResult устанавливается значение 4.

Обратите внимание, что блок else можно пропустить, если он не нужен.
Пример:

 if variable != 2 then endResult = 3 end
  • Этот скрипт устанавливает значение 3 для переменной endResult, если variable не имеет значения 2 и больше ничего не делает.

Вложение условий if

Можно поместить условные операторы внутри результатов true / false другого условного оператора, чтобы добиться дальнейшего ветвления выполнения.
Пример:

if variable == 0 then endResult = 1 else if variable == 1 then endResult = 2 end end 
  • Этот скрипт устанавливает значение 1 переменной endResult, если variable равно 0.
  • Если variable не равно 0, но равно 1, то endResult устанавливается значение 2.

Пример:

 if variable == 0 then if endResult == 1 then endResult = 2 end else endResult = 1 end
  • Этот скрипт устанавливает endResult значение 2, если variable имеет значение 0, а endResult равно 1.
  • В противном случае он устанавливает endResult значение 1.

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

Форматированный второй пример вложенного if:

if variable == 0 then
    if endResult == 1 then
        endResult = 2
    end
else
    endResult = 1
end

Комментарии

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

Комментирование используется со следующим синтаксисом:

  • // Текст
    • Текст может быть любым однострочным набором символов.
// Это комментарий. Он объяснит, как работают другие строки скрипта.
  • Пример возможного синтаксиса комментариев.

Ошибки

Существует два типа ошибок, которые могут возникнуть с языком программирования.

  1. Синтаксические ошибки
  2. Ошибки во время выполнения
  • Синтаксические ошибки происходят из-за неверного и не разбираемого скрипта и приводят к тому, что вся строка не выполняется.
  • Ошибки во время выполнения можно отследить только во время выполнения скрипта. Они приводят к прерыванию выполнения строки, но влияют до тех пор, пока ошибка не останется.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.