Цикли 5 — Вкладені цикли
Вступ
Вкладені цикли — це конструкція, в якій один цикл розташований всередині іншого. Такий підхід дозволяє працювати з багатовимірними структурами даних, повторювати дії в кількох напрямках та обробляти складні структури, наприклад, матриці світлодіодів або двовимірні масиви.
Цикл у циклі
Принцип роботи простий: зовнішній цикл відповідає за один параметр (наприклад, рядки матриці), а внутрішній — за інший (наприклад, стовпці). Кожного разу, коли зовнішній цикл робить одну ітерацію, внутрішній виконується повністю.
// Приклад вкладених циклів
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
// код для пари значень (i, j)
}
}
Приклад: перебір матриці світлодіодів
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
// Обробка світлодіода на позиції (row, col)
}
}
Практика
Генерація таблиці множення в Serial Monitor
void setup() {
Serial.begin(9600);
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
Serial.print(i * j);
Serial.print("\t");
}
Serial.println();
}
}
void loop() {
// Порожньо
}
Прохід по 2D-масиву
int data[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
void setup() {
Serial.begin(9600);
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 4; col++) {
Serial.print(data[row][col]);
Serial.print(" ");
}
Serial.println();
}
}
void loop() {
// Порожньо
}
Проєкт: «Анімація бігаючої точки по матриці 8×8»
#include
// Піни для MAX7219: DIN, CLK, CS
LedControl lc = LedControl(12, 11, 10, 1);
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void loop() {
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
lc.clearDisplay(0);
lc.setLed(0, row, col, true);
delay(100);
}
}
}
Висновок
Вкладені цикли — потужний інструмент для роботи з багатовимірними даними та складними структурами. Вони спрощують обробку матриць, створення таблиць та візуальних ефектів.




