Do-While Loop in C# With Examples

The do-while loop in C# is a post-test loop, meaning that it will execute the block of code at least once before checking if the condition to continue the loop is true. This type of loop is particularly useful when the developer needs to ensure that the loop body is executed at least once, regardless of whether the loop’s condition holds upon entering the iteration.

C# provides a clear syntax for implementing a do-while loop, differentiating it from the other looping constructs like the for loop and the while loop. It begins with the do keyword, followed by the loop’s body enclosed in curly braces, and concludes with the while keyword accompanied by the continuation condition in parentheses. After the loop’s body executes, the specified condition is evaluated. If the condition evaluates to true, the loop will run again; if false, the loop terminates.

Overview of Do-While Loops in C#

A do-while loop is a control flow statement in C# that executes a block of code at least once before checking a condition at the end of every iteration. Unlike a while loop, where the condition is evaluated before the execution of the block, the do-while loop ensures the block within is executed first, and then the condition is checked.

Syntax:

do
{
   // Statements to execute
} while (condition);

The loop starts with the do keyword followed by a block enclosed in braces {}. After the block, the while keyword introduces the condition that will be evaluated. If the condition evaluates to true, the code block will execute again. When the condition evaluates to false, the loop terminates.

Key Characteristics:

  • Guaranteed Execution: The code inside the loop will run at least once.
  • Post-Condition Check: The condition is assessed after the loop body has executed.
  • The loop requires a terminator in the form of a semicolon ; after the while (condition).

Here is a simple example:

using System;

class DoWhileLoopExample
{
    static void Main()
    {
        int counter = 0;

        do
        {
            Console.WriteLine(counter);
            counter++;
        } while (counter < 5);

        Console.WriteLine("The do-while loop has completed.");
    }
}

In this example, the loop prints the numbers from 0 to 4. Even if the initial value of counter were greater than 4, the Console.WriteLine statement would still execute once before the loop stops.

Once you run the code using a C# console application, you can see the output in the screenshot below.

do-while loop in C#

Syntax of the Do-While Loop in C#

In C#, the do-while loop is a post-test loop, meaning it evaluates the condition after executing the loop’s body at least once. The basic syntax of a do-while loop is as follows:

do
{
    // Loop body: the code executed on each iteration
}
while (condition);

In this construction:

  • The do keyword begins the declaration of the loop.
  • The loop body consists of a block of code encapsulated by curly braces {} where various statements can be executed.
  • The while keyword follows the loop body and precedes the condition.
  • The condition is a Boolean expression evaluated after the loop body has been executed.

If the condition evaluates to true, the loop body will be executed again. If it is false, the loop terminates.

Rules and Characteristics:

  • The condition is checked after each execution of the loop body.
  • The loop body will always execute at least once, even if the condition is false initially.
  • The condition is written in parentheses () directly after the while keyword.

Example:

int counter = 0;

do
{
    Console.WriteLine(counter);
    counter++;
}
while (counter < 5);

Output:

0
1
2
3
4

The above example demonstrates the do-while loop where the loop body increments a counter and prints it. The loop continues to execute until the counter is less than 5.

Writing a Basic Do-While Loop in C#

A do-while loop in C# executes a block of code at least once and then repeats the execution based on a boolean condition. It differs from a traditional while loop by evaluating its condition at the end of the loop body.

Hello World Example

using System;

class Program
{
    static void Main()
    {
        string userInput;
        do
        {
            Console.WriteLine("Hello, World!");
            Console.Write("Continue? (yes/no): ");
            userInput = Console.ReadLine();
        } while (userInput.ToLower() == "yes");
    }
}

In this example, “Hello, World!” is printed to the console at least once. After the first execution, it prompts the user to continue or stop.

Counter-Controlled Iteration

using System;

class Program
{
    static void Main()
    {
        int counter = 1;
        int maxCount = 5;
        do
        {
            Console.WriteLine("Iteration " + counter);
            counter++;
        } while (counter <= maxCount);
    }
}

The counter starts at 1 and increments with each iteration of the loop. The do-while loop continues running until the counter exceeds the maximum count defined as 5.

