Инструкция for используется для повторения блока инструкций, заключенных в фигурные скобки. Счетчик, как правило, используется для инкрементации (приращения) и завершает цикл. Инструкция for полезна для любой повторяющейся обработки и часто используется в сочетании с массивами и обработки данных или контактов.
Заголовок цикла for содержит три части:
for (инициализация; условие; инкремент) {
//инструкции;
}
Первой происходит инициализация и только один раз. Каждый раз при прохождении цикла проверяется условие; если оно истинно, то выполняется блок операторов и инкремент, затем условие проверяется снова. Когда условие становится ложным, цикл заканчивается.
Пример
// Изменение яркости светодиода, используя ШИМ-контакт
int PWMpin = 10; // Светодиод подключен последовательно с резистором 470 Ом на 10 контакте
void setup()
{
// ничего не надо инициализировать
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
Советы по написанию кода:
Циклы for в Си гораздо более гибкие, чем циклы for в других языках программирования, таких как, Бэйсик. Любой или даже все три элемента заголовка могут быть опущены, хотя точки с запятой обязательны. Кроме того, инструкции в инициализации, условии и инкременте цикла могут быть любым допустимым в Си инструкциями с независимыми переменными, и использовать любой тип данных Си, включая данные с плавающей точкой (float). Такие возможности могут помочь в решении некоторых редких задачах программирования.
Например, использование умножения инкрементной части цикла позволяет создавать геометрическую прогрессию:
for(int x = 2; x < 1000; x = x * 2){
println(x);
}
Получим: 2,4,8,16,32,64,128,256,512
Другой пример - плавное увеличение, а затем уменьшение яркости светодиода с помощью одного цикла 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);
}
}
Смотрите также:
while
Справочник
Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.
Источник: http://arduino.cc/en/Reference/For |