Функції (Functions) містять код, який можна використовувати в різних частинах програми, що допомагає організувати складну логіку.
Можна уявити функцію як програму в межах іншої програми.
Параметри визначають різні вхідні значення для функції; вони подібні до змінних, але застосовуються лише в межах цієї функції і не є глобальними для решти програми.
Start Program (Стартова програма)
Ви, мабуть, помітили, що кожна текстова програма містить функцію під назвою startProgram.
Це особлива функція: Sphero очікує, що код всередині startProgram буде основною активністю програми. Саме тому деякі програмісти називають startProgram "основним циклом" у коді.
Якщо у вашій функції startProgram є цикл, обов'язково додайте невелику затримку, інакше ви отримаєте помилку часу виконання, пов’язану з тим, що програма надто довго перебуває в функції:
async function startProgram() {
while (true) {
// Ваш код тут...
await delay(0.033); // <-- без цієї затримки буде помилка часу виконання.
}
}Якщо цикл всередині startProgram викликає функції з вбудованими затримками, додавати додаткову затримку в кінці не потрібно.
Defining Functions (Оголошення функцій)

Функції можна визначати в будь-якому місці програми, але в наведених прикладах ми визначаємо їх перед основним циклом для простоти.
Зазвичай порядок, в якому функції з’являються в програмі, не має значення.
Навіть якщо інші функції визначені перед startProgram, функція startProgram буде виконана першою (є винятки, але вони не є частиною цього опису).
Наприклад, функція blink змінює колір світлодіодів на червоний на 2 секунди, а потім на зелений на 2 секунди. Якщо ви викликаєте цю функцію з startProgram, вона виконає все, як очікується, виконуючи логіку функції:
async function blink() {
playSound(Sound.Effects.Click); // Відтворення звуку
setMainLed({ r: 255, g: 0, b: 0 }); // Встановлення червоного кольору
await delay(0.5); // Затримка 0.5 секунд
setMainLed({ r: 0, g: 255, b: 0 }); // Встановлення зеленого кольору
await delay(0.5); // Затримка 0.5 секунд
}
async function startProgram() {
await blink(); // Викликає функцію blink
}Parameters (Параметри)
Параметри схожі на змінні, але вони локальні для функції і служать тільки для цієї функції; вони не є глобальними для решти програми.
Як і змінні, їх чотири типи: число, рядок, boolean (логічне значення) і колір.
Параметри дуже корисні для швидкої зміни вхідних значень без необхідності змінювати саму функцію, або якщо ви хочете кілька разів викликати функцію і змінювати її вхідні значення щоразу.
Ось приклад функції blinkParams, яка дозволяє керувати часом блимання і кількістю повторень за допомогою параметрів time і loops.
Ви можете викликати цю функцію з різними значеннями кожного разу.
Якщо б ви написали цю програму без параметрів, вона вимагала б набагато більше коду:
async function blinkParams(time, loops) {
for (var _i1 = 0; _i1 < loops; _i1++) {
playSound(Sound.Effects.Click); // Відтворення звуку
setMainLed({ r: 255, g: 0, b: 0 }); // Встановлення червоного кольору
await delay(time); // Затримка
setMainLed({ r: 0, g: 255, b: 0 }); // Встановлення зеленого кольору
await delay(time); // Затримка
await delay(0.025); // Коротка додаткова затримка
}
}
async function startProgram() {
await blinkParams(0.5, 5); // Викликає blinkParams з часом 0.5 сек і 5 повтореннями
await blinkParams(0.15, 10); // Викликає blinkParams з часом 0.15 сек і 10 повтореннями
} Використовуються параметри для визначення часу затримки та кількості повторень для функції blinkParams.
Це дозволяє викликати функцію з різними значеннями без зміни її основного коду.
Зверніть увагу, що після того, як ви визначаєте параметр або функцію, вона додається до механізму автодоповнення, коли ви викликаєте її пізніше:

