while loop in C



In C, while is one of the keywords with which we can form a loop in C. The while loop is one of the most often used types of loops in C. The other looping keywords in C are do – while and for.

C While loop

The while loop is often called entry verified loop, whereas the do – while loop is an exit verified loop. The for loop on the other hand, is an automatic loop.

Syntax

The syntax of constructing a while loop is as follows −

while(expression) {
   statement(s);
}

The while keyword is followed by a parenthesis, in which there should be a Boolean expression. Followed by the parenthesis, there is a block of statements inside the curly brackets.

The while loop works as follows −

  • The compiler evaluates the expression.
  • If the expression is true, the code block that follows, will be executed.
  • If the expression is false, the compiler ignores the block next to the while keyword, and proceeds to the immediately next statement after the block.

The following flowchart represents how the while loop works.

while loop in C

Since the expression that controls the loop is tested before the program enters the loop, the while loop is called entry verified loop. Here, the key point to note is that a while loop might not execute at all if the condition is found to be not true at the very first instance itself.

The while keyword implies that the compiler continues to execute the ensuing block as long as the expression is true.

The condition sits at the top of the looping construct. After each iteration, the condition is tested. If found to be true, the compiler performs the next iteration.

As soon as the expression is found to be false, the loop body will be skipped and the first statement after the while loop will be executed.

Types of Examples

Let us try to understand the behaviour of while loop with a few examples.

Example

The following program prints the Hello world message five times.

#include <stdio.h>
 
int main () {

   /* local variable definition */
   int a = 1;

   /* while loop execution */
   while( a <=5 ) {
      printf("Hello World\n");
      a++;
   }
   printf("End of loop"); 
   return 0;
}

Output

Hello World
Hello World
Hello World
Hello World
Hello World
End of loop

Here, the while loop acts as a counted loop. The variable a, that controls the number of repetitions is initialized to 1, before the while statement. Since the condition a<=5 is true, the program enters the loop, prints the message, increments a by 1, and goes back to the top of the loop. Now as is 2, hence the condition is still true, hence the loop repeats again, and continues till the condition turns false. The loop stops repeating, and the program control goes to the step after the block.

Now, change the initial value of a to 10, and run again. The output only shows.

End of loop

This is because, the condition before the while keyword is false in the very first itself, hence the block is not repeated.

Example

The following program prints all the lowercase alphabets with the help of while loop.

#include <stdio.h>
 
int main () {

   /* local variable definition */
   char a = 'a';

   /* while loop execution */
   while( a<='z' ) {
      printf("%c", a);
      a++;
   }
   printf("\nEnd of loop"); 
   return 0;
}

Output

abcdefghijklmnopqrstuvwxyz
End of loop

You may remember that a char variable represents a character corresponding to its ASCII value. Hence, it can be incremented. Hence, we increment the value of the variable from a till it reaches z.

Example

In the following example, the while loop is used as a conditional loop. The loop continues to repeat till the input received is non-negative.

#include <stdio.h>

int main () {

   /* local variable definition */
   char choice='a';

   int x=0;

   /* while loop execution */
   while( x>=0) {
      (x % 2==0) ? printf("%d is Even\n", x) : printf("%d is Odd\n", x);

      printf("\nEnter a positive number: ");
      scanf("%d", &x);
   }
   printf("\nEnd of loop");
   return 0;
}

Output

0 is Even

Enter a positive number: 12
12 is Even

Enter a positive number: 25
25 is Odd

Enter a positive number: -1

End of loop

Example

In the code given below, we have two variables a and b initialized to 10 and 0 respectively. Inside the loop, b is decremented and a is incremented on each iteration. The loop is designed to repeat till a and b are not equal. The loop ends when both reach 5.

#include <stdio.h>

int main () {

   /* local variable definition */
   int a=10, b=0;

   /* while loop execution */
   while( a!=b ) {
      a--;
      b++;
      printf("a: %d b: %d\n", a,b);
   }
   printf("\nEnd of loop");
   return 0;
}

Output

a: 9 b: 1
a: 8 b: 2
a: 7 b: 3
a: 6 b: 4
a: 5 b: 5

End of loop

The other type of loop in C, the do – while loop appears similar to while loop in most cases, although there is a difference in its syntax. The do – while is called as exit verified loop. In some cases, their behaviour is different. Difference between while and do – while loop has been discussed in the do – while chapter of this tutorial.

In the examples above, the while loop is designed to repeat for a number of times, or till a certain condition is found. C has break and continue statements to control the loop. These keywords can be used inside the while loop.

The break statement causes loop to be terminated.

while (expr)
{
   . . .
   . . .
   if (condition)
      break;
   . . .
}

The continue statement makes the loop repeat from the beginning.

while (expr)
{
   . . .
   . . .
   if (condition)
      continue;
   . . .
}

In subsequent chapters, we shall learn more about break and continue statements.

c_loops.htm
Advertisements