for

Описание

Оператор for используется для повторения блока инструкций, заключённого в фигурные скобки. Обычно используется счётчик-инкремент для увеличения значения и завершения цикла. Оператор for полезен для любой повторяющейся операции и часто применяется в сочетании с массивами для работы с наборами данных или пинов.

Синтаксис

for (initialization; condition; increment) {
      // statement(s);
    }

Параметры

  • initialization: происходит первой и ровно один раз.

  • condition: при каждом проходе цикла проверяется condition; если оно равно true, выполняется блок инструкций и increment, после чего condition проверяется снова. Когда condition становится false, цикл завершается.

  • increment: выполняется при каждом проходе цикла, когда condition равно true.

Пример кода

// Плавно увеличиваем яркость светодиода через PWM-пин
    int PWMpin = 10;  // Светодиод последовательно с резистором 470 Ом от пина 10 на землю

    void setup() {
      // настройка не требуется
    }

    void loop() {
      for (int i = 0; i <= 255; i++) {
        analogWrite(PWMpin, i);
        delay(10);
      }
    }

Примечания и предупреждения

Цикл for в C++ намного гибче, чем циклы for в некоторых других языках программирования, включая BASIC. Любой или все три элемента заголовка могут быть опущены, хотя точки с запятой обязательны. Также инструкции для инициализации, условия и инкремента могут быть любыми допустимыми инструкциями C++ с независимыми переменными и использовать любые типы данных C++, включая числа с плавающей точкой. Такие необычные операторы for могут давать решения некоторых редких задач программирования.

Например, использование умножения в строке инкремента создаст логарифмическую прогрессию:

for (int x = 2; x < 100; x = x * 1.5) {
      println(x);
    }

Сгенерирует: 2,3,4,6,9,13,19,28,42,63,94

Другой пример — плавное увеличение и уменьшение яркости светодиода с помощью одного цикла for:

void loop() {
      int x = 1;
      for (int i = 0; i > -1; i = i + x) {
        analogWrite(PWMpin, i);
        if (i == 255) {
          x = -1;  // меняем направление на пике
        }
        delay(10);
      }
    }

Смотрите также