Control Sructures - Repetition
Repetition Statements
- Repetition statements are called loops, and are used to repeat
the same code mulitple times in succession.
- The number of repetitions is based on criteria defined in the
loop structure, usually a true/false expression
- The three loop structures in C++ are:
- while loops
- do-while loops
- for loops
- Three types of loops are not actually needed, but having the
different forms is convenient
while and do-while loops
- Format of while loop:
while (expression)
statement
- Format of do/while loop:
do
statement
while (expression);
- The expression in these formats is handled
the same as in the if/else statements discussed previously
(0 means false, anything else means true)
- The "statement" portion is also as in if/else.
It can be a single statement or a compund statement (a block { } ).
- We could also write the formats as follows (illustrating more visually
what they look like when a compound statement makes up the loop "body"):
// while loop format
while (expression)
{
statement1;
statement2;
// ...
statementN;
}
// do-while loop format
do
{
statement1;
statement2;
// ...
statementN;
} while (expression);
- HOW THEY WORK
- The expression is a test condition that is evaluated to decide
whether the loop should repeat or not.
- true means run the loop body again.
- false means quit.
- The while and do/while loops both follow the same
basic flowchart -- the only exception is that:
- In a while loop, the expression is tested first
- In a do/while loop, the loop "body" is executed first
Examples
Both of the following loops add up all of the numbers between 1 and 50.
// while loop example
// loop body runs 50 times, condition checked 51 times
int i = 1, sum = 0;
while (i <= 50)
{
sum += i; // means: sum = sum + i;
i++; // means: i = i + 1;
}
cout << "Sum of numbers from 1 through 50 is " << sum;
// do/while loop example
// loop body runs 50 times, condition checked 50 times
int i = 1, sum = 0;
do
{
sum += i; // means: sum = sum + i;
i++; // means: i = i + 1;
} while (i <= 50);
cout << "Sum of numbers from 1 through 50 is " << sum;
Example Links
The for loop
Examples of for loops
- Recall this while loop example, which adds the numbers from 1
to 50:
int i = 1, sum = 0;
while (i <= 50)
{
sum += i;
i++;
}
cout << "Sum of numbers from 1 through 50 is " << sum;
Here's a for loop that does the same job:
// for loop example
// loop body runs 50 times, condition checked 51 times
int i, sum = 0;
for (i = 1; i <= 50; i++)
{
sum += i;
}
cout << "Sum of numbers from 1 through 50 is " << sum;
- This loop prints out the word "Hello" 10 times:
for (int i = 0; i < 10; i++)
cout << "Hello\n";
So does this one
for (int i = 1; i <= 10; i++)
cout << "Hello\n";
- A few common types of algorithms using for-loops:
- Examples using nested loops:
Special notes about for loops:
- It should be noted that if the control variable is declared inside
the for header, it only has scope through the for loop's execution.
Once the loop is finished, the variable is out of scope:
for (int counter = 0; counter < 10; counter++)
{
// loop body
}
cout << counter; // illegal. counter out of scope
This can be avoided by declaring the control variable before the loop
itself.
int counter; // declaration of control variable
for (counter = 0; counter < 10; counter++)
{
// loop body
}
cout << counter; // OK. counter is in scope
- For loops also do not have to count one-by-one, or even upward.
Examples:
for (i = 100; i > 0; i--)
for (c = 3; c <= 30; c+=4)
The first example gives a loop header that starts counting at 100 and
decrements its control variable, counting down to 1 (and quitting when
i reaches 0). The second example shows a loop that begins counting
at 3 and counts by 4's (the second value of c will be 7, etc).
Special statements: break and continue
- These statements can be used to alter the flow of control in loops,
although they are not specifically needed. (Any loop can be made
to exit by writing an appropriate test expression).
- break: This causes immediate exit from any loop (as
well as from switch blocks)
- continue: When used in a loop, this statement causes
the current loop iteration to end, but the loop then moves on to the next
step.
- In a while or do-while loop, the rest of the loop
body is skipped, and execution moves on to the test
condition
- In a for loop, the rest of the loop body is skipped, and
execution moves on to the iterative statement
- An example of
continue