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

Difference between revisions of "YOLOL:ua"

From Starbase wiki
Jump to navigation Jump to search
(Created page with "{{Otherlang2 |de=YOLOL:de |en=YOLOL |zh-cn=YOLOL语言 |ua=YOLOL:ua }} == Кратко == YOLOL - это язык программирования, который испол...")
 
Line 3: Line 3:
|en=YOLOL
|en=YOLOL
|zh-cn=YOLOL语言
|zh-cn=YOLOL语言
|ua=YOLOL:ua
|ru=YOLOL:ru


}}
}}
== Кратко ==
== Коротко ==
YOLOL - это язык программирования, который используется для контроля и управления [[Устройства и механизмы | электрическими устройствами]] в игре.<br>
YOLOL-це мова програмування, яка використовується для контролю та управління [[пристрої та механізми | електричні пристрої]] у грі. <br>
Код пишется на строках на [[Чип YOLOL | YOLOL-чипа]], которые впоследствии вставляются в [[Модульная стойка для чипов | модульные стойки для чипов]] (или Сокет).<br>
Код пишеться на рядках на [[чіп YOLOL | yolol-чіпа]], які згодом вставляються в [[Модульна стійка для чіпів | модульні стійки для чіпів]] (або Сокет).<br>
[[Сокет | Сокет]] читает и передает сообщения из кода в сеть (систему) корабля.
[[Роз'єм для чіпа | Роз'єм для чіпа]] читає і передає повідомлення з коду в мережу (систему) корабля.


== Базовая информация ==
== Базова інформація ==
=== Как работает YOLOL? ===
=== Як працює YOLOL? ===
Код пишется и выполняется на программируемом чипе и может использоваться, как для мониторинга, так и управления [[Устройства и механизмы | устройствами]], соединенных в [[Информационная сеть | сеть передачи данных]].<br>
Код пишеться і виконується на програмованому чіпі і може використовуватися, як для моніторингу, так і управління [[пристрої та механізми | пристроями]], з'єднаних в [[інформаційна мережа | мережа передачі даних]].<br>
Строки кода длиной максимум в 70 символов выполняются в последовательности сверху вниз, повторяя цикл чипа после выполнения последней строки, если только код не содержит инструкций для перенаправления на конкретную строку или полной остановки выполнения.<br>
Рядки коду довжиною максимум в 70 символів виконуються в послідовності зверху вниз, повторюючи цикл чіпа після виконання останнього рядка, якщо тільки код не містить інструкцій для перенаправлення на конкретний рядок або повної зупинки виконання.<br>


А если простыми словами:
А якщо простими словами:
# Выполнение кода начинается с первой строки
# Виконання коду починається з першого рядка
# После прочтения первой строки чип переходит к следующей строке на основе интервала времени чипа(то есть задержки выполнения каждой строки, составляющей на данный момент 0.2 секунды)
# Після прочитання першого рядка чіп переходить до наступного рядка на основі інтервалу часу чіпа(тобто затримки виконання кожного рядка, що становить на даний момент 0.2 секунди)
# Затем процесс повторяется для 2й, 3й, 4й строки и так далее
# Потім процес повторюється для 2й, 3й, 4й рядки і так далі
# Чип снова начнет выполнять 1 строку после того, как была выполнена последняя строка(Если конечно же код не содержит инструкций для перенаправления на конкретную строку или полной остановки)
# Чіп знову почне виконувати 1 рядок після того, як була виконана останній рядок(якщо звичайно ж код не містить інструкцій для перенаправлення на конкретний рядок або повної зупинки)
=== Связанные страницы ===
=== Пов'язані сторінки ===
* [[Информационная сеть]]
* [[Інформаційна мережа]]
* [[Устройства и механизмы]]
*[[Пристрої та механізми]]
* [[Универсальный инструмент | Универсальный инструмент]]
*[[Універсальний інструмент | універсальний інструмент]]
* [[Чип_YOLOL | Чип YOLOL]]
*[[Чіп YOLOL | чіп YOLOL]]


== Ссылки на команды ==
== Посилання на команди ==
=== Без учета регистра ===
=== Без урахування регістра ===
Код YOLOL полностью '''Нечувствителен''' к регистру. Это означает, что следующие два примера работают идентично друг другу.<br>
Код YOLOL повністю '''нечутливий ''' до регістру. Це означає, що наступні два приклади працюють ідентично один одному.<br>


if '''ButtonState''' == 1 then '''DoorState''' = 1 end
if '''ButtonState''' == 1 then '''DoorState''' = 1 end


IF '''buttonstate''' == 1 THEN '''doorstate''' = 1 END
IF '''buttonstate''' == 1 THEN '''doorstate''' = 1 END


* Оба сценария устанавливают ''' doorState '''в 1, если значение''' buttonState '''равно 1.
* Обидва сценарії встановлюють '''doorState'''в 1, якщо значення''' buttonState '''дорівнює 1.
* Символы на языке программирования могут быть написаны как строчными, так и прописными буквами.
* Символи на мові програмування можуть бути написані як малими, так і великими літерами.
** Они анализируются как нечувствительные к регистру.
** Вони аналізуються як нечутливі до регістру.
** Таким образом, код может выглядеть более организованным.
** Таким чином, код може виглядати більш організованим.
=== Переменные ===
=== Змінна ===
* Переменные в YOLOL слабо типизированы (то есть не требуют проверки правильности типа) и поддерживают два типа данных: '''десятичные числа с фиксированной запятой''' (с точностью до 0.001), а также '''строки'''.  
* Змінні в YOLOL слабо типізовані (тобто не вимагають перевірки правильності типу) і підтримують два типи даних: '''десяткові числа з фіксованою комою''' (з точністю до 0.001), а також '''рядки'''.
** Проще говоря, переменные могут быть введены в виде строк или чисел, игнорируя более ранний тип переменной, если предыдущий тип не идентичен, без возникновения ошибки.
** Простіше кажучи, змінні можуть бути введені у вигляді рядків або чисел, ігноруючи більш ранній тип змінної, якщо попередній тип не ідентичний, без виникнення помилки.
* Каждая переменная всегда имеет один тип, хотя она будет неявно преобразована при необходимости.
* Кожна змінна завжди має один тип, хоча вона буде неявно перетворена при необхідності.
* Значение по умолчанию для неинициализированной переменной равно 0, а нулевые значения не поддерживаются.
* Значення за замовчуванням для неініціалізованої змінної дорівнює 0, а нульові значення не підтримуються.
* True и False идентичны значениям "не ноль" и "ноль", соответственно.  
* True і False ідентичні значенням "не нуль" і "нуль", відповідно.
** True != 0
** True != 0
** False == 0
** False == 0


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


'''Пример:'''
'''Приклад:'''


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




