Loops
Syntax#
- for (declaration, condition, iteration) { }
- while (condition) { }
- do { } while (condition)
Remarks#
General Remark
If you intend to create a loop to wait for something to happen, you’re probably on the wrong track here. Rather remember that all code after setup() is run from a method called loop(). So if you need to wait for something, it’s easiest to not do anything (or only other independent stuff) and come back to check for the waiting condition next time.
do { } while(condition)
will not evaluate the condition statement until after the first iteration. This is important to keep in mind if the condition statement has side effects.
While
A while
loop will evaluate its condition, and if true
, it will execute the code inside and start over. That is, as long as its condition evaluates to true
, the while
loop will execute over and over.
This loop will execute 100 times, each time adding 1 to the variable num
:
int num = 0;
while (num < 100) {
// do something
num++;
}
The above loop is equivalent to a for
loop:
for (int i = 0; i < 100; i++) {
// do something
}
This loop will execute forever:
while (true) {
// do something
}
The above loop is equivalent to a for
loop:
for (;;) {
// do something
}
For
for
loops are simplified syntax for a very common loop pattern, which could be accomplished in more lines with a while
loop.
The following is a common example of a for
loop, which will execute 100 times and then stop.
for (int i = 0; i < 100; i++) {
// do something
}
This is equivalent to a while
loop:
int num = 0;
while (num < 100) {
// do something
num++;
}
You can create an endless loop by omitting the condition.
for (;;) {
// do something
}
This is equivalent to a while
loop:
while (true) {
// do something
}
Do … While
A do while
loop is the same as a while
loop, except that it is guaranteed to execute at least one time.
The following loop will execute 100 times.
int i = 0;
do {
i++;
} while (i < 100);
A similar loop, but with a different condition, will execute 1 time.
int i = 0;
do {
i++;
} while (i < 0);
If the above loop were merely a while
loop, it would execute 0 times, because the condition would evaluate to false
before the first iteration. But since it is a do while
loop, it executes once, then checks its condition before executing again.
Flow Control
There are some ways to break or change a loop’s flow.
break;
will exit the current loop, and will not execute any more lines within that loop.
continue;
will not execute any more code within the current iteration of the loop, but will remain in the loop.
The following loop will execute 101 times (i = 0, 1, …, 100 ) instead of 1000, due to the break
statement:
for (int i = 0; i < 1000; i++) {
// execute this repeatedly with i = 0, 1, 2, ...
if (i >= 100) {
break;
}
}
The following loop will result in j
’s value being 50 instead of 100, because of the continue
statement:
int j=0;
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) { // if `i` is even
continue;
}
j++;
}
// j has the value 50 now.