Цикли 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, роблячи програми більш ефективними та керованими.





