Цикли 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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Потенціометр Robotale

Потенціометр Robotale

Двохканальний змінний резистор прямолінійної конструкціїОпір 10 кОмРозміри 90 х 20 мм..

111.67грн.

ESP32 та Telegram bot: віддалений моніторинг

ESP32 та Telegram bot: віддалений моніторинг

ESP32 та Telegram bot: віддалений моніторинг Сучасні IoT-системи все частіше використовують хма..

Набір перетинок (мама-папа) 40шт 10см

Набір перетинок (мама-папа) 40шт 10см

Набір з'єднувальних дротів для поєднання плат контролера з периферією без пайки. Підходять під станд..

76.14грн.

Arduino 4-20 мА підключення датчика рівня

Arduino 4-20 мА підключення датчика рівня

Бувають такі часи в житті ардуінщіка, коли йому доводиться з глибин аматорських датчиків підніматися..

Arduino NRF24L01 емулятор клавіатури та миші

Arduino NRF24L01 емулятор клавіатури та миші

Завдання проекту – віддалене управління 20 комп'ютерами з одного головного комп'ютера. Під керування..