Конструкция for используется для повторения блока операторов, заключенных в фигурные скобки. Счетчик приращений обычно используется для приращения и завершения цикла. Оператор for подходит для любых повторяющихся действий и часто используется в сочетании с массивами коллекций данных/выводов.
Заголовок цикла for состоит из трех частей:
for (initialization; condition; increment) {операторы выполняющиеся в цикле}
Инициализация (Initialization) выполняется самой первой и один раз. Каждый раз в цикле проверяется условие (condition), если оно верно, выполняется блок операторов и приращение (increment), затем условие проверяется вновь. Когда логическое значение условия становится ложным, цикл завершается.
for (int x = 2; x < 100; x = x * 1.5)
{
println(x);
}
Цикл for в Си гораздо более гибкий, чем циклы for в других языках программирования, например, в Бейсике. Любой из трех или все три элемента заголовка могут быть опущены, хотя точки с запятой обязательны. Также операторы для инициализации, условия и приращения цикла могут быть любым допустимым в Си операторами с независимыми переменными, и использовать любой тип данных Си, включая данные с плавающей точкой (floats). Эти необычные для цикла 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);
}
}
Генерируется: 2,3,4,6,9,13,19,28,42,63,94
Другой пример, плавное уменьшение или увеличение уровня сигнала на светодиод с помощью одного цикла for:
Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.