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
 
(12 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{Otherlang2
{{Otherlang2
|en=YOLOL
|en=YOLOL
|de=YOLOL:de
|fr=YOLOL:fr
|ru=YOLOL:ru
|ua=YOLOL:ua
|jp=YOLOL:jp
|zh-cn=YOLOL语言
}}
}}
== Кратко ==
== Кратко ==
YOLOL - это язык программирования, который используется для контроля и управления [[Устройства и механизмы | электрическими устройствами]] в игре.<br>
YOLOL - это язык программирования, который используется для контроля и управления [[Устройства и механизмы | электрическими устройствами]] в игре.<br>
  Код пишется на строках в [[Чип YOLOL | чипах YOLOL]], которые впоследствии вставляются в [[Модульная стойка для чипов | модульные стойки для чипов (Сокет)]].<br>
  Код пишется на строках на [[Чип YOLOL | YOLOL-чипа]], которые впоследствии вставляются в [[Модульная стойка для чипов | модульные стойки для чипов]] (или Сокет).<br>
  [[Разъём | Сокет]]  читает и передает сообщения из кода в сеть (систему) корабля.
  [[Сокет | Сокет]]  читает и передает сообщения из кода в сеть (систему) корабля.


== Базовая информация ==
== Базовая информация ==
Line 18: Line 25:
# Чип снова начнет выполнять 1 строку после того, как была выполнена последняя строка(Если конечно же код не содержит инструкций для перенаправления на конкретную строку или полной остановки)
# Чип снова начнет выполнять 1 строку после того, как была выполнена последняя строка(Если конечно же код не содержит инструкций для перенаправления на конкретную строку или полной остановки)
=== Связанные страницы ===
=== Связанные страницы ===
* [[информационная сеть]]
* [[Информационная сеть]]
* [[Устройства и механизмы]]
* [[Устройства и механизмы]]
* [[Универсальный инструмент | Универсальный инструмент]]
* [[Универсальный инструмент | Универсальный инструмент]]
* [[YOLOL чип | Чип]]
* [[Чип_YOLOL | Чип YOLOL]]


== Ссылки на команды ==
== Ссылки на команды ==
Line 48: Line 55:
'''Пример:'''
'''Пример:'''


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




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


Line 60: Line 67:
В результате максимальный диапазон значений (даже во время операций) составляет  [-9223372036854775.808, 9223372036854775.807]
В результате максимальный диапазон значений (даже во время операций) составляет  [-9223372036854775.808, 9223372036854775.807]


  pieVariable= 3.142
  pieVariable = 3.142
* Приведенный выше скрипт присваивает числовое значение 3,142 переменной '''pieVariable'''.
* Приведенный выше скрипт присваивает числовое значение 3,142 переменной '''pieVariable'''.
** Предоставление более точных значений, чем переменные могут хранить работы, но не влияет на конечный результат.
** Предоставление более точных значений, чем переменные могут хранить работы, но не влияет на конечный результат.
Line 81: Line 88:
** '''variableName''' - настроенный идентификатор поля устройства.
** '''variableName''' - настроенный идентификатор поля устройства.
Префикс двоеточия ''':''' используется для идентификации переменной в качестве внешней, в отличие от переменной, которая может быть объявлена и использована в самом коде.<br>
Префикс двоеточия ''':''' используется для идентификации переменной в качестве внешней, в отличие от переменной, которая может быть объявлена и использована в самом коде.<br>
[[YOLOL чип | Чип]], подключенный к [[Устройства и механизмы | устройству]] (модульной стойке), имеет доступ ко всем устройствам в [[Информационная сеть | данной сети]], что предоставляет доступ к изменению или получению значений любых данных для устройств в ней.<br>
[[Чип_YOLOL | Чип]], подключенный к [[Устройства и механизмы | устройству]] (стойке для чипов), имеет доступ ко всем устройствам в [[Информационная сеть | данной сети]], что предоставляет доступ к изменению или получению значений любых данных для устройств в ней.<br>


