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

Висновок

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

Цикли 6 — Переривання циклів

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Переривання таймера ESP32: hw_timer_t, налаштування обробника та обмеження ISR

Переривання таймера ESP32: hw_timer_t, налаштування обробника та обмеження ISR

Переривання таймера ESP32: hw_timer_t, налаштування обробника та обмеження ISR ESP32 має ап..

Arduino SIM800 GPRS HTTP GET запит

Arduino SIM800 GPRS HTTP GET запит

Привіт друзі! Ми з кожним разом знаємо все більш цікаві застосування GSM-модуля SIM800. На цей раз н..

Датчик обертання енкодер KY-040

Датчик обертання енкодер KY-040

Енкодер обертання KY-040 - це обертальний датчик, який характеризує ступінь повороту вісі та в якому..

37.93грн.

Модуль 7 — Двигуни та виконавчі пристрої: сервоприводи, MOSFET, L298N

Модуль 7 — Двигуни та виконавчі пристрої: сервоприводи, MOSFET, L298N

Модуль 7 — Двигуни та виконавчі пристрої (курс для початківців) Мета модуля: навчитися керу..

Ковпачок на змінний резистор 6мм

Ковпачок на змінний резистор 6мм

Чорно-білий декоративний ковпачок для змінних резисторів та енкодерів з отвором у вигляді зіркиВнутр..

5.63грн.