Циклы 5 — Вложенные циклы
Введение
Вложенные циклы — это конструкция, при которой один цикл располагается внутри другого. Такой подход позволяет работать с многомерными структурами данных, повторять действия в нескольких направлениях и обрабатывать сложные структуры, например, матрицы светодиодов или двумерные массивы.
Цикл в цикле
Принцип работы прост: внешний цикл отвечает за один параметр (например, строки матрицы), а внутренний — за другой (например, столбцы). Каждый раз, когда внешний цикл делает одну итерацию, внутренний цикл выполняется полностью.
// Пример вложенных циклов
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
// код для пары значений (i, j)
}
}
Пример: перебор матрицы светодиодов
Если у нас есть матрица 8×8, вложенные циклы помогут пройтись по всем её элементам.
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»
В этом проекте используется матрица светодиодов 8×8 и библиотека LedControl для управления.
#include
// Пины для MAX7219: DIN, CLK, CS
LedControl lc = LedControl(12, 11, 10, 1);
void setup() {
lc.shutdown(0, false); // Включаем дисплей
lc.setIntensity(0, 8); // Яркость 0–15
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);
}
}
}
Заключение
Вложенные циклы — мощный инструмент для работы с многомерными данными и сложными структурами. Они позволяют легко обрабатывать матрицы, генерировать таблицы и создавать визуальные эффекты.




