Циклы 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);
    }
  }
}
  

Заключение

Вложенные циклы — мощный инструмент для работы с многомерными данными и сложными структурами. Они позволяют легко обрабатывать матрицы, генерировать таблицы и создавать визуальные эффекты.

Циклы 6 — Прерывание циклов

<< Проекты << Все товары >> Статьи, уроки >>

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Ультразвуковой датчик расстояния HC-SR04 для Arduino, ESP32, STM32

Ультразвуковой датчик расстояния HC-SR04 для Arduino, ESP32, STM32

HC-SR04 — это популярный ультразвуковой датчик для точного измерения расстояния в диапазоне от 2 до ..

62.06грн.

SIM800 Arduino автоматические команды

SIM800 Arduino автоматические команды

Привет друзья! В прошлом видео мы разобрали ручное управление GSM-модулем набирая команды в мониторе..

Драйвер шагового двигателя RAMPS 1.4 для CNC или 3D-принтера

Драйвер шагового двигателя RAMPS 1.4 для CNC или 3D-принтера

Драйвер A4988 под CNC-шилд RAMPS 1.4Есть возможность настраивать рабочий ток двигателя при помо..

60.91грн.

Разъемный штекер мама-папа 2,54мм на 2, 3, 4, 5 пинов

Разъемный штекер мама-папа 2,54мм на 2, 3, 4, 5 пинов

Пластмассовый корпус для разъема 2,54мм без металлической вставки..

1.01грн.

Таймеры Arduino UNO — Часть 6. Оптимизация и нестандартные применения

Таймеры Arduino UNO — Часть 6. Оптимизация и нестандартные применения

Таймеры Arduino UNO — Часть 6. Оптимизация и нестандартные применения Теория Совмещени..