Конструкция for используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик приращений обычно используется для приращения и завершения цикла. Оператор for подходит для любых повторяющихся действий и часто используется в сочетании с массивами коллекций данных/выводов.
Заголовок цикла for состоит из трех частей:
for (initialization; condition; increment) { //операторы, выполняющиеся в цикле }
Инициализация (Initialization) выполняется самой первой и один раз. Каждый раз в цикле проверяется условие (condition), если оно верно, выполняется блок операторов и приращение (increment), затем условие проверяется вновь. Когда логическое значение условия становится ложным, цикл завершается.
Затемнение светодиода с использованием ШИМ-вывода int PWMpin = 10; Светодиод последовательно с резистором 470 Ом на вывод номер 10.
void setup() { //настройка не нужна } void loop() { for (int i=0; i <= 255; i++) { analogWrite(PWMpin, i); delay(10); } }
Цикл for в С гораздо более гибкий, чем циклы for в других языках программирования, например, в Бейсике. Любой из трех или все три элемента заголовка могут быть опущены, хотя точки с запятой обязательны. Также операторы для инициализации, условия и приращения цикла могут быть любым допустимыми в С операторами с независимыми переменными, и использовать любой тип данных С, включая данные с плавающей точкой (floats). Эти необычные для цикла 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); } }