Lesson Overview

Welcome to the thrilling realm of iterations and loops. In this lesson, let's dive into Dart's while and do while loops! While loops play a vital role in programming due to their ability to execute code blocks repeatedly until a specific condition becomes false. They operate similarly to performing an action until a condition changes — such as washing a car until it's completely clean. A while loop operates until the condition becomes false. Conversely, a do while loop will execute the code block at least once, regardless of the condition.

The Syntax of While Loops

A while loop in Dart consists of a condition and a code block. The code block is executed if the given condition is true.

while (condition) { // Loop continues while the condition is true
    // Block of code
}
What are While Loops?

while loops in Dart are control flow statements that enable a specific code block to execute repeatedly while a certain condition holds true. For example, imagine a scenario where you continue reading a book while the light is on. Here's what a while loop in Dart might look like:

int counter = 0; // Initialize with 0
while (counter < 5) { // Loop while counter is less than 5
    print(counter); // Print the counter
    counter++; // Increment the counter by 1 after each loop iteration
}
/*
Prints:
0
1
2
3
4
*/
Introducing Do While Loops

The do while loop in Dart is similar to the while loop, but with one crucial difference: the code block within the do while loop will execute at least once, even if the condition is not met. Here's the general syntax for a do while loop in Dart:

do {
    // Code block to be executed
} while (condition);

And here's a simple practical example:

int counter = 5;
do {
    print(counter);
    counter++;
} while (counter < 5);
/*
Prints:
5
*/

In this example, despite the counter being initialized at 5 which does not satisfy the condition counter < 5, the code block is still executed once. Hence, 5 is printed out.

Practical Examples with While Loops

Suppose you need to execute a countdown from the number 5 to 0. You can quickly achieve this using a while loop as follows:

int number = 5; // Initialize with 5

while (number >= 0) { // While number is at least 0
    print('Number is: $number'); // Print the number
    number--; // Decrease the number by one after each iteration
}
/*
Prints:
Number is: 5
Number is: 4
Number is: 3
Number is: 2
Number is: 1
Number is: 0
*/
Compound Conditions with While Loops

while loops in Dart can use compound conditions with && (and) or || (or). For instance, imagine a situation where you're saving up for a new device and aim to stop saving once you reach your target, or when the sales season ends — whichever occurs first:

int savings = 0; // Starting savings
bool salesSeason = true; // Identifying the start of sales

while (savings < 200 && salesSeason) { // Continue while savings is less than 200 and it's a sales season
    savings += 20; // Increase savings by 20
    print('Savings: $savings');

    // Simulate the ending of sales season
    if (savings == 100) { // When savings equals 100, sales season ends
        salesSeason = false;
    }
}
/*
Prints:
Savings: 20
Savings: 40
Savings: 60
Savings: 80
Savings: 100
*/
Common Pitfalls in Using While Loops

Be careful to avoid creating an endless loop in Dart, where the condition always remains true, leading to an infinite loop. This situation can occur when the increment step is missing, as shown in the example below:

int counter = 0; // Initial counter value

while(counter < 5) { // Counter is always less than 5
    print(counter);
    // counter++;
    // Counter isn't increasing (commented), thus creating an infinite loop
}
Lesson Summary and Practice

Congratulations! You've mastered the use of while loops, grasped their syntax, and implemented them in real-world scenarios. Now it's time to delve deeper with some practical exercises to strengthen these skills. Enjoy your journey into the Dart world, and prepare for exciting adventures ahead!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal