A do
..while
loop is just like a while
loop except the looping condition is checked at the end of the loop body. This is known as an exit-condition loop and means the code in the body will execute at least once:
val myCondition = false do { print("I loop once!") } while(myCondition)
This example shows that even though we have a false
condition our loop will still run the loop body once:
I loop once!!!!
One reason we would use a do
..while
loop is when our loop condition initialization and update commands are the same. Using psuedocode we can compare a while
loop with a do
..while
loop using how someone might decide to go outside:
Is it sunny outside?
while ( not sunny ) {
Is it sunny outside?
Stay inside.
}
Go outside!
The while
loop example has a line before the loop to check if it is sunny outside. The loop is entered if it is not sunny and then repeatedly checks if it is sunny outside. When it is sunny, the loop exits and it’s time to go outside:
do {
Is it sunny outside?
Stay inside.
} while ( not sunny )
Go outside!
The do
..while
loop enters the loop and starts by checking if isSunny is true
. The loop body repeats if the isSunny is false
.
The extra check prior to the loop is unnecessary since it is performed inside the loop anyway. If we have to look outside to get our initial loop condition and to update our loop condition, we might as well have that be the loop body and check the condition at the end.
This difference may seem subtle, but if this loop is executed hundreds or thousands of times a second, removing the one line of code using a do
..while
loop may save time.
Instructions
We’ll implement a do..while loop that performs a Celsius to Fahrenheit temperature conversion.
First, construct a do..while loop that checks if fahr
does not equal 212.0. Inside the loop body:
- paste the following 2 lines of code.fahr = celsiusTemps[index] * fahr_ratio + 32.0 println("${celsiusTemps[index]}C = ${fahr}F")
- increment the value of
index
.