for 语法叙述

描述

for 是用来重覆执行一个被大括号包住的程式码区块,通常会使用一个持续增加的计数器去判断何时要结束这个回圈。for 除了用于重覆执行程式码,也常用在处理阵列内的资料。
for 回圈的开头包含三个部分:

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

ForLoopIllustrated

initialization 只会在进入回圈前执行一次。每次区块内程式结束后都会去判断 condition 是否成立,如果 condition 成立就重覆执行区块内程式以及 increment,反之则离开回圈。(格式与C语言等常用语言相同,且可以于初始化时宣告变数型态)

范例

// 使用 PWM 控制 LED
int PWMpin = 10; // LED 灯与 470 欧姆的电阻串联于 pin 脚 10

void setup()
{
  // 不需任何动作
}

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

提醒

与其他的程式语言相比,C 语言的 for 回圈较具有弹性。在 for 回圈开头的三项设定皆可以省略,但仍须保留分号。且 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 回圈去实现 LED 灯的渐明与渐暗控制:

void loop()
{
   int x = 1;
   for (int i = 0; i > -1; i = i + x) {
      analogWrite(PWMpin, i);
      if (i == 255) x = -1;             // 在 PWM 极限值 255 会切换
      delay(10);
   }
}

See also

while


语法参考主页面

本页由热血青年 LBU 译自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.