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

Difference between revisions of "YOLOL:ru"

From Starbase wiki
Jump to navigation Jump to search
m (Исправил написание !=)
("Русифицирован" текст (вместо дословного), добавлены уточняющие скобки где это необходимо. Форматировано к одному виду.)
Line 94: Line 94:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Оператор || Номерной оператор || Строчный оператор
! Оператор || Операции с числами || Операции со строками
|-
|-
| A + B || Addition || Строка A добавляется строкой B.
| A + B || Сложение || К строке A добавляется строка B.
|-
|-
| A - B || Subtraction || Последнее появление строки B в строке A удаляется из строки A.
| A - B || Вычитание || Последнее совпадение строки B в строке A удаляется из строки A.
|-
|-
| A * B || Multiplication || Ошибка выполнения. Остальная часть линии пропущена.
| A * B || Умножение || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A / B || Division || Ошибка выполнения. Остальная часть линии пропущена.
| A / B || Деление || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A ++ || PostIncrement (A=A+1) || Добавляет пробел в строку А. Оценивает исходное значение.
| A ++ || Постинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает исходное значение (До добавления).
|-
|-
| A -- || PostDecrement (A=A-1) || Удаляет последний символ строки. Приводит к ошибке во время выполнения при попытке удалить "". Оценивает исходное значение.
| A -- || Постдекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить "". Возвращает исходное значение (До удаления).
|-
|-
| ++ A  || PreIncrement (A=A+1) || Добавляет пробел в строку А. Оценивает измененное значение.
| ++ A  || Преинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает получившееся значение.
|-
|-
| -- A || PreDecrement (A=A-1) || Удаляет последний символ строки. Приводит к ошибке во время выполнения при попытке удалить "". Оценивает измененное значение.
| -- A || Предекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить "". Возвращает получившееся значение.
|-
|-
| A = B || Assignment (Variable A is set to the value of variable B) || Assignment
| A = B || Присваивание (Переменной A присваивается значение переменной B) || Присваивание
|-
|-
| A += B || Addition-assignment (A=A+B) || A присваивается значение строковой операции A+B
| A += B || Присваивание сложения (A=A+B) || Строке A присваивается значение операции A+B.
|-
|-
| A -= B || Subtraction-assignment (A=A-B) ||A присваивается значение строковой операции A-B
| A -= B || Присваивание вычитания (A=A-B) || Строке A присваивается значение операции A-B.
|-
|-
| A *= B || Multiplication-assignment (A=A*B) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| A *= B || Присваивание умножения (A=A*B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A /= B || Division-assignment (A=A/B) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| A /= B || Присваивание деления (A=A/B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A %= B || Modulo-assignment (A=A%B) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| A %= B || Присваивание остатка от деления (A=A%B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A ^ B || Exponentiation || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| A ^ B || Возведение в степень || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A % B || Modulo || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| A % B || Остаток от деления || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| ABS A || Modulus (absol value) (A=A if A>=0, else A=-A) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| ABS A || Остаток от деления (абсолютное значение) (A=A if A>=0, else A=-A) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| A! || Factorial || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| A! || Факториал || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| SQRT A || Square root of A || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| SQRT A || Корень квадратный из A || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| SIN A || Sine of A (degrees) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| SIN A || Синус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| COS A || Cosine of A (degrees) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| COS A || Косинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| TAN A || Tangent of A (degrees) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена..
| TAN A || Тангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| ASIN A || Inverse sine of A (degrees) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| ASIN A || Арксинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| ACOS A || Inverse cosine of A (degrees) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| ACOS A || Арккосинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|-
|-
| ATAN A || Inverse tangent of A (degrees) || Ошибка времени выполнения для строковых переменных. Остальная часть линии пропущена.
| ATAN A || Арктангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|}
|}



Revision as of 04:27, 11 February 2020

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 Less than возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.
A > B Greater than возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.
A <= B Less than or equal to возвращает 1, если строка A является первой в алфавитном порядке или идентична строке B, возвращает 0, если нет.
A >= B Greater than or equal to возвращает 0, если строка A является первой в алфавитном порядке или идентична строке B, возвращает 1, если нет.
A != B Not equal to возвращает 1, если строка A не равна строке B, 0, если она есть.
A == B Equal to возвращает 1, если строка A равна строке B, 0, если нет.

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

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


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


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

Goto

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

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

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

Операторы If-Else

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

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

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

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

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

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

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

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

if variable == 0 then endResult = 1 else if variable == 1 then endResult = 2 end end 
  • Этот скрипт устанавливает endResult в 1, если 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 variable == 0 then
    if otherVariable == 1 then
        otherVariable = 2
    end
else
    otherVariable = 1
end

Комментарии

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

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

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

Ошибки

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

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