if :ButtonState == 1 then :DoorState = 1 end
if :ButtonState == 1 then :DoorState = 1 end
Line 94: Line 101:
{| 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 (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
|}
|}


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


{| class="wikitable"
{| class="wikitable"
|-
|-
! Оператор || Нумерной оператор || Стройчный оператор
! Оператор || Операции с числами || Операции со строками
| A < B || Less than || возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.
|-
| A < B || Меньше чем || Возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.
|-
|-
| A > B || Greater than || возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.
| A > B || Больше чем || Возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.
|-
|-
| A <= B ||Less than or equal to || возвращает 1, если строка A является первой в алфавитном порядке или идентична строке B, возвращает 0, если нет.
| A <= B || Меньше или равно || Возвращает 1, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 0, если нет.
|-
|-
| A >= B || Greater than or equal to || возвращает 0, если строка A является первой в алфавитном порядке или идентична строке B, возвращает 1, если нет.
| A >= B || Больше или равно || Возвращает 0, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 1, если нет.
|-
|-
| A != B || Not equal to || возвращает 1, если строка A не равна строке B, 0, если она есть.
| A != B || Не равно || Возвращает 1, если строка A не равна строке B, 0, если она есть.
|-
|-
| A == B || Equal to || возвращает 1, если строка A равна строке B, 0, если нет.
| A == B || Равно || Возвращает 1, если строка A равна строке B, 0, если нет.
|}
|}
=== Смешивание типов переменных в операциях ===
=== Смешивание типов переменных в операциях ===
Смешивание типов переменных в операции обрабатывает операцию, используя все параметры как «строки».
При использовании смешанных типов переменных, операция обрабатывается используя все параметры как тип «строка».




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


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


=== Goto ===
=== Goto ===
Команда используется, когда обычный порядок чтения кода с 1 по 20 строку не желателен или требует изменений на определенном этапе.
Команда используется, когда в обычном порядке чтения скрипта с 1 по 20 строку требуется переход на другую строку.<br>
Как использовать goto:
Как использовать '''goto''':
*'''goto lineNumber'''
* '''goto lineNumber'''
** lineNumber - строка, которую команда выполнит при выполнении скрипта. <br>
** '''lineNumber''' - номер линии скрипта, на которую перейдёт выполнение.
** Любой оставшийся скрипт, который находится в той же строке после команды goto, не будет выполнен.
** В случае выполнения команды '''goto''', любой оставшийся на той же линии скрипт выполнен '''не''' будет.
*** использование операторов if перед goto игнорирует синтаксис goto, предполагая, что оператор if равен false
*** При использовании '''goto''' внутри условия ''if'', в случае, если логическое выражение в условии будет '''False''', то команда '''goto''' не выполнится.
** Несколько команд goto могут быть добавлены в одну строку с помощью условных выражений, так как '''False''' команды goto пропускаются.
** Несколько команд '''goto''' могут быть использованы на одной линии, если находятся в условиях ''if''.


  если переменная == 5 то '''goto 4''' конец '''goto 6'''
  if variable == 5 then '''goto 4''' end '''goto 6'''
Сценарий, приведенный выше, перейдет к строке 4, если значение '''переменной''' равно 5. <br>
Скрипт, приведённый выше, перейдёт на линию 4, если значение '''variable''' равно 5. <br>
В противном случае он перейдет к строке № 6.
В противном случае он перейдёт на линию номер 6.


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


Можно использовать для временного разделения выполнения скрипта на два возможных результата на основе значений переменной. <br>
'''If''' можно использовать для разделения выполнения скрипта на два возможных результата на основе значения переменной '''variable'''. <br>
'''Пример:'''<br>
'''Пример:'''<br>
  '''если''' variable != 2 '''затем''' endResult = 3 '''еще''' endResult = 4 '''конец'''
  '''if''' variable != 2 '''then''' endResult = 3 '''else''' endResult = 4 '''end'''


