Skip to main content
Функції (Functions)

Функції (Functions) містять код, який можна використовувати в різних частинах програми, що допомагає організувати складну логіку. 

Можна уявити функцію як програму в межах іншої програми. 

Параметри визначають різні вхідні значення для функції; вони подібні до змінних, але застосовуються лише в межах цієї функції і не є глобальними для решти програми.

Start Program (Стартова програма) 

Ви, мабуть, помітили, що кожна текстова програма містить функцію під назвою startProgram

Це особлива функція: Sphero очікує, що код всередині startProgram буде основною активністю програми. Саме тому деякі програмісти називають startProgram "основним циклом" у коді. 

Якщо у вашій функції startProgram є цикл, обов'язково додайте невелику затримку, інакше ви отримаєте помилку часу виконання, пов’язану з тим, що програма надто довго перебуває в функції:

async function startProgram() {
  while (true) {
    // Ваш код тут...
    await delay(0.033); // <-- без цієї затримки буде помилка часу виконання.
  }
}

Якщо цикл всередині startProgram викликає функції з вбудованими затримками, додавати додаткову затримку в кінці не потрібно. 

Defining Functions (Оголошення функцій)

 

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

Це дозволяє викликати функцію з різними значеннями без зміни її основного коду. 

Зверніть увагу, що після того, як ви визначаєте параметр або функцію, вона додається до механізму автодоповнення, коли ви викликаєте її пізніше:

 

Parameters (Параметри)