Controlling the Loop Execution in do while loop

In C#, controlling the execution of a do-while loop is crucial for creating efficient and accurate programs. The flow within the do-while loop can be manipulated using specific conditions and commands.

Using a Conditional Expression

The do-while loop repeatedly executes a block of code as long as a given condition is true. The condition is evaluated after the execution of the loop’s body, guaranteeing that the code block runs at least once.

Example:

int counter = 1;
do
{
    Console.WriteLine(counter);
    counter++;
} while (counter <= 5);

Breaking Out of a Loop

To prematurely terminate the loop, one can use the break statement. This command immediately stops the loop, and control is transferred to the statement following the loop.

Example:

int count = 1;
do
{
    if (count == 4)
    {
        break; // Exit the loop when count is 4
    }
    Console.WriteLine(count);
    count++;
} while (count <= 5);

Continuing the Loop

To skip the current iteration and continue with the next cycle, the continue statement is used. When continue is encountered, control jumps to the end of the loop body, then evaluates the loop’s condition.

Example:

int num = 0;
do
{
    num++;
    if (num % 2 == 0)
    {
        continue; // Skip the rest of the loop body for even numbers
    }
    Console.WriteLine(num);
} while (num < 5);

Common Use Cases for Do-While Loops in C#

Do-while loops in C# are particularly useful when a block of code must run at least once before a condition is evaluated. They ensure that user input is validated and that menu-driven programs function correctly by repeating actions until specific criteria are met.

User Input Validation

Do-while loops excel in situations where input from a user must be confirmed as valid before proceeding with program execution. In these scenarios, the loop prompts the user and processes the input. If the input does not meet the predefined criteria, the prompt is repeated.

Example:

string userInput;
do
{
    Console.Write("Enter a positive number: ");
    userInput = Console.ReadLine();
}
while (!int.TryParse(userInput, out int result) || result <= 0);

Menu-Driven Programs

Menu-driven programs often rely on do-while loops to display menus and handle user selections. These loops are perfect for ensuring the menu is presented again if a user makes an invalid choice, thereby maintaining a smooth user experience.

Example:

int userSelection;
do
{
    Console.WriteLine("1. Option One");
    Console.WriteLine("2. Option Two");
    Console.WriteLine("3. Exit");
    Console.Write("Select an option: ");
    userSelection = Convert.ToInt32(Console.ReadLine());
}
while (userSelection < 1 || userSelection > 3);

Differences Between Do-While and While Loops in C#

In C#, do-while and while loops are used to execute a block of code multiple times. They share similarities but have distinct differences in how they execute and check for conditions.

A while loop tests its condition at the beginning before any code within the loop is executed. If the condition is false on the first check, the code inside the while loop will not run even once.

while (condition) {
    // Code to execute
}

On the other hand, a do-while loop will always execute the code block once before checking the condition. The condition is evaluated at the end of the loop.

do {
    // Code to execute
} while (condition);

Below is a comparison table highlighting the main differences:

AspectWhile LoopDo-While Loop
Execution CheckCondition is checked before the first executionCondition is checked after the first execution
Code Block ExecutionMay not execute if the condition is initially falseAlways executes at least once
Use CaseIdeal when the number of iterations is not known and may be zeroSuitable when the code block needs to run at least once

Consider an example where a programmer wishes to read user input until the user provides a specific exit command. A do-while loop is a better choice since the program should prompt for input at least once, regardless of the subsequent input given:

string userInput;
do {
    Console.Write("Enter command: ");
    userInput = Console.ReadLine();
    // Process command
} while (userInput != "exit");

The choice between a do-while loop and a while loop is determined by the requirement for the loop’s code block to be executed at least once or not.

Best Practices and Tips for do-while loop

In using do-while loops in C#, one must pay careful attention to avoid common pitfalls such as infinite loops and ensure the loop conditions are clear and meaningful to maintain code readability and prevent logical errors.

Avoiding Infinite Loops

