Змінна (variable) — це іменоване місце в пам'яті, де ви можете зберігати значення, наприклад, число.
Є чотири типи змінних: число (number), рядок (string), булеве значення (boolean) та колір (color).
Коли ви створюєте змінну, ви повинні вказати її тип, і цей тип не можна змінювати пізніше.
Наприклад, для використання як лічильника, ви можете "збільшити змінну, що називається loopCount (лічильник циклів) всередині циклу, що повторюється 4 рази. Коли loopCount = 4, встановіть світлодіод у червоний колір.
Це значення можна отримати в будь-якій частині вашої програми, використовуючи ім'я змінної. Будь-який код, що потребує значення, може використовувати вашу іменовану змінну.


Нижче наведено кілька базових методів використання змінних, але ви не обмежені лише ними.
Defining Variables (оголошення змінних)
- При текстовому програмуванні використовуйте ключове слово var для оголошення нової змінної.
- Ім'я змінної повинно починатися з літери або знака підкреслення (_), і може містити літери, цифри та знак підкреслення.
- Великі та малі літери різні, оскільки JavaScript чутливий до регістру.
- Змінна, оголошена поза будь-якою функцією, є глобальною. Її можна використовувати в основному циклі або в будь-якій функції, визначеній після неї. Для зручності корисно оголошувати змінні до основного циклу, як це зроблено в прикладах нижче.
- Використовуйте оператор = для присвоєння значення змінній. Це можна робити в будь-якому місці вашого коду, включаючи момент оголошення змінної.
- Більше однієї змінної можна оголосити в рядку через кому, або оголосити на кількох рядках, розділяючи їх крапкою з комою, ось так:
// Глобальні змінні — можуть використовуватися в будь-якому місці вашої програми
var time = 3.55, repeat = 6.1;
var predict = 2;
async function startProgram() {
var localValue = -7; // Ця змінна може використовуватись тільки всередині функції startProgram
// код
}Це демонструє базовий принцип оголошення змінних, де значення змінних можна використовувати у програмі для виконання різних операцій.
Using Variables (Використання змінних)
Щоб використовувати значення, збережене у вашій змінній, потрібно «посилатись» на змінну у вашому коді.
Для цього просто напишіть ім’я змінної в будь-якому місці, де потрібно використати її значення.
Наприклад, щоб змінити колір робота після зіткнення:
var color = {r:0, g:255, b:0}; // Початковий колір (зелений)
async function changeColor() {
color = {r:255, g:0, b:0}; // Зміна кольору на червоний
};
registerEvent(EventType.onCollision, changeColor);
async function startProgram() {
while (true) {
setMainLed(color); // Встановлення кольору на світлодіоді
await delay(0.1);
}
};Кожного разу, коли відбудеться зіткнення, викликається функція changeColor(), яка змінює колір на червоний.
Основний цикл програми періодично оновлює колір світлодіода відповідно до значення змінної color.
Variables as Counters (Змінні як лічильники)
Змінні можна використовувати як лічильники, щоб змінювати їх значення в основному циклі на основі певної умови. Наприклад, розширимо програму зі зіткненнями, щоб підрахувати кількість зіткнень, використовуючи var numCollisions:
var color = {r:0, g:255, b:0}; // Початковий колір (зелений)
var numCollisions = 0; // Лічильник зіткнень
var report = false; // Прапор для повідомлення
async function changeColor() {
color = {r:255, g:0, b:0}; // Зміна кольору на червоний
// Збільшуємо лічильник зіткнень на 1
++numCollisions;
report = true; // Встановлюємо прапор для повідомлення
};
registerEvent(EventType.onCollision, changeColor);
async function startProgram() {
while (true) {
setMainLed(color); // Встановлення кольору на світлодіоді
if (report) {
// Кількість зіткнень змінилася, повідомляємо користувача
speak("" + numCollisions);
delay(1);
color = {r:0, g:255, b:0}; // Відновлюємо зелений колір
report = false; // Скидаємо прапор
}
await delay(0.1);
}
};Кожного разу, коли відбувається зіткнення, лічильник numCollisions збільшується на 1, і програма повідомляє кількість зіткнень за допомогою голосового повідомлення.
Comparing Variables (Порівняння змінних)
Змінні також можна порівнювати для створення умовної логіки. Наприклад, розширимо програму зі зміною кольору, щоб вона завершувалась, коли досягнуто певної кількості зіткнень:
var color = {r:0, g:255, b:0}; // Початковий колір (зелений)
var numCollisions = 0; // Лічильник зіткнень
var report = false; // Прапор для повідомлення
const MAX_COLLISIONS = 3; // Максимальна кількість зіткнень
async function changeColor() {
color = {r:255, g:0, b:0}; // Зміна кольору на червоний
// Збільшуємо лічильник зіткнень на 1
++numCollisions;
report = true; // Встановлюємо прапор для повідомлення
};
registerEvent(EventType.onCollision, changeColor);
async function startProgram() {
while (true) {
setMainLed(color); // Встановлення кольору на світлодіоді
if (report) {
// Кількість зіткнень змінилася, повідомляємо користувача
speak("" + numCollisions);
delay(1);
color = {r:0, g:255, b:0}; // Відновлюємо зелений колір
report = false; // Скидаємо прапор
// Перевіряємо, чи досягнуто максимальної кількості зіткнень
if (numCollisions === MAX_COLLISIONS) {
speak("All done!"); // Повідомляємо, що програма завершена
await delay(1.5);
exitProgram(); // Завершуємо програму
}
}
await delay(0.1);
}
}Програма завершується після досягнення максимальної кількості зіткнень (MAX_COLLISIONS), після чого відтворюється повідомлення "All done!" і програма припиняє роботу.
Sensors Reading (Зчитування датчиків)
Датчик схожий на змінну типу число, але має попередньо визначений контекст апаратного датчика, як, наприклад, гіроскоп. Ви можете зчитувати поточне значення датчика так само, як змінну, за допомогою команди speak. Наприклад, щоб зчитувати реальну швидкість під час прискорення, використовуйте:
var speed = 20;
async function startProgram() {
await speak("Velocity in centimeters per second", true); // Оголошуємо, що будемо зчитувати швидкість
for (var _i1 = 0; _i1 < 4; _i1++) {
setSpeed(speed); // Встановлюємо швидкість
await delay(1);
await speak(buildString("", Math.round(Math.sqrt((getVelocity().x ** 2) + (getVelocity().y ** 2)))), true); // Зчитуємо і оголошуємо швидкість
speed = (speed + 20); // Збільшуємо швидкість
}
stopRoll(); // Зупиняємо рух
}Програма зчитує поточну швидкість робота (яка залежить від величини швидкості по осях X і Y), і оголошує це кожні 1 секунду, збільшуючи швидкість після кожного циклу.


