<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.starbasegame.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eclair</id>
	<title>Starbase wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.starbasegame.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eclair"/>
	<link rel="alternate" type="text/html" href="https://wiki.starbasegame.com/index.php?title=Special:Contributions/Eclair"/>
	<updated>2026-06-05T05:12:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.starbasegame.com/index.php?title=User:Eclair&amp;diff=7594</id>
		<title>User:Eclair</title>
		<link rel="alternate" type="text/html" href="https://wiki.starbasegame.com/index.php?title=User:Eclair&amp;diff=7594"/>
		<updated>2020-02-11T18:28:36Z</updated>

		<summary type="html">&lt;p&gt;Eclair: Created page with &amp;quot;Discord: Nick#0060 English / Russian&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Discord: Nick#0060&lt;br /&gt;
English / Russian&lt;/div&gt;</summary>
		<author><name>Eclair</name></author>
	</entry>
	<entry>
		<id>https://wiki.starbasegame.com/index.php?title=YOLOL:ru&amp;diff=7593</id>
		<title>YOLOL:ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.starbasegame.com/index.php?title=YOLOL:ru&amp;diff=7593"/>
		<updated>2020-02-11T18:19:10Z</updated>

		<summary type="html">&lt;p&gt;Eclair: /* Логические операторы */ Понятное русское описание, ёфикация, правка ошибок&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Otherlang2&lt;br /&gt;
|en=YOLOL&lt;br /&gt;
}}&lt;br /&gt;
== Кратко ==&lt;br /&gt;
YOLOL - это язык программирования, который используется для контроля и управления [[Устройства и механизмы | электрическими устройствами]] в игре.&amp;lt;br&amp;gt;&lt;br /&gt;
 Код пишется на строках в [[Чип YOLOL | чипах YOLOL]], которые впоследствии вставляются в [[Модульная стойка для чипов | модульные стойки для чипов (Сокет)]].&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Разъём | Сокет]]  читает и передает сообщения из кода в сеть (систему) корабля.&lt;br /&gt;
&lt;br /&gt;
== Базовая информация ==&lt;br /&gt;
=== Как работает YOLOL? ===&lt;br /&gt;
Код пишется и выполняется на программируемом чипе и может использоваться, как для мониторинга, так и управления [[Устройства и механизмы | устройствами]], соединенных в [[Информационная сеть | сеть передачи данных]].&amp;lt;br&amp;gt;&lt;br /&gt;
Строки кода длиной максимум в 70 символов выполняются в последовательности сверху вниз, повторяя цикл чипа после выполнения последней строки, если только код не содержит инструкций для перенаправления на конкретную строку или полной остановки выполнения.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А если простыми словами:&lt;br /&gt;
# Выполнение кода начинается с первой строки&lt;br /&gt;
# После прочтения первой строки чип переходит к следующей строке на основе интервала времени чипа(то есть задержки выполнения каждой строки, составляющей на данный момент 0.2 секунды)&lt;br /&gt;
# Затем процесс повторяется для 2й, 3й, 4й строки и так далее &lt;br /&gt;
# Чип снова начнет выполнять 1 строку после того, как была выполнена последняя строка(Если конечно же код не содержит инструкций для перенаправления на конкретную строку или полной остановки)&lt;br /&gt;
=== Связанные страницы ===&lt;br /&gt;
* [[Информационная сеть]]&lt;br /&gt;
* [[Устройства и механизмы]]&lt;br /&gt;
* [[Универсальный инструмент | Универсальный инструмент]]&lt;br /&gt;
* [[Чип_YOLOL | Чип YOLOL]]&lt;br /&gt;
&lt;br /&gt;
== Ссылки на команды ==&lt;br /&gt;
=== Без учета регистра ===&lt;br /&gt;
Код YOLOL полностью '''Нечувствителен''' к регистру. Это означает,  что следующие два примера работают идентично друг другу.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 if '''ButtonState''' == 1 then '''DoorState''' = 1 end&lt;br /&gt;
&lt;br /&gt;
 IF '''buttonstate''' == 1 THEN '''doorstate''' = 1 END&lt;br /&gt;
&lt;br /&gt;
* Оба сценария устанавливают ''' doorState '''в 1, если значение''' buttonState '''равно 1.&lt;br /&gt;
* Символы на языке программирования могут быть написаны как строчными, так и прописными буквами.&lt;br /&gt;
** Они анализируются как нечувствительные к регистру.&lt;br /&gt;
** Таким образом, код может выглядеть более организованным.&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
* Переменные в YOLOL слабо типизированы (то есть не требуют проверки правильности типа) и поддерживают два типа данных: '''десятичные числа с фиксированной запятой''' (с точностью до 0.001), а также '''строки'''. &lt;br /&gt;
** Проще говоря, переменные могут быть введены в виде строк или чисел, игнорируя более ранний тип переменной, если предыдущий тип не идентичен, без возникновения ошибки.&lt;br /&gt;
* Каждая переменная всегда имеет один тип, хотя она будет неявно преобразована при необходимости.&lt;br /&gt;
* Значение по умолчанию для неинициализированной переменной равно 0, а нулевые значения не поддерживаются.&lt;br /&gt;
* True и False идентичны значениям &amp;quot;не ноль&amp;quot; и &amp;quot;ноль&amp;quot;, соответственно. &lt;br /&gt;
** True != 0&lt;br /&gt;
** False == 0&lt;br /&gt;
&lt;br /&gt;
Присвоение значения переменной всегда преобразует переменную в тип присваиваемого значения.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&lt;br /&gt;
 ultimateAutopilot = 128.643&lt;br /&gt;
