The do...while loop will execute the code block first, and then checking if the condition is true, then it will repeat the loop as long as the condition is true.
The do...while loop works in the same manner as the while loop, with the exception that the condition is tested at the end of the loop, so the do loop will always run at least once.
Syntax
do {// block of code} while (condition);
Parameter Values
condition: a boolean expression that evaluates to true or false.
Example Code
Example Code 1
voidsetup() {Serial.begin(9600);Serial.println("====== TEST START ======");int i = 0;do {Serial.print("Inside the DO WHILE loop: i = ");Serial.println(i); i++; // increase i by 1 } while (i < 5);Serial.println("====== TEST END ========");}voidloop() {}
The result on Serial Monitor:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
====== TEST START ======
Inside the DO WHILE loop: i = 0
Inside the DO WHILE loop: i = 1
Inside the DO WHILE loop: i = 2
Inside the DO WHILE loop: i = 3
Inside the DO WHILE loop: i = 4
====== TEST END ========
Ln 11, Col 1
Arduino Uno on COM15
2
Example Code 2
int x = 0;do {delay(50); // wait for sensors to stabilize x = readSensors(); // check the sensors} while (x < 100);
do...while loop vs while loop
The while loop checks the condition before executing the block of code; conversely, the dowhile loop checks the condition after executing the block of code. Therefore, the dowhile loop will always be executed at least once, even if the condition is false at the beginning.
The do...while and while loop are the same, except for the case in which the condition is false at the beginning.
For example:
Code with do...while loop
voidsetup() {Serial.begin(9600);Serial.println("====== TEST START ======");int i = 10;do {Serial.print("Inside the DO WHILE loop: i = ");Serial.println(i); i++; // increase i by 1 } while (i < 5);Serial.println("====== TEST END ========");}voidloop() {}
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
====== TEST START ======
Inside the DO WHILE loop: i = 10
====== TEST END ========
Ln 11, Col 1
Arduino Uno on COM15
2
Code with while loop
voidsetup() {Serial.begin(9600);Serial.println("====== TEST START ======");int i = 10;while (i < 5) {Serial.print("Inside the DO WHILE loop: i = ");Serial.println(i); i++; // increase i by 1 }Serial.println("====== TEST END ========");}voidloop() {}
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
====== TEST START ======
====== TEST END ========
Ln 11, Col 1
Arduino Uno on COM15
2
※ NOTES AND WARNINGS:
There are three ways to escape the dowhile loop:
The condition of the do while loop becomes false.
The execution of the code reaches a break statement inside the loop.
The execution of the code reaches a goto statement inside the loop, which jumps to a label located outside of the loop.
Disclosure: Some links in this section are Amazon affiliate links. If you make a purchase through these links, we may earn a commission at no extra cost to you. Additionally, some links direct to products from our own brand, DIYables .