Циклы 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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Резистор подстроечный 1; 10; 200 кОм

Резистор подстроечный 1; 10; 200 кОм

Переменный резистор или потенциометр для установки на печатную плату. Сопротивление подстраивается п..

15.48грн.

Как не сжечь Arduino и ESP32: GPIO, токи и напряжения простыми словами

Как не сжечь Arduino и ESP32: GPIO, токи и напряжения простыми словами

Как не сжечь Arduino и ESP32: GPIO, токи и напряжения простыми словами Arduino и ESP32 не «нежные..

Умный дом #4: Умная розетка на ESP32

Умный дом #4: Умная розетка на ESP32

Умный дом #4: Умная розетка на ESP32 Умная розетка — один из наиболее востребованных элемен..

Какие виды датчиков можно подключить к Arduino для измерения параметров окружающей среды

Какие виды датчиков можно подключить к Arduino для измерения параметров окружающей среды

Какие виды датчиков можно подключить к Arduino для измерения параметров окружающей среды Ar..

Автоматическое реверсивное управление двигателем с ATtiny85

Автоматическое реверсивное управление двигателем с ATtiny85

Постановка задачи проекта Ставим задачу автоматически таскать двигателем постоянного тока полезны..