Змінна типу String — це значення текстового рядка.
Вони дуже корисні для іменування гравців у грі, визначення результатів або проголошення будь-якого динамічного тексту.
Зазвичай вони конкатенуються в команді speak.
Наприклад, ви можете використати це в програмі, щоб оголосити, що черга гравця настала:
var playerName = ""; // Змінна для імені гравця
async function startProgram() {
playerName = "Bill"; // Ім’я гравця
await speak(buildString("It's your turn", playerName), true); // Оголошення черги гравця
}Програма оголошує, що черга гравця з ім’ям "Bill" наступна. Вона використовує змінну playerName для динамічного виведення тексту.


Змінна типу Boolean — це змінна, що зберігає логічне значення, яке може бути або true, або false.
Це корисно для виконання умовних перевірок або для збереження станів, що вимагають двох можливих значень.


Змінна типу Color зберігає значення RGB, яке відноситься до кольору, що можна використовувати для динамічного зчитування та встановлення значень кольору.
Ви також можете генерувати зрозуміле ім’я кольору на основі значень RGB для нижченаведених кольорів.
Таблиця конвертує ваші RGB значення в найближчий відповідник, якщо вони не збігаються точно.
| Black | r: 000, g: 000, b: 000
| Dark Grey | r: 060, g: 060, b: 060
| Gray | r: 100, g: 100, b: 100
| Light Grey | r: 200, g: 200, b: 200
| Dark Blue | r: 000, g: 000, b: 100
| Blue | r: 000, g: 000, b: 255
| Light Blue | r: 175, g: 175, b: 255
| Cyan | r: 000, g: 255, b: 255
| Dark Purple | r: 100, g: 000, b: 100
| Purple | r: 127, g:000, b: 255
| Light Purple | r: 255, g: 175, b: 255
| Magenta | r: 255, g: 000, b: 255
| Dark Red | r: 100, g: 000, b: 050
| Red | r: 255, g: 000, b: 000
| Pink | r: 255, g: 000, b: 127
| Brown | r: 100, g: 000, b: 000
| Orange | r: 255, g: 127, b: 000
| Light Orange | r: 255, g: 175, b: 175
| Olive | r: 100, g: 100, b: 000
| Dark Green | r: 000, g: 100, b: 000
| Green | r: 000, g: 255, b: 000
| Light Green | r: 175, g: 255, b: 175
| Yellow | r: 255, g: 255, b: 000
| Light Yellow | r: 255, g: 255, b: 175
| White | r: 255, g: 255, b: 255
Ви можете використовувати змінну кольору для створення програми setMainLed, яка змінює колір світлодіода після обертання, а потім проговорює цей колір:
var randomColor = { // Змінна для випадкового кольору
r: getRandomInt(0, 255), // Випадковий червоний
g: getRandomInt(0, 255), // Випадковий зелений
b: getRandomInt(0, 255) // Випадковий синій
};
async function startProgram() {
while (true) {
await rawMotor(4000, -4000, 0.25); // Обертання робота
randomColor = { // Оновлення випадкового кольору
r: getRandomInt(0, 255),
g: getRandomInt(0, 255),
b: getRandomInt(0, 255)
};
setMainLed(randomColor); // Встановлення кольору на світлодіоді
await speak(buildString(randomColor), true); // Проголошення кольору
await delay(0.25); // Затримка
await delay(0.025); // Затримка
}
}В програма генерується випадковий колір для світлодіода після обертання робота, і цей колір проголошується голосом за допомогою функції speak.
Змінна randomColor динамічно змінюється після кожного обертання.