To prevent infinite loops, it is crucial that the loop condition in a do-while loop can eventually evaluate to false.

  • Initialize Variables: Ensure variables used in the condition are properly initialized before the loop starts.
  • Update Variables : Make certain variable values are modified during each iteration so that the loop can terminate.

Meaningful Loop Conditions

Loop conditions should be explicit and reflect the intent of the loop.

  • Use Clear Conditions: Select a condition that clearly indicates the purpose of the loop.
  • Avoid Complex Conditions: Steer clear of overly complex conditions that can be hard to read and understand. If a condition is complex, consider using a helper method to simplify it.

Developers can craft robust and maintainable do-while loops by adhering to these best practices.

Troubleshooting Common do-while loop Errors

Programmers may encounter specific syntax and logical issues when dealing with do-while loops in C#.

Syntax Mistakes

Incorrect Semicolon Placement: It’s crucial to place the semicolon correctly at the end of the do-while statement. A misplaced semicolon can lead to unexpected behavior or compile-time errors.

Correct Usage:

do {
    // code block
} while (condition);

Common Mistake:

do {
    // code block
}; while (condition); // Incorrect semicolon before 'while'

Braces Misalignment: Properly aligning and pairing braces { } ensures that the compiler correctly identifies the block of code to execute repeatedly.

Correct Alignment:

do {
    // code block
} while (condition);

Misalignment Example:

do
    // code block
    while (condition); // Missing braces around the code block

Logical Errors in Conditions

Infinite Loop Scenario: A logical error in the condition can cause an infinite loop if the condition always evaluates to true.

Before:

int x = 0;
do {
    // code block
} while (x == 0); // Condition is always true, leading to an infinite loop

After Correcting:

int x = 0;
do {
    // code block
    x++; // Incrementing x to eventually break the loop
} while (x < 10);

Condition Evaluated Too Late: Since the condition in a do-while loop is evaluated after the code block, the block will execute at least once, which might not be the intended behavior.

Before:

int x = 10;
do {
    // code block that should not run when x is 10
} while (x < 10); // Unintended execution for x = 10

After Adjusting:

int x = 10;
if (x < 10) {
    do {
        // code block
    } while (x < 10);
}

Advanced Do-While Loop Concepts

In C#, advanced do-while loop concepts include effectively utilizing nested loops and applying techniques to optimize loop performance.

Nested Loops

Nested do-while loops occur when a do-while loop is placed inside another loop structure, which could be a do-while, for, or while loop. It is crucial that each loop has a unique condition and iterator to avoid infinite loops and to ensure that they function independently.

Example:

int x = 0;
do
{
    int y = 0;
    do
    {
        // Perform an operation with x and y
        y++;
    } while (y < 3);
    x++;
} while (x < 5);

In the example above, the inner do-while loop completes all its iterations for each iteration of the outer loop, resulting in the operation being performed 15 times.

Loop Optimization Techniques

To optimize do-while loops, developers utilize several techniques to reduce the number of iterations and the overall execution time:

  • Early Exit: Introducing a condition to break out of the loop early when a certain criterion is met.
  • Loop Unrolling: Manually performing operations for several iterations within a single loop iteration to reduce the loop overhead.
  • Minimizing Loop Overhead: Declaring loop control variables outside the loop construct when applicable, thus reducing the redundancy of variable declaration.

Example of Early Exit:

int i = 0;
do
{
    if(someCondition) break; // Early exit if a condition is met
    // Process data
    i++;
} while (i < 100);

Using an early exit can significantly improve the performance if the condition is met frequently before reaching the loop’s termination condition.

Conclusion

The do-while loop in C# is a powerful control structure that allows you to execute a block of code at least once and then repeat the execution based on a given Boolean condition. Throughout this blog post, we’ve explored the syntax of the do-while loop in C#, and discussed the differences between the while loop vs the do-while loop in C#. I explained various scenarios where we can use the do-while loop in C# with a few examples.

By now, you should feel confident in understanding do-while loops in C# and be ready to use them to write more efficient and effective C# code. Whether it’s for iterating through menu options, processing user input, or handling repetitive tasks until a certain condition is met, the do-while loop in C# will be used.

You may also like: