learnprogramming123

LEARN PROGRAMMING 123
your resources to programming and free tutition



Navigation

 
C
 
C++ soon here!
VB - soon here!

Search

 

 

 

 

Next Back

 

Lesson 7: Loops

This lesson will show you how to:

  • use the while loop
  • use the do ...while loop
  • use the for loop

Q. Why was the blonde so pleased to complete a jigsaw puzzle in 18 months?
A. Because the box said "From 2 to 5 years"

Loops can be created to execute a block of code for a fixed number of times or (e.g. 7 or 17 or 70). Alternatively, loops can be created to repetitively execute a block of code until a condition changes to a wanted state. For instance, the loop may continue until a condition changes from false to true, or from true to false. In this case, the block of code being executed must update the condition being tested in order for the loop to terminate at some point. If the test condition does not change somehow within the loop, the loop will never terminate - the so known 'endless loop'. This is logical error.

while
The while loop is used to execute a block of code as long as some condition is true. If the condition is false from the start the block of code is not executed at al. The while loop tests the condition before it's executed so sometimes the loop may never be executed if initially the condition is not met. Its syntax is as follows.

    while (tested condition is satisfied)
{
    block of code
}

In all constructs, curly braces should only be used if the construct is to execute more than one line of code. The above program executes only one line of code so it not really necessary (same rules apply to if...else constructs) but you can use it to make the program seem more understandable or readable.

Here is a simple example of the use of the while loop. This program counts from 1 to 100.


#include <stdio.h>

int main(void)
{

    int count = 1;

    while (count <= 100)
    {
        printf("%d\n",count);
        count += 1;        // Notice this statement
    }

    return 0;

}

Note that no semi-colons ( ; ) are to be used after the while (condition) statement. These loops are very useful because the condition is tested before execution begins. However i never seem to like these loops as they are not as clear to read as the do ...while loops. The while loop is the favorite amongst most programmers but as for me, i definitely prefer the do ...while loop.

do ....while
The do loop also executes a block of code as long as a condition is satisfied. The difference between a "do ...while" loop and a "while {} " loop is that the while loop tests its condition before execution of the contents of the loop begins; the "do" loop tests its condition after it's been executed at least once. As noted above, if the test condition is false as the while loop is entered the block of code is never executed. Since the condition is tested at the bottom of a do loop, its block of code is always executed at least once.

Some people don't like these loops because it is always executed at least once. When i ask them "so what?", they normally reply that the loop executes even if the data is incorrect. Basically because the loop is always executed, it will execute no matter what value or type of data is supposed to be required. The "do ....while" loops syntax is as follows

do
{
     block of code
} while (condition is satisfied);


Note that a semi-colon ( ; ) must be used at the end of the do ...while loop. This semi-colon is needed because it instructs whether the while (condition) statement is the beginning of a while loop or the end of a do ...while loop. Here is an example of the use of a do loop.

include <stdio.h>

int main(void)
{

int value, r_digit;

printf(“Enter a number to be reversed.\n”);
scanf(“%d”, &value);

do
{
    r_digit = value % 10;
    printf(“%d”, r_digit);
    value = value / 10;
} while (value != 0);

printf(“\n”);

return 0;


}

for
The third and last looping construct in C is the for loop. The for loop can execute a block of code for a fixed or given number of times. Its syntax is as follows.

for (initializations;test conditions;increment value)
{
    block of code
}

The simplest way to understand for loops is to study several examples.

First, here is a for loop that counts from 1 to 10.

for (count = 1; count <= 10; count++)
{
    printf("%d\n",count);
}

The test conditions may be unrelated to the variables being initialized and updated. Here is a loop that counts until a user response terminates the loop.

for (count = 1; response != 'N'; count++)
{
    printf("%d\n",count);
    printf("Dam man, you still want to continue? (Y/N): \n");
    scanf("%c",&response);
}

More complicated test conditions are also allowed. Suppose the user of the last example never enters "N", but the loop should terminate when 100 is reached, regardless.

for (count = 1; (response != 'N') && (count <= 100); count++)
{
    printf("%d\n",count);
    printf("Dam man, you still want to continue? (Y/N): \n");
    scanf("%c",&response);
}

It is also possible to have multiple initializations and multiple actions. This loop starts one counter at 0 and another at 100, and finds a midpoint between them. (This is advanced material).

for (i = 0, j = 100; j != i; i++, j--)
{
    printf("i = %d, j = %d\n",i,j);
}

printf("i = %d, j = %d\n",i,j);

All of the constituent parts of the statement are optional. The initialization, condition, termination sections of the for loop can be blank. For instance, suppose we need to count from a user specified number to 100. The first semicolon is still required as a place keeper

printf("Enter a number to start the count: ");
scanf("%d",&count);

for ( ; count < 100 ; count++)
{
    printf("%d\n",count);
}

The actions are also optional. Here is a silly example that will repeatedly echo a single number until a user terminates the loop;

for (number = 5; response != 'Y';)
{
    printf("%d\n",number);
    printf("You still want to look at this? (Y/N) \n");
    scanf("%c",&response);
}

back to top        go to next lesson