ultimateAutopilot = "Error prone"
ultimateAutopilot = "Error prone"
* Это приводит к тому, что переменная '''ultimateAutopilot''' является строковой переменной '''Склонность к ошибкам''', и числовое значение 128,643 удаляется.
* Це призводить до того, що змінна "'ultimateAutopilot" 'є рядковою змінною '''схильність до помилок''', і числове значення 128,643 видаляється.
 
==== Десяткові числа ====
Числові значення в мові програмування-це 64-розрядні десяткові числа з фіксованою комою.<br>
Змінні містять десяткові числа з точністю до трьох знаків після коми.<br>
В результаті максимальний діапазон значень (навіть під час операцій) становить [-9223372036854775.808, 9223372036854775.807]
 
pieVariable = 3.142
* Наведений вище скрипт присвоює Числове значення 3,142 змінної '''pieVariable'''.
** Надання більш точних значень, ніж змінні можуть зберігати роботи, але не впливає на кінцевий результат.


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


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


notPieVariable = 0.5772156649
notPieVariable = 0.5772156649
* Приведенный выше скрипт пытается присвоить числовое значение 0,5772156649 переменной '''notPieVariable'''.
* Наведений вище скрипт намагається присвоїти Числове значення 0,5772156649 змінної '''notPieVariable'''.
* Однако конечный результат notPieVariable == 0,577
* Однак кінцевий результат notPieVariable = = 0,577
** Здесь сокращаются более точные значения, оставляя только три знака после запятой.
** Тут скорочуються більш точні значення, залишаючи тільки три знаки після коми.


==== Строки ====


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


  badRobots = "saltberia"
Щоб вказати строковий літерал на мові програмування, потрібне строкове значення має бути укладено в подвійні лапки.
* Этот сценарий присваивает строковое значение "'' saltberia ''" переменной '''badRobots'''.


==== Поля устройств / Внешние переменные ====
badRobots = "saltberia"
Внешние переменные и поля устройства могут использоваться в языке программирования со следующим синтаксисом: <br>
* Цей сценарій присвоює Рядкове значення ""saltberia" "змінної" '''badRobots'''.
 
==== Поля пристроїв / зовнішні змінні  ====
Зовнішні змінні і поля пристрою можуть використовуватися в мові програмування з наступним синтаксисом: <br>
* ''': variableName'''
* ''': variableName'''
** '''variableName''' - настроенный идентификатор поля устройства.
** '''variableName ''' - налаштований Ідентифікатор поля пристрою.
Префикс двоеточия ''':''' используется для идентификации переменной в качестве внешней, в отличие от переменной, которая может быть объявлена и использована в самом коде.<br>
Префікс двокрапки''': ''' використовується для ідентифікації змінної як зовнішньої, на відміну від змінної, яка може бути оголошена і використана в самому коді.<br>
[[Чип_YOLOL | Чип]], подключенный к [[Устройства и механизмы | устройству]] (стойке для чипов), имеет доступ ко всем устройствам в [[Информационная сеть | данной сети]], что предоставляет доступ к изменению или получению значений любых данных для устройств в ней.<br>
[[Чіп YOLOL | чіп]], підключений до [[пристрої та механізми | пристрою]] (стійці для чіпів), має доступ до всіх пристроїв в [[інформаційна мережа | даної мережі]], що надає доступ до зміни або отримання значень будь-яких даних для пристроїв в ній.<br>
 


if :ButtonState == 1 then :DoorState = 1 end
if :ButtonState == 1 then :DoorState = 1 end
*Этот код отправит значение 1 любому устройству, прослушивающему поле DoorState, если значение ButtonState равно 1 в сети передачи данных.
* Цей код відправить значення 1 будь-якому пристрою, який прослуховує поле DoorState, якщо значення ButtonState дорівнює 1 в мережі передачі даних.


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


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


=== Основные арифметические и операторы присваивания ===
=== Основні арифметичні та оператори присвоювання ===
{| class="wikitable"
{| class="wikitable"
|-
|-
! Оператор || Операции с числами || Операции со строками
! Оператор || Операції з числами || Операції з рядками
|-
|-
| A + B || Сложение || К строке A добавляется строка B.
| A + B || Додавання || до рядка A додається рядок B.
|-
|-
| A - B || Вычитание || Последнее совпадение строки B в строке A удаляется из строки A.
| A - B || Віднімання || Останній збіг рядка B в рядку A видаляється з рядка A.
|-
|-
| A * B || Умножение || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| A * B || Множення || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| A / B || Деление || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| A / B || Ділення || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| A ++ || Постинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает исходное значение (До добавления).
| A ++ || Постінкрементація (A=A+1) || Додає пробіл до рядка А. Повертає вихідне значення (до додавання).
|-
|-
| A -- || Постдекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить "". Возвращает исходное значение (До удаления).
| A -- || Постдекрементация (A=A-1) || Видаляє останній символ рядка. Призводить до помилки при спробі видалити"". Повертає початкове значення (до видалення).
|-
|-
| ++ A  || Преинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает получившееся значение.
| ++ A  || Преинкрементация (A=A+1) || Додає пробіл до рядка А. Повертає отримане значення.
|-
|-
| -- A || Предекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить "". Возвращает получившееся значение.
| -- A || Предекрементация (A=A-1) || видаляє останній символ рядка. Призводить до помилки при спробі видалити"". Повертає отримане значення.
|-
|-
| A = B || Присваивание (Переменной A присваивается значение переменной B) || Присваивание
| 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 присваивается значение операции 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=A | B) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| A %= B || Присваивание остатка от деления (A=A%B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| A %= B || присвоювання залишку від ділення (A=A%B) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| A ^ B || Возведение в степень || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| A ^ B || зведення в ступінь || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| A % B || Остаток от деления || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| A % B || залишок від ділення || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| ABS A || Остаток от деления (абсолютное значение) (A=A if A>=0, else A=-A) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| ABS A || залишок від ділення (абсолютне значення) (A=A if a>=0, else A=-A) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| A! || Факториал || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| A! ||Факторіал || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| SQRT A || Корень квадратный из A || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| SQRT A || корінь квадратний з A || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| SIN A || Синус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| SIN A || Синус A (в градусах) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| COS A || Косинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| COS A || Косинус A | в градусах) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| TAN A || Тангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| TAN A || Тангенс a (в градусах) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| ASIN A || Арксинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| ASIN A ||Арксинус A (в градусах) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| ACOS A || Арккосинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| ACOS A || Арккосинус A (в градусах) || помилка виконання. Залишок коду на поточній лінії пропускається.
|-
|-
| ATAN A || Арктангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.
| ATAN A || Арктангенс a (в градусах) || помилка виконання. Залишок коду на поточній лінії пропускається.
|}
|}


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


{| class="wikitable"
{| class="wikitable"
|-
|-
! Оператор || Операции с числами || Операции со строками
! Оператор || операції з числами || операції з рядками
|-
|-
| A < B || Меньше чем || Возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.
| A < B | | менше ніж || повертає 1, Якщо рядок A є першим в алфавітному порядку, повертає 0, якщо ні.
|-
|-
| A > B || Больше чем || Возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.
| A > B | | Більше ніж || повертає 0, якщо рядок A є першим в алфавітному порядку, повертає 1, якщо ні.
|-
|-
| A <= B || Меньше или равно || Возвращает 1, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 0, если нет.
| A <= B | | менше або дорівнює || повертає 1, Якщо рядок A є першим в алфавітному порядку або ідентично рядку B, повертає 0, якщо ні.
|-
|-
| A >= B || Больше или равно || Возвращает 0, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 1, если нет.
| A >= B | | Більше або дорівнює || повертає 0, Якщо рядок A є першим в алфавітному порядку або ідентично рядку B, повертає 1, якщо ні.
|-
|-
| A != B || Не равно || Возвращает 1, если строка A не равна строке B, 0, если она есть.
| A != B | | Не дорівнює || повертає 1, Якщо рядок A Не дорівнює рядку B, 0, якщо вона є.
|-
|-
| A == B || Равно || Возвращает 1, если строка A равна строке B, 0, если нет.
| A == B | | дорівнює || повертає 1, Якщо рядок a дорівнює рядку B, 0, якщо ні.
|}
|}
=== Смешивание типов переменных в операциях ===
=== Змішування типів змінних в операціях ===
При использовании смешанных типов переменных, операция обрабатывается используя все параметры как тип «строка».
При використанні змішаних типів змінних, операція обробляється використовуючи всі параметри як тип "рядок".
 


previouslyNumber = "10" + 15
* Даний скрипт призводить до того, що змінна ''' previouslyNumber ''' отримує Рядкове значення «1015».
** Зверніть увагу, що самі використовувані параметри не змінюють типи, їх значення просто наводяться у вигляді рядків для виконання операції:


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


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


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


if variable == 5 then '''goto 4''' end '''goto 6'''
if variable == 5 then '''goto 4''' end '''goto 6'''
Скрипт, приведённый выше, перейдёт на линию 4, если значение '''variable''' равно 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 в кінці.


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


* Этот скрипт устанавливает значение 3 переменной '''endResult''', если значение '''variable''' не равно 2.
* Цей скрипт встановлює значення 3 змінної '''endResult''', якщо значення '''variable''' не дорівнює 2.
* Если значение переменной '''variable''' равно 2, для переменной '''endResult''' устанавливается значение 4.
* Якщо значення змінної''' variable '''дорівнює 2, для змінної''' endResult ''' встановлюється значення 4.


Обратите внимание, что блок '''else''' можно пропустить, если он не нужен. <br>
Зверніть увагу, що блок '''else ''' можна пропустити, якщо він не потрібен. <br>
'''Пример:''' <br>
'''Приклад: ''' <br>
  '''if''' variable != 2 '''then''' endResult = 3 '''end'''
'''if''' variable != 2 '''then''' endResult = 3 '''end'''
* Этот скрипт устанавливает значение '''3''' для переменной '''endResult''', если '''variable''' не имеет значения 2 и больше ничего не делает.
* Цей скрипт встановлює значення '''3 '''для змінної'''endResult''', якщо''' variable ''' не має значення 2 і більше нічого не робить.
==== Вложение условий if ====
==== Вкладення умов if ====
Можно поместить условные операторы внутри результатов true / false другого условного оператора, чтобы добиться дальнейшего ветвления выполнения. <br>
Можна помістити умовні оператори всередині результатів true / false іншого умовного оператора, щоб домогтися подальшого розгалуження виконання. <br>
'''Пример:''' <br>
'''Приклад: ''' <br>
  '''if''' variable == 0 '''then''' endResult = 1 '''else''' '''if''' variable == 1 '''then''' endResult = 2 '''end end'''  
  '''if''' variable == 0 '''then''' endResult = 1 '''else''' '''if''' variable == 1 '''then''' endResult = 2 '''end end'''
* Этот скрипт устанавливает значение 1 переменной '''endResult''', если '''variable''' равно 0.
* Цей скрипт встановлює значення 1 змінної '''endResult''', якщо" 'variable "' дорівнює 0.
* Если '''variable''' не равно 0, но равно 1, то '''endResult''' устанавливается значение 2.
* Якщо''' variable '''не дорівнює 0, але дорівнює 1, то''' endResult ''' встановлюється значення 2.


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


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


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


  '''if''' variable == 0 '''then'''
  '''if''' variable == 0 '''then'''
Line 241: Line 245:
  '''end'''
  '''end'''


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


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


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


== Ошибки ==
== Помилки ==


Существует два типа ошибок, которые могут возникнуть с языком программирования.
Існує два типи помилок, які можуть виникнути з мовою програмування.
# Синтаксические ошибки
# Синтаксичні помилки
# Ошибки во время выполнения
# Помилки під час виконання


* Синтаксические ошибки происходят из-за неверного и не разбираемого скрипта и приводят к тому, что вся строка не выполняется.
* Синтаксичні помилки відбуваються через невірний і не розбирається скрипта і призводять до того, що весь рядок не виконується.
* Ошибки во время выполнения можно отследить только во время выполнения скрипта. Они приводят к прерыванию выполнения строки, но влияют до тех пор, пока ошибка не останется.
* Помилки під час виконання можна відстежити тільки під час виконання скрипта. Вони призводять до переривання виконання рядка, але впливають до тих пір, поки помилка не залишиться.
[[Category:Сети|YOLOL:ru]]
[[Category: Мережі | YOLOL: ua]]

Revision as of 15:20, 9 September 2020

English Deutsch Русский 简体中文

Коротко

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 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 в градусах) помилка виконання. Залишок коду на поточній лінії пропускається.
TAN A Тангенс a (в градусах) помилка виконання. Залишок коду на поточній лінії пропускається.
ASIN A Арксинус A (в градусах) помилка виконання. Залишок коду на поточній лінії пропускається.
ACOS A Арккосинус A (в градусах) помилка виконання. Залишок коду на поточній лінії пропускається.
ATAN A Арктангенс a (в градусах) помилка виконання. Залишок коду на поточній лінії пропускається.

Логічні оператори

Логічні оператори перевіряють, чи є твердження істиною чи брехнею.
Всі логічні оператори повертають або "0 Як False", або "1 Як True"

Оператор операції з числами операції з рядками
| менше ніж повертає 1, Якщо рядок A є першим в алфавітному порядку, повертає 0, якщо ні.
| Більше ніж повертає 0, якщо рядок A є першим в алфавітному порядку, повертає 1, якщо ні.
| менше або дорівнює повертає 1, Якщо рядок A є першим в алфавітному порядку або ідентично рядку B, повертає 0, якщо ні.
| Більше або дорівнює повертає 0, Якщо рядок A є першим в алфавітному порядку або ідентично рядку B, повертає 1, якщо ні.
| Не дорівнює повертає 1, Якщо рядок A Не дорівнює рядку B, 0, якщо вона є.
| дорівнює повертає 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.