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