====== 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