Цикли 6 — Переривання циклів

Вступ

Під час роботи з циклами в Arduino бувають ситуації, коли потрібно достроково вийти з циклу або пропустити певну ітерацію. Для цього в мові C/C++, на якій базується програмування Arduino, використовуються оператори break і continue, а також return для виходу з функції.

Оператор break

Оператор break негайно завершує виконання поточного циклу (або блоку switch) та передає керування на перший рядок коду після нього.


// Приклад: вихід з циклу при знаходженні елемента
for (int i = 0; i < 10; i++) {
  if (i == 5) {
    break; // Вихід з циклу
  }
  Serial.println(i);
}
  

Оператор continue

Оператор continue перериває поточну ітерацію циклу та одразу переходить до наступної, пропускаючи решту коду в тілі циклу.


// Приклад: вивід лише непарних чисел
for (int i = 0; i < 10; i++) {
  if (i % 2 == 0) {
    continue; // Пропускаємо парні числа
  }
  Serial.println(i);
}
  

Оператор return

Оператор return завершує виконання всієї функції та повертає керування в місце її виклику. Його можна використовувати для дострокового виходу з loop() або будь-якої іншої функції.


void printPositive(int number) {
  if (number < 0) {
    return; // Вихід, якщо число від’ємне
  }
  Serial.println(number);
}
  

Практика

Переривання пошуку при знаходженні елемента


int values[] = {3, 7, 5, 8, 2};

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 5; i++) {
    if (values[i] == 8) {
      Serial.println("Знайдено!");
      break;
    }
    Serial.println(values[i]);
  }
}

void loop() {
}
  

Пропуск парних чисел при виводі


void setup() {
  Serial.begin(9600);
  for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
      continue;
    }
    Serial.println(i);
  }
}

void loop() {
}
  

Проєкт: «Сканер клавіатури»

У цьому проєкті використовується клавіатура 4×4 та бібліотека Keypad. Сканування зупиняється при натисканні першої знайденої кнопки.


#include 

const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(9600);
}

void loop() {
  for (int r = 0; r < ROWS; r++) {
    for (int c = 0; c < COLS; c++) {
      char key = keypad.getKey();
      if (key) {
        Serial.print("Натиснута кнопка: ");
        Serial.println(key);
        break; // Зупиняємо пошук
      }
    }
  }
}
  

Висновок

Оператори break, continue та return дозволяють гнучко керувати виконанням циклів і функцій в Arduino, роблячи програми більш ефективними та керованими.

Цикли 7 — Цикли та затримки

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Використання внутрішнього Watchdog таймера в ESP32

Використання внутрішнього Watchdog таймера в ESP32

Використання внутрішнього Watchdog таймера в ESP32 Watchdog (WDT) — це вбудований таймер мікрокон..

Аудіо штекер 3,5мм папа з гвинтовим клемником

Аудіо штекер 3,5мм папа з гвинтовим клемником

Стерео штекер 3,5 мм для монтажу електричних кіл передачі звукового сигналу за допомогою гвинтового ..

94.08грн.

Парсер температури та вологості на WiFi-контролері

Парсер температури та вологості на WiFi-контролері

У меня есть задумка сделать у себя дома возле входной двери индикатор внешней температуры, а так же ..

Клемна колодка на 12 контактів 2,5 мм 3А

Клемна колодка на 12 контактів 2,5 мм 3А

Клемник з'єднувальний на 12 контактівДобре кріпиться до стінок пластмасових щитів за допомогою клейо..

21.00грн.

Модуль стабілізатора напруги 3,3 В

Модуль стабілізатора напруги 3,3 В

Модуль призначений для живлення різних електронних пристроїв, модулів, що працюють від напруги 3,3 В..

18.61грн.