* Этот скрипт устанавливает значение '''endResult''' в 3, если '''variable''' не имеет значения 2.
* Этот скрипт устанавливает значение 3 переменной '''endResult''', если значение '''variable''' не равно 2.
* Если значение '''variable'''' равно 2, для '''endResult''' установлено значение 4.
* Если значение переменной '''variable''' равно 2, для переменной '''endResult''' устанавливается значение 4.


Обратите внимание, что оператор else -part можно пропустить, если он не нужен. <br>
Обратите внимание, что блок '''else''' можно пропустить, если он не нужен. <br>
'''Пример:''' <br>
  '''if''' variable != 2 '''then''' endResult = 3 '''end'''
* Этот скрипт устанавливает значение '''3''' для переменной '''endResult''', если '''variable''' не имеет значения 2 и больше ничего не делает.
==== Вложение условий if ====
Можно поместить условные операторы внутри результатов true / false другого условного оператора, чтобы добиться дальнейшего ветвления выполнения. <br>
'''Пример:''' <br>
'''Пример:''' <br>
  '''если''' variable! = 2 '''затем''' endResult = 3 '''конец'''
'''if''' variable == 0 '''then''' endResult = 1 '''else''' '''if''' variable == 1 '''then''' endResult = 2 '''end end'''  
* Этот скрипт устанавливает значение «3» только в «endResult», если «переменная» не имеет значения 2 и больше ничего не делает.
* Этот скрипт устанавливает значение 1 переменной '''endResult''', если '''variable''' равно 0.
==== Вложение IF условий ====
* Если '''variable''' не равно 0, но равно 1, то '''endResult''' устанавливается значение 2.
Можно поместить условные операторы внутри блоков операторов true / false, чтобы добиться дальнейшего ветвления выполнения. <br>
Пример: <br>
'''если''' variable == 0 '''затем''' endResult = 1 '''еще''' '''если''' variable == 1 '''затем''' endResult = 2 '''конец конец'''  
* Этот скрипт устанавливает '''endResult''' в 1, если '''переменная''' равна 0.
* Если '''variable''' не равно 0, но равно 1, '''endResult''' устанавливается в 2.


Пример: <br>
'''Пример:''' <br>
   '''если''' variable == 0 '''затем''' '''если''' endResult == 1 '''затем''' endResult = 2 '''конец''' '''еще''' endResult = 1 '''конец'''
   '''if''' variable == 0 '''then''' '''if''' endResult == 1 '''then''' endResult = 2 '''end''' '''else''' endResult = 1 '''end'''
* Этот скрипт устанавливает '''endResult''' в 2, если '''переменная''' имеет значение 0, а '''endResult''' равно 1.
* Этот скрипт устанавливает '''endResult''' значение 2, если '''variable''' имеет значение 0, а '''endResult''' равно 1.
* В противном случае он устанавливает '''endResult''' в 1.
* В противном случае он устанавливает '''endResult''' значение 1.


Обратите внимание, что проще спланировать и отладить поток сценариев, отформатировав сценарий, содержащий вложенные операторы if, в более аккуратную форму с отступами. <br>
Обратите внимание, что проще спланировать и отладить поток скрипта, отформатировав сценарий, содержащий вложенные операторы '''if''', в более аккуратную форму с отступами и переносами. <br>
Также обратите внимание, что написание подобного скрипта не будет работать на [[YOLOL чип | чипе]], но это может быть полезно при отладке скриптов.
Однако написание подобного скрипта не будет работать на [[Чип_YOLOL  | чипе]], но это может быть полезно при отладке скриптов.


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


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


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


Комментирование используется со следующим синтаксисом:
Комментирование используется со следующим синтаксисом:
* // '''Текст'''
* // '''Текст'''
** Текст может быть любым однострочным набором символов.
** '''Текст''' может быть любым однострочным набором символов.


  '''//''' Это комментарий. Он объяснит, как работают другие строки скрипта.
  '''//''' Это комментарий. Он объяснит, как работают другие строки скрипта.
* Пример возможного синтаксиса комментариев
* Пример возможного синтаксиса комментариев.


== Ошибки ==
== Ошибки ==

Latest revision as of 10:15, 11 October 2021

English Deutsch Français Русский Українська 日本語 简体中文

Кратко

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.