====== Looping ======
===== For =====
**//For//** is a cycle operator that allows to specify the number of times when the same statements will be executed. In this way, similar to the //loop// function it allows to control the program execution. Each time when all statements in the body of the cycle are executed, is called the //iteration//. In this way, the cycle is one of the basic programming techniques that is used for all programs and automation in general.
The construction of a //for// cycle is the following:
for (initialization ; condition ; operation with the cycle variable) {
//the body of the cycle
}
Three parts of the //for// construction is the following:
* //initialization// section usually initializes the value of the variable that will be used to iterate the cycle; this value can be 0 or any other value;
* //condition// allows to manage the number of cycle iterations; the statements in the body of the cycle are executed when the condition is //TRUE//;
* //operations with the cycle variable// allows to define the number of cycle iterations.
The example of the //for// cycle:
for (int i = 0; i < 4; i = i + 1)
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
On the initialization of the //for// cycle the variable //i=0// is defined. The condition states that the //for// cycle will be executed while the value of variable //i// will be less than 4 (i<4). In the operation with the cycle variable it is increased by 1 each time when the cycle is repeated.
In this example above, the LED that is connected to the pin 13 of the Arduino board will turn on/off four times.
===== While =====
**//While//** cycle operator is similar to the //for// cycle operator that is described above, but it does not contain the cycle variable. Because of this, the //while// cycle allows to executed previously unknown number of iterations. The management of the cycle is realized using only //condition// that needs to be //TRUE// for next operation to execute.
The construction of the //while// cycle is the following:
while (condition that is TRUE)
{
//the body of the cycle
}
That way the //while// cycle can be used as a good instrument for execution of a previously unpredictable program. For example, if it is necessary to wait until the signal from the pin 2 reaches the defined voltage level - 100, the following code can be used:
int inputVariable = analogRead(2);
while (inputVariable < 100)
{
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13, LOW);
delay(10);
inputVariable = analogRead(2);
}
In the cycle the LED that is connected to the pin 13 of the Arduino board will be turned on/off while the signal will reach specified level.
===== Do while =====
//Do while// cycle works the same way like the //while// loop. The difference is that in the //while// cycle the condition is checked before entering the loop, but in the //do while// cycle the condition is checked after execution of the statements in the loop and then if the condition is //TRUE// the loop repeats. As the result, the statements inside the cycle will execute at least once, even if the test condition is //FALSE//.
The construction of a //do while// cycle is the following:
do {
//the body of the cycle
} while (condition that is TRUE);
If the same code is taken from the //while// loop example and used in the //do while// cycle, the difference is that the code will execute at least once, even if the //inputVariable// value is more than or equal to 100. The example code:
int inputVariable = analogRead(2);
do {
digitalWrite(13, HIGH);
delay(10);
digitalWrite(13, LOW);
delay(10);
inputVariable = analogRead(2);
} while (inputVariable < 100);
**Check yourself**
1. What loop where the condition is checked after the loop body is executed?
2. How long will the operators in the body of the loop will operate (while (x < 100))?
3. What value will be for variable //a// after code executing int a; for(a = 0; a < 10; a++) {}
4. Which of the following operators are not loop(s) in Arduino IDE?
* do while
* while
* repeat until
* for