* Это приводит к переменной '''ultimateAutopilot''', содержащей числовое значение 128,643&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ultimateAutopilot = &amp;quot;Error prone&amp;quot;&lt;br /&gt;
* Это приводит к тому, что переменная '''ultimateAutopilot''' является строковой переменной '''Склонность к ошибкам''', и числовое значение 128,643 удаляется.&lt;br /&gt;
&lt;br /&gt;
==== Десятичные числа ====&lt;br /&gt;
Числовые значения в языке программирования - это 64-разрядные десятичные числа с фиксированной запятой.&amp;lt;br&amp;gt;&lt;br /&gt;
Переменные содержат десятичные числа с точностью до трех знаков после запятой.&amp;lt;br&amp;gt;&lt;br /&gt;
В результате максимальный диапазон значений (даже во время операций) составляет  [-9223372036854775.808, 9223372036854775.807]&lt;br /&gt;
&lt;br /&gt;
 pieVariable = 3.142&lt;br /&gt;
* Приведенный выше скрипт присваивает числовое значение 3,142 переменной '''pieVariable'''.&lt;br /&gt;
** Предоставление более точных значений, чем переменные могут хранить работы, но не влияет на конечный результат.&lt;br /&gt;
&lt;br /&gt;
notPieVariable = 0.5772156649&lt;br /&gt;
* Приведенный выше скрипт пытается присвоить числовое значение 0,5772156649 переменной '''notPieVariable'''.&lt;br /&gt;
* Однако конечный результат notPieVariable == 0,577&lt;br /&gt;
** Здесь сокращаются более точные значения, оставляя только три знака после запятой.&lt;br /&gt;
&lt;br /&gt;
==== Строки ====&lt;br /&gt;
&lt;br /&gt;
Чтобы указать строковый литерал на языке программирования, нужное строковое значение должно быть заключено в двойные кавычки.&lt;br /&gt;
&lt;br /&gt;
  badRobots = &amp;quot;saltberia&amp;quot;&lt;br /&gt;
