Циклы 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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Модуль термопары К-типа MAX6675 0...+1024°C для Arduino

Модуль термопары К-типа MAX6675 0...+1024°C для Arduino

Модуль на базе специализированной микросхемы MAX6675 предназначен для точного измерения высоких темп..

168.35грн.

Двойная шестерня для зубчатого ремня на 20 зубьев под ось 8 мм

Двойная шестерня для зубчатого ремня на 20 зубьев под ось 8 мм

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

78.53грн.

OLED дисплей 128x64 I2C (0,96")

OLED дисплей 128x64 I2C (0,96")

OLED дисплей 128x64 I2C (0,96") OLED дисплей 128x64 — это компактный монохромный экран с диагонал..

93.06грн.

Что такое широтно-импульсная модуляция (ШИМ), и как она используется в Arduino?

Что такое широтно-импульсная модуляция (ШИМ), и как она используется в Arduino?

Что такое широтно-импульсная модуляция (ШИМ), и как она используется в Arduino? Широт..

Конденсатор электролитический алюминиевый

Конденсатор электролитический алюминиевый

Используется для сглаживания пульсаций в источниках питания, в генераторах сигналов, в частотных фил..

3.10грн.