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 - это язык программирования, который испол...")
 
m
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Otherlang2
{{Otherlang2
|en=YOLOL
|de=YOLOL:de
|de=YOLOL:de
|en=YOLOL
|fr=YOLOL:fr
|ru=YOLOL:ru
|ua=YOLOL:ua
|jp=YOLOL:jp
|zh-cn=YOLOL语言
|zh-cn=YOLOL语言
|ua=YOLOL:ua
}}


}}
== Коротко ==
== Кратко ==
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
Line 35: Line 38:
  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>
Числові значення в мові програмування-це 64-розрядні десяткові числа з фіксованою комою.<br>
Переменные содержат десятичные числа с точностью до трех знаков после запятой.<br>
Змінні містять десяткові числа з точністю до трьох знаків після коми.<br>
В результате максимальный диапазон значений (даже во время операций) составляет  [-9223372036854775.808, 9223372036854775.807]
В результаті максимальний діапазон значень (навіть під час операцій) становить [-9223372036854775.808, 9223372036854775.807]


  pieVariable = 3.142
  pieVariable = 3.142
* Приведенный выше скрипт присваивает числовое значение 3,142 переменной '''pieVariable'''.
* Наведений вище скрипт присвоює Числове значення 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
*Этот код отправит значение 1 любому устройству, прослушивающему поле DoorState, если значение ButtonState равно 1 в сети передачи данных.


== Операторы и команды ==
if :ButtonState == 1 then :DoorState = 1 end
* Цей код відправить значення 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 = "10" + 15
* Данный скрипт приводит к тому, что переменная ''' previouslyNumber ''' получает строковое значение «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 строку требуется переход на другую строку.<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 260:
  '''end'''
  '''end'''


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


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


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


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


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


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

Latest revision as of 09: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 в градусах) помилка виконання. Залишок коду на поточній лінії пропускається. Професійний
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.