* Этот сценарий присваивает строковое значение &amp;quot;'' saltberia ''&amp;quot; переменной '''badRobots'''.&lt;br /&gt;
&lt;br /&gt;
==== Поля устройств / Внешние переменные ====&lt;br /&gt;
Внешние переменные и поля устройства могут использоваться в языке программирования со следующим синтаксисом: &amp;lt;br&amp;gt;&lt;br /&gt;
* ''': variableName'''&lt;br /&gt;
** '''variableName''' - настроенный идентификатор поля устройства.&lt;br /&gt;
Префикс двоеточия ''':''' используется для идентификации переменной в качестве внешней, в отличие от переменной, которая может быть объявлена и использована в самом коде.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Чип_YOLOL | Чип]], подключенный к [[Устройства и механизмы | устройству]] (модульной стойке), имеет доступ ко всем устройствам в [[Информационная сеть | данной сети]], что предоставляет доступ к изменению или получению значений любых данных для устройств в ней.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if :ButtonState == 1 then :DoorState = 1 end&lt;br /&gt;
*Этот код отправит значение 1 любому устройству, прослушивающему поле DoorState, если значение ButtonState равно 1 в сети передачи данных.&lt;br /&gt;
&lt;br /&gt;
== Операторы и команды ==&lt;br /&gt;
&lt;br /&gt;
Доступные операторы ограничены типом (другими словами - уровнем) программируемого чипа.&amp;lt;br&amp;gt;&lt;br /&gt;
Базовые чипы имеют ограниченный набор функций, в то время, как более продвинутые могут выполнять более сложные операции.&lt;br /&gt;
&lt;br /&gt;
=== Основные арифметические и операторы присваивания ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Оператор || Операции с числами || Операции со строками&lt;br /&gt;
|-&lt;br /&gt;
| A + B || Сложение || К строке A добавляется строка B.&lt;br /&gt;
|-&lt;br /&gt;
| A - B || Вычитание || Последнее совпадение строки B в строке A удаляется из строки A.&lt;br /&gt;
|-&lt;br /&gt;
| A * B || Умножение || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A / B || Деление || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A ++ || Постинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает исходное значение (До добавления).&lt;br /&gt;
|-&lt;br /&gt;
| A -- || Постдекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить &amp;quot;&amp;quot;. Возвращает исходное значение (До удаления).&lt;br /&gt;
|-&lt;br /&gt;
| ++ A  || Преинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает получившееся значение.&lt;br /&gt;
|-&lt;br /&gt;
| -- A || Предекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить &amp;quot;&amp;quot;. Возвращает получившееся значение.&lt;br /&gt;
|-&lt;br /&gt;
| A = B || Присваивание (Переменной A присваивается значение переменной B) || Присваивание&lt;br /&gt;
|-&lt;br /&gt;
| A += B || Присваивание сложения (A=A+B) || Строке A присваивается значение операции A+B.&lt;br /&gt;
|-&lt;br /&gt;
| A -= B || Присваивание вычитания (A=A-B) || Строке A присваивается значение операции A-B.&lt;br /&gt;
|-&lt;br /&gt;
| A *= B || Присваивание умножения (A=A*B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A /= B || Присваивание деления (A=A/B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A %= B || Присваивание остатка от деления (A=A%B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A ^ B || Возведение в степень || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A % B || Остаток от деления || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ABS A || Остаток от деления (абсолютное значение) (A=A if A&amp;gt;=0, else A=-A) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A! || Факториал || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| SQRT A || Корень квадратный из A || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| SIN A || Синус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| COS A || Косинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| TAN A || Тангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ASIN A || Арксинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ACOS A || Арккосинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ATAN A || Арктангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Логические операторы ==&lt;br /&gt;
Логические операторы проверяют, является ли утверждение истиной или ложью. &amp;lt;br&amp;gt;&lt;br /&gt;
Все логические операторы возвращают либо '''&amp;quot;0 как False&amp;quot;''', либо '''&amp;quot;1 как True&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Оператор || Операции с числами || Операции со строками&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;lt; B || Меньше чем || Возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;gt; B || Больше чем || Возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;lt;= B || Меньше или равно || Возвращает 1, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 0, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;gt;= B || Больше или равно || Возвращает 0, если строка A является первой в алфавитном порядке или идентично строке B, возвращает 1, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A != B || Не равно || Возвращает 1, если строка A не равна строке B, 0, если она есть.&lt;br /&gt;
|-&lt;br /&gt;
| A == B || Равно || Возвращает 1, если строка A равна строке B, 0, если нет.&lt;br /&gt;
|}&lt;br /&gt;
=== Смешивание типов переменных в операциях ===&lt;br /&gt;
При использовании смешанных типов переменных, операция обрабатывается используя все параметры как тип «строка».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 previouslyNumber = &amp;quot;10&amp;quot; + 15&lt;br /&gt;
* Данный скрипт приводит к тому, что переменная ''' previouslyNumber ''' получает строковое значение «1015».&lt;br /&gt;
** Обратите внимание, что сами используемые параметры не меняют типы, их значения просто приводятся в виде строк для выполнения операции:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 purelyNumber = 15&lt;br /&gt;
 purelyString = &amp;quot;10&amp;quot; + purelyNumber&lt;br /&gt;
* После того, как этот скрипт выполнится, ''' purelyString ''' будет содержать строковое значение '''1015''', однако значение переменной ''' purelyNumber ''' будет всё ещё равно числовому значению 15.&lt;br /&gt;
&lt;br /&gt;
=== Goto ===&lt;br /&gt;
Команда используется, когда в обычном порядке чтения скрипта с 1 по 20 строку требуется переход на другую строку.&amp;lt;br&amp;gt;&lt;br /&gt;
Как использовать '''goto''':&lt;br /&gt;
* '''goto lineNumber'''&lt;br /&gt;
** '''lineNumber''' - номер линии скрипта, на которую перейдёт выполнение.&lt;br /&gt;
** В случае выполнения команды '''goto''', любой оставшийся на той же линии скрипт выполнен '''не''' будет.&lt;br /&gt;
*** При использовании '''goto''' внутри условия ''if'', в случае, если логическое выражение в условии будет '''False''', то команда '''goto''' не выполнится.&lt;br /&gt;
** Несколько команд '''goto''' могут быть использованы на одной линии, если находятся в условиях ''if''.&lt;br /&gt;
&lt;br /&gt;
 if variable == 5 then '''goto 4''' end '''goto 6'''&lt;br /&gt;
Скрипт, приведённый выше, перейдёт на линию 4, если значение '''variable''' равно 5. &amp;lt;br&amp;gt;&lt;br /&gt;
В противном случае он перейдёт на линию номер 6.&lt;br /&gt;
&lt;br /&gt;
=== Условный оператор If-Else ===&lt;br /&gt;
Условный оператор if-else используется для проверки логического выражения и выполнения скрипта в зависимости от истинности этого выражения.&amp;lt;br&amp;gt;&lt;br /&gt;
Условный оператор используется в следующем виде:&lt;br /&gt;
* '''if ''условие'' then ''действие'' else ''действие'' end'''&lt;br /&gt;
** Условие - это логическое утверждение, результатом которого является численное значение (где 0 обозначает False, а все остальные значения - True).&lt;br /&gt;
** Действие - скрипт, выполняемый в зависимости от истинности условия.&lt;br /&gt;
** Все условия if-else должны иметь end в конце.&lt;br /&gt;
&lt;br /&gt;
'''If''' можно использовать для разделения выполнения скрипта на два возможных результата на основе значения переменной '''variable'''. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Пример:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 '''if''' variable != 2 '''then''' endResult = 3 '''else''' endResult = 4 '''end'''&lt;br /&gt;
&lt;br /&gt;
* Этот скрипт устанавливает значение 3 переменной '''endResult''', если значение '''variable''' не равно 2.&lt;br /&gt;
* Если значение переменной '''variable''' равно 2, для переменной '''endResult''' устанавливается значение 4.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что блок '''else''' можно пропустить, если он не нужен. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Пример:''' &amp;lt;br&amp;gt;&lt;br /&gt;
  '''if''' variable != 2 '''then''' endResult = 3 '''end'''&lt;br /&gt;
* Этот скрипт устанавливает значение '''3''' для переменной '''endResult''', если '''variable''' не имеет значения 2 и больше ничего не делает.&lt;br /&gt;
==== Вложение условий if ====&lt;br /&gt;
Можно поместить условные операторы внутри результатов true / false другого условного оператора, чтобы добиться дальнейшего ветвления выполнения. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Пример:''' &amp;lt;br&amp;gt;&lt;br /&gt;
 '''if''' variable == 0 '''then''' endResult = 1 '''else''' '''if''' variable == 1 '''then''' endResult = 2 '''end end''' &lt;br /&gt;
* Этот скрипт устанавливает значение 1 переменной '''endResult''', если '''variable''' равно 0.&lt;br /&gt;
* Если '''variable''' не равно 0, но равно 1, то '''endResult''' устанавливается значение 2.&lt;br /&gt;
&lt;br /&gt;
'''Пример:''' &amp;lt;br&amp;gt;&lt;br /&gt;
  '''if''' variable == 0 '''then''' '''if''' endResult == 1 '''then''' endResult = 2 '''end''' '''else''' endResult = 1 '''end'''&lt;br /&gt;
* Этот скрипт устанавливает '''endResult''' значение 2, если '''variable''' имеет значение 0, а '''endResult''' равно 1.&lt;br /&gt;
* В противном случае он устанавливает '''endResult''' значение 1.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что проще спланировать и отладить поток скрипта, отформатировав сценарий, содержащий вложенные операторы '''if''', в более аккуратную форму с отступами и переносами. &amp;lt;br&amp;gt;&lt;br /&gt;
Однако написание подобного скрипта не будет работать на [[Чип_YOLOL  | чипе]], но это может быть полезно при отладке скриптов.&lt;br /&gt;
&lt;br /&gt;
Форматированный второй пример вложенного '''if''':&lt;br /&gt;
&lt;br /&gt;
 '''if''' variable == 0 '''then'''&lt;br /&gt;
     '''if''' endResult == 1 '''then'''&lt;br /&gt;
         endResult = 2&lt;br /&gt;
     '''end'''&lt;br /&gt;
 '''else'''&lt;br /&gt;
     endResult = 1&lt;br /&gt;
 '''end'''&lt;br /&gt;
&lt;br /&gt;
=== Комментарии ===&lt;br /&gt;
Комментарии полезны при написании скрипта, который используется несколькими программистами. &amp;lt;br&amp;gt;&lt;br /&gt;
Обратите внимание, что комментарии также занимают пространство из предопределённого предела линии скрипта в 70 символов и не исключаются из него. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Комментирование используется со следующим синтаксисом:&lt;br /&gt;
* // '''Текст'''&lt;br /&gt;
** '''Текст''' может быть любым однострочным набором символов.&lt;br /&gt;
&lt;br /&gt;
 '''//''' Это комментарий. Он объяснит, как работают другие строки скрипта.&lt;br /&gt;
* Пример возможного синтаксиса комментариев.&lt;br /&gt;
&lt;br /&gt;
== Ошибки ==&lt;br /&gt;
&lt;br /&gt;
Существует два типа ошибок, которые могут возникнуть с языком программирования.&lt;br /&gt;
# Синтаксические ошибки&lt;br /&gt;
# Ошибки во время выполнения&lt;br /&gt;
&lt;br /&gt;
* Синтаксические ошибки происходят из-за неверного и не разбираемого скрипта и приводят к тому, что вся строка не выполняется.&lt;br /&gt;
* Ошибки во время выполнения можно отследить только во время выполнения скрипта. Они приводят к прерыванию выполнения строки, но влияют до тех пор, пока ошибка не останется.&lt;br /&gt;
[[Category:Сети|YOLOL:ru]]&lt;/div&gt;</summary>
		<author><name>Eclair</name></author>
	</entry>
	<entry>
		<id>https://wiki.starbasegame.com/index.php?title=YOLOL:ru&amp;diff=7540</id>
		<title>YOLOL:ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.starbasegame.com/index.php?title=YOLOL:ru&amp;diff=7540"/>
		<updated>2020-02-11T02:27:36Z</updated>

		<summary type="html">&lt;p&gt;Eclair: &amp;quot;Русифицирован&amp;quot; текст (вместо дословного), добавлены уточняющие скобки где это необходимо. Форматировано к одному виду.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Otherlang2&lt;br /&gt;
|en=YOLOL&lt;br /&gt;
}}&lt;br /&gt;
== Кратко ==&lt;br /&gt;
YOLOL - это язык программирования, который используется для контроля и управления [[Устройства и механизмы | электрическими устройствами]] в игре.&amp;lt;br&amp;gt;&lt;br /&gt;
 Код пишется на строках в [[Чип YOLOL | чипах YOLOL]], которые впоследствии вставляются в [[Модульная стойка для чипов | модульные стойки для чипов (Сокет)]].&amp;lt;br&amp;gt;&lt;br /&gt;
 [[Разъём | Сокет]]  читает и передает сообщения из кода в сеть (систему) корабля.&lt;br /&gt;
&lt;br /&gt;
== Базовая информация ==&lt;br /&gt;
=== Как работает YOLOL? ===&lt;br /&gt;
Код пишется и выполняется на программируемом чипе и может использоваться, как для мониторинга, так и управления [[Устройства и механизмы | устройствами]], соединенных в [[Информационная сеть | сеть передачи данных]].&amp;lt;br&amp;gt;&lt;br /&gt;
Строки кода длиной максимум в 70 символов выполняются в последовательности сверху вниз, повторяя цикл чипа после выполнения последней строки, если только код не содержит инструкций для перенаправления на конкретную строку или полной остановки выполнения.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А если простыми словами:&lt;br /&gt;
# Выполнение кода начинается с первой строки&lt;br /&gt;
# После прочтения первой строки чип переходит к следующей строке на основе интервала времени чипа(то есть задержки выполнения каждой строки, составляющей на данный момент 0.2 секунды)&lt;br /&gt;
# Затем процесс повторяется для 2й, 3й, 4й строки и так далее &lt;br /&gt;
# Чип снова начнет выполнять 1 строку после того, как была выполнена последняя строка(Если конечно же код не содержит инструкций для перенаправления на конкретную строку или полной остановки)&lt;br /&gt;
=== Связанные страницы ===&lt;br /&gt;
* [[Информационная сеть]]&lt;br /&gt;
* [[Устройства и механизмы]]&lt;br /&gt;
* [[Универсальный инструмент | Универсальный инструмент]]&lt;br /&gt;
* [[Чип_YOLOL | Чип YOLOL]]&lt;br /&gt;
&lt;br /&gt;
== Ссылки на команды ==&lt;br /&gt;
=== Без учета регистра ===&lt;br /&gt;
Код YOLOL полностью '''Нечувствителен''' к регистру. Это означает,  что следующие два примера работают идентично друг другу.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 if '''ButtonState''' == 1 then '''DoorState''' = 1 end&lt;br /&gt;
&lt;br /&gt;
 IF '''buttonstate''' == 1 THEN '''doorstate''' = 1 END&lt;br /&gt;
&lt;br /&gt;
* Оба сценария устанавливают ''' doorState '''в 1, если значение''' buttonState '''равно 1.&lt;br /&gt;
* Символы на языке программирования могут быть написаны как строчными, так и прописными буквами.&lt;br /&gt;
** Они анализируются как нечувствительные к регистру.&lt;br /&gt;
** Таким образом, код может выглядеть более организованным.&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
* Переменные в YOLOL слабо типизированы (то есть не требуют проверки правильности типа) и поддерживают два типа данных: '''десятичные числа с фиксированной запятой''' (с точностью до 0.001), а также '''строки'''. &lt;br /&gt;
** Проще говоря, переменные могут быть введены в виде строк или чисел, игнорируя более ранний тип переменной, если предыдущий тип не идентичен, без возникновения ошибки.&lt;br /&gt;
* Каждая переменная всегда имеет один тип, хотя она будет неявно преобразована при необходимости.&lt;br /&gt;
* Значение по умолчанию для неинициализированной переменной равно 0, а нулевые значения не поддерживаются.&lt;br /&gt;
* True и False идентичны значениям &amp;quot;не ноль&amp;quot; и &amp;quot;ноль&amp;quot;, соответственно. &lt;br /&gt;
** True != 0&lt;br /&gt;
** False == 0&lt;br /&gt;
&lt;br /&gt;
Присвоение значения переменной всегда преобразует переменную в тип присваиваемого значения.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&lt;br /&gt;
 ultimateAutopilot = 128.643&lt;br /&gt;
* Это приводит к переменной '''ultimateAutopilot''', содержащей числовое значение 128,643&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ultimateAutopilot = &amp;quot;Error prone&amp;quot;&lt;br /&gt;
* Это приводит к тому, что переменная '''ultimateAutopilot''' является строковой переменной '''Склонность к ошибкам''', и числовое значение 128,643 удаляется.&lt;br /&gt;
&lt;br /&gt;
==== Десятичные числа ====&lt;br /&gt;
Числовые значения в языке программирования - это 64-разрядные десятичные числа с фиксированной запятой.&amp;lt;br&amp;gt;&lt;br /&gt;
Переменные содержат десятичные числа с точностью до трех знаков после запятой.&amp;lt;br&amp;gt;&lt;br /&gt;
В результате максимальный диапазон значений (даже во время операций) составляет  [-9223372036854775.808, 9223372036854775.807]&lt;br /&gt;
&lt;br /&gt;
 pieVariable = 3.142&lt;br /&gt;
* Приведенный выше скрипт присваивает числовое значение 3,142 переменной '''pieVariable'''.&lt;br /&gt;
** Предоставление более точных значений, чем переменные могут хранить работы, но не влияет на конечный результат.&lt;br /&gt;
&lt;br /&gt;
notPieVariable = 0.5772156649&lt;br /&gt;
* Приведенный выше скрипт пытается присвоить числовое значение 0,5772156649 переменной '''notPieVariable'''.&lt;br /&gt;
* Однако конечный результат notPieVariable == 0,577&lt;br /&gt;
** Здесь сокращаются более точные значения, оставляя только три знака после запятой.&lt;br /&gt;
&lt;br /&gt;
==== Строки ====&lt;br /&gt;
&lt;br /&gt;
Чтобы указать строковый литерал на языке программирования, нужное строковое значение должно быть заключено в двойные кавычки.&lt;br /&gt;
&lt;br /&gt;
  badRobots = &amp;quot;saltberia&amp;quot;&lt;br /&gt;
* Этот сценарий присваивает строковое значение &amp;quot;'' saltberia ''&amp;quot; переменной '''badRobots'''.&lt;br /&gt;
&lt;br /&gt;
==== Поля устройств / Внешние переменные ====&lt;br /&gt;
Внешние переменные и поля устройства могут использоваться в языке программирования со следующим синтаксисом: &amp;lt;br&amp;gt;&lt;br /&gt;
* ''': variableName'''&lt;br /&gt;
** '''variableName''' - настроенный идентификатор поля устройства.&lt;br /&gt;
Префикс двоеточия ''':''' используется для идентификации переменной в качестве внешней, в отличие от переменной, которая может быть объявлена и использована в самом коде.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Чип_YOLOL | Чип]], подключенный к [[Устройства и механизмы | устройству]] (модульной стойке), имеет доступ ко всем устройствам в [[Информационная сеть | данной сети]], что предоставляет доступ к изменению или получению значений любых данных для устройств в ней.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if :ButtonState == 1 then :DoorState = 1 end&lt;br /&gt;
*Этот код отправит значение 1 любому устройству, прослушивающему поле DoorState, если значение ButtonState равно 1 в сети передачи данных.&lt;br /&gt;
&lt;br /&gt;
== Операторы и команды ==&lt;br /&gt;
&lt;br /&gt;
Доступные операторы ограничены типом (другими словами - уровнем) программируемого чипа.&amp;lt;br&amp;gt;&lt;br /&gt;
Базовые чипы имеют ограниченный набор функций, в то время, как более продвинутые могут выполнять более сложные операции.&lt;br /&gt;
&lt;br /&gt;
=== Основные арифметические и операторы присваивания ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Оператор || Операции с числами || Операции со строками&lt;br /&gt;
|-&lt;br /&gt;
| A + B || Сложение || К строке A добавляется строка B.&lt;br /&gt;
|-&lt;br /&gt;
| A - B || Вычитание || Последнее совпадение строки B в строке A удаляется из строки A.&lt;br /&gt;
|-&lt;br /&gt;
| A * B || Умножение || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A / B || Деление || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A ++ || Постинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает исходное значение (До добавления).&lt;br /&gt;
|-&lt;br /&gt;
| A -- || Постдекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить &amp;quot;&amp;quot;. Возвращает исходное значение (До удаления).&lt;br /&gt;
|-&lt;br /&gt;
| ++ A  || Преинкрементация (A=A+1) || Добавляет пробел к строке А. Возвращает получившееся значение.&lt;br /&gt;
|-&lt;br /&gt;
| -- A || Предекрементация (A=A-1) || Удаляет последний символ строки. Приводит к ошибке при попытке удалить &amp;quot;&amp;quot;. Возвращает получившееся значение.&lt;br /&gt;
|-&lt;br /&gt;
| A = B || Присваивание (Переменной A присваивается значение переменной B) || Присваивание&lt;br /&gt;
|-&lt;br /&gt;
| A += B || Присваивание сложения (A=A+B) || Строке A присваивается значение операции A+B.&lt;br /&gt;
|-&lt;br /&gt;
| A -= B || Присваивание вычитания (A=A-B) || Строке A присваивается значение операции A-B.&lt;br /&gt;
|-&lt;br /&gt;
| A *= B || Присваивание умножения (A=A*B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A /= B || Присваивание деления (A=A/B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A %= B || Присваивание остатка от деления (A=A%B) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A ^ B || Возведение в степень || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A % B || Остаток от деления || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ABS A || Остаток от деления (абсолютное значение) (A=A if A&amp;gt;=0, else A=-A) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| A! || Факториал || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| SQRT A || Корень квадратный из A || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| SIN A || Синус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| COS A || Косинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| TAN A || Тангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ASIN A || Арксинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ACOS A || Арккосинус A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|-&lt;br /&gt;
| ATAN A || Арктангенс A (в градусах) || Ошибка выполнения. Остаток кода на текущей линии пропускается.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Логические операторы ==&lt;br /&gt;
Логические операторы проверяют, является ли утверждение истиной или ложью. &amp;lt;br&amp;gt;&lt;br /&gt;
Все логические операторы возвращают либо '''&amp;quot;0 для False&amp;quot;''', либо '''&amp;quot;1 для True&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Оператор || Нумерной оператор || Стройчный оператор&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;lt; B || Less than || возвращает 1, если строка A является первой в алфавитном порядке, возвращает 0, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;gt; B || Greater than || возвращает 0, если строка A является первой в алфавитном порядке, возвращает 1, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;lt;= B ||Less than or equal to || возвращает 1, если строка A является первой в алфавитном порядке или идентична строке B, возвращает 0, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A &amp;gt;= B || Greater than or equal to || возвращает 0, если строка A является первой в алфавитном порядке или идентична строке B, возвращает 1, если нет.&lt;br /&gt;
|-&lt;br /&gt;
| A != B || Not equal to || возвращает 1, если строка A не равна строке B, 0, если она есть.&lt;br /&gt;
|-&lt;br /&gt;
| A == B || Equal to || возвращает 1, если строка A равна строке B, 0, если нет.&lt;br /&gt;
|}&lt;br /&gt;
=== Смешивание типов переменных в операциях ===&lt;br /&gt;
Смешивание типов переменных в операции обрабатывает операцию, используя все параметры как «строки».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 previouslyNumber = &amp;quot;10&amp;quot; + 15&lt;br /&gt;
* Приведенный выше скрипт приводит к '' 'previousNumber' '', содержащему строковое значение «1015».&lt;br /&gt;
** Обратите внимание, что сами используемые параметры не меняют типы, их значения просто приводятся в виде строк для цели операции:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 purelyNumber = 15&lt;br /&gt;
 purelyString = &amp;quot;10&amp;quot; + purelyNumber&lt;br /&gt;
* Когда этот сценарий выполнен, ''' purelyString ''' содержит строковое значение &amp;quot;1015&amp;quot;, в то время как ''' purelyNumber'''все еще содержит числовое значение 15.&lt;br /&gt;
&lt;br /&gt;
=== Goto ===&lt;br /&gt;
Команда используется, когда обычный порядок чтения кода с 1 по 20 строку не желателен или требует изменений на определенном этапе.&lt;br /&gt;
Как использовать goto:&lt;br /&gt;
*'''goto lineNumber'''&lt;br /&gt;
** lineNumber - строка, которую команда выполнит при выполнении скрипта. &amp;lt;br&amp;gt;&lt;br /&gt;
** Любой оставшийся скрипт, который находится в той же строке после команды goto, не будет выполнен.&lt;br /&gt;
*** использование операторов if перед goto игнорирует синтаксис goto, предполагая, что оператор if равен false&lt;br /&gt;
** Несколько команд goto могут быть добавлены в одну строку с помощью условных выражений, так как '''False''' команды goto пропускаются.&lt;br /&gt;
&lt;br /&gt;
 if variable == 5 then '''goto 4''' end '''goto 6'''&lt;br /&gt;
Сценарий, приведенный выше, перейдет к строке 4, если значение '''переменной''' равно 5. &amp;lt;br&amp;gt;&lt;br /&gt;
В противном случае он перейдет к строке № 6.&lt;br /&gt;
&lt;br /&gt;
=== Операторы If-Else ===&lt;br /&gt;
Операторы if-else используются для разветвления кода по разным путям в зависимости от того, выполняются ли те или иные условия.&amp;lt;br&amp;gt;&lt;br /&gt;
Они используют следующий синтаксис:&lt;br /&gt;
* '''If ''условие'' then ''действие'' else ''действие'' end'''&lt;br /&gt;
** Условие - это логическое утверждение, результатом которого является численное значение (где 0 обозначает False, а все остальные значения - True).&lt;br /&gt;
** Действия, выполняемые в результате проверки условия, являются фрагментами кода.  Все операторы  if-else должны иметь end в конце. &lt;br /&gt;
&lt;br /&gt;
Можно использовать для временного разделения выполнения скрипта на два возможных результата на основе значений переменной. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Пример:'''&amp;lt;br&amp;gt;&lt;br /&gt;
 '''if''' variable != 2 '''then''' endResult = 3 '''else''' endResult = 4 '''end'''&lt;br /&gt;
&lt;br /&gt;
* Этот скрипт устанавливает значение '''endResult''' в 3, если '''variable''' не имеет значения 2.&lt;br /&gt;
* Если значение '''variable'''' равно 2, для '''endResult''' установлено значение 4.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что оператор else -part можно пропустить, если он не нужен. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Пример:''' &amp;lt;br&amp;gt;&lt;br /&gt;
  '''if''' variable != 2 '''then''' endResult = 3 '''end'''&lt;br /&gt;
* Этот скрипт устанавливает значение «3» только в «endResult», если «переменная» не имеет значения 2 и больше ничего не делает.&lt;br /&gt;
==== Вложение IF условий ====&lt;br /&gt;
Можно поместить условные операторы внутри блоков операторов true / false, чтобы добиться дальнейшего ветвления выполнения. &amp;lt;br&amp;gt;&lt;br /&gt;
'''Пример:''' &amp;lt;br&amp;gt;&lt;br /&gt;
 '''if''' variable == 0 '''then''' endResult = 1 '''else''' '''if''' variable == 1 '''then''' endResult = 2 '''end end''' &lt;br /&gt;
* Этот скрипт устанавливает '''endResult''' в 1, если '''variable''' равно 0.&lt;br /&gt;
* Если '''variable''' не равно 0, но равно 1, '''endResult''' устанавливается в 2.&lt;br /&gt;
&lt;br /&gt;
'''Пример:''' &amp;lt;br&amp;gt;&lt;br /&gt;
  '''if''' variable == 0 '''then''' '''if''' endResult == 1 '''then''' endResult = 2 '''end''' '''else''' endResult = 1 '''end'''&lt;br /&gt;
* Этот скрипт устанавливает '''endResult''' в 2, если '''variable''' имеет значение 0, а '''endResult''' равно 1.&lt;br /&gt;
* В противном случае он устанавливает '''endResult''' в 1.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что проще спланировать и отладить поток сценариев, отформатировав сценарий, содержащий вложенные операторы if, в более аккуратную форму с отступами. &amp;lt;br&amp;gt;&lt;br /&gt;
Также обратите внимание, что написание подобного скрипта не будет работать на [[Чип_YOLOL  | чипе]], но это может быть полезно при отладке скриптов.&lt;br /&gt;
&lt;br /&gt;
Это второй вложенный пример в формате:&lt;br /&gt;
&lt;br /&gt;
 '''if''' variable == 0 '''then'''&lt;br /&gt;
     '''if''' otherVariable == 1 '''then'''&lt;br /&gt;
         otherVariable = 2&lt;br /&gt;
     '''end'''&lt;br /&gt;
 '''else'''&lt;br /&gt;
     otherVariable = 1&lt;br /&gt;
 '''end'''&lt;br /&gt;
&lt;br /&gt;
=== Комментарии ===&lt;br /&gt;
Комментарии полезны при написании кода, который используется многими программистами. &amp;lt;br&amp;gt;&lt;br /&gt;
Обратите внимание, что комментарии также занимают пространство из предопределенного предела строки в 70 символов и не исключаются из него. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Комментирование используется со следующим синтаксисом:&lt;br /&gt;
* // '''Текст'''&lt;br /&gt;
** Текст может быть любым однострочным набором символов.&lt;br /&gt;
&lt;br /&gt;
 '''//''' Это комментарий. Он объяснит, как работают другие строки скрипта.&lt;br /&gt;
* Пример возможного синтаксиса комментариев&lt;br /&gt;
&lt;br /&gt;
== Ошибки ==&lt;br /&gt;
&lt;br /&gt;
Существует два типа ошибок, которые могут возникнуть с языком программирования.&lt;br /&gt;
# Синтаксические ошибки&lt;br /&gt;
# Ошибки во время выполнения&lt;br /&gt;
&lt;br /&gt;
* Синтаксические ошибки происходят из-за неверного и не разбираемого скрипта и приводят к тому, что вся строка не выполняется.&lt;br /&gt;
* Ошибки во время выполнения можно отследить только во время выполнения скрипта. Они приводят к прерыванию выполнения строки, но влияют до тех пор, пока ошибка не останется.&lt;br /&gt;
[[Category:Сети|YOLOL:ru]]&lt;/div&gt;</summary>
		<author><name>Eclair</name></author>
	</entry>
</feed>