Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Chapter 8
Repetition
Statements
Introduction
Iteration - process of looping or the repetition
of one or more statements
Loop body - the statement, or statements,
that will be repeated
8.1 General Repetition Concepts
Two different categories of loops
• Pre-test: Test condition first - complete the
body of the loop if condition is true
• Post-test: Test condition after body has
executed once - body will only be repeated if
the condition is true
8.1 General Repetition Concepts
Pre-Test
Loop
Post-Test
Loop
Start Loop
Start Loop
Evaluate
Condition
Body of Loop
True
False
Body of Loop
True
Evaluate
Condition
False
End Loop
End Loop
8.1 General Repetition Concepts
Looping structures must have the following:
• Variable(s) with an initial value(s) to control
whether the body of the loop is executed (i.e.,
control variable)
• Conditional expression involving control
variable(s)
• Statement within the body where control
variable is modified each time the body of the
loop is executed
8.1 General Repetition Concepts
Infinite loop – a loop that continuously
executes - the program or loop has to be
terminated by the user or programmer
• Usually an error situation
• Most common cause - failure to manipulate the
control variable
• In Windows/Unix - pressing Ctrl + C causes
program to stop execution
8.1 General Repetition Concepts
Nested loop – a loop embedded in another
loop
• Almost any statement type can be the loop
body – including loops or conditional
statements
• Once inner loop finishes, flow transfers to
the next statement following the inner loop
8.2 The while Loop
Pre-test loop
Syntax:
while ( <condition> )
<action/body>
• Action, or body, will continue to execute while
the condition remains true
• If the body needs to include multiple
statements, surround them (action) with curly
braces
8.2 The while Loop
Sometimes see a loop written as:
while ( 1 ) { ... }
The numeric literal 1 is treated as a true
condition and never changes – causing an
infinite loop
8.2 The while Loop
char again = ‘N';
cout << "\nDo you wish to multiply two numbers (y/n)? ";
cin >> again; // Priming read
//-| Read two numbers as long as usery says so.
while ( again == 'y' || again == 'Y' ) // Notice no semicolon
{
cout << "Enter first number: ";
cin >> operand1;
cout << "Enter second number: ";
cin >> operand2;
cout << "Result: " << operand1 << " * " << operand2
<< " = " << operand1 * operand2 << endl;
// Don’t forget to change the control variable
cout << "\nDo you wish to multiply two more numbers (y/n)? ";
cin >> again;
} // End of the loop body (action)
cout << "The End" << endl;
8.2 The while Loop
Priming read - a read before loop is reached
• Initializes a variable that can be used to control
the loop.
• Initializes a variable being used as an
accumulator
General Concept – initialization
• To provide a correct answer when the loop
does not execute its body
• Examples: sum = 0; min = first input value, etc.
8.3 The do-while Loop
Post-test loop (the body executes at least
once)
Syntax:
do
<body/action>
while ( <condition> );
• Note semicolon after (…)!!
• If the body needs to include multiple statements,
surround them with curly braces
8.3 The do-while Loop
char menu_choice;
float number;
cout << "Please enter a number: "; cin >> number;
do
{
cout << "\n1) Square the Number\n"
<< "2) Cube the Number\n"
<< "3) Exit\n\n"
<< "Please enter menu choice: " << endl;
cin >> menu_choice;
switch ( menu_choice )
{
case '1':
cout << number << " Squared = "
<< number * number << endl;
break;
case '2':
cout << number << " Cubed = "
<< number * number * number << endl;
break;
case '3':
cout << "Goodbye" << endl;
break;
default:
cout << "Invalid menu option" << endl;
}
} while ( menu_choice != '3' ); // Notice the semicolon
8.4 The for Loop
Generally used when:
• a specific number of iterations is required
• The control of the repetition is based on a
sequence of values (e.g., 1,2,3,…,7; odd
numbers; 5,4,3,2,1.
Both while loops and for loops are pretest loops - could be used interchangeably
8.4 The for Loop
Syntax: (Red = for loop specification)
for ( <initial_value_assignment> ;
<continuation_condition> ;
<control_variable_update> )
<action>
Example:
for (k=4; k <= 10; k++)
cin >> x;
8.4 The for Loop
Start for loop
for ( int i = 0; i < 5; i++ )
cout << i << ' ';
// Output
0 1 2 3 4
Initialize control
variable
(i = 0)
Execute body of
loop (Display
contents of i)
True
Check
condition
Is i < 5?
False
Manipulate
control variable
(i++)
Terminate for loop
8.4 The for Loop
for ( <init> ;
<continue_condition> ;
<control_var_update> )
<body/action>
Four sections:
• Loop specification components separated by ;
• <init> and <update> components can include
multiple statements separated by commas
• body can be any executable statement.
8.4 The for Loop
Order in which the parts are executed:
1.<init>
2.<continuation_condition>
3.<body/action> (if true condition)
4.<update>
5.<condition>
...
The <init> section is only executed once
8.4 The for Loop
Variable(s) may be declared in <init> section
• Scope is limited to the loop specification
and body
for (int k=1; k< 5; k++) cout << k << “ “;
• output sequence 1 2 3 4
8.4 The for Loop
// Example 1
for ( int i = 0; i < 5; i++ ) // No semicolon
cout << i << endl;
// Example 2
// Notice the multiple expressions
for ( int i = 0, j = 5; i < 5; i++, j-- )
cout << i << ' ' << j << endl;
// Example Output
// Ex. 1
// Ex. 2
0
0 5
1
1 4
2
2 3
3
3 2
4
4 1
8.4 The for loop
int sum = 0, value;
for ( int i = 0; i < 5; i++ ) // No semicolon
{
cout << "Enter value " << i + 1 << ": ";
cin >> value;
sum += value;
}
cout << "The sum of the five values is: " << sum << endl;
// Example Output
Enter value 1: 4
Enter value 2: 7
Enter value 3: 3
Enter value 4: 12
Enter value 5: 99
The sum of the five values is: 125
8.4.1 Nested for Loops
for loops can be nested
• Used in many algorithms
• Important when using multi-dimensional arrays
8.4.1 Nested for Loops
Start for loop
for ( int row = 0; row < 5; row++ )
{
for ( int col = 0; col < 5; col++ )
cout << col << ' ';
Initialize control
variable
(row = 0)
Check
condition
Is row < 5?
True
cout << endl;
}
// Example Output
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
Change
Control variable
row++
Initialize control
variable
(col = 0)
Check
condition
Is col < 5?
False
True
False
Execute body of
inner loop
Display contents of
col
Print newline
End for loop
Change
control variable
col++
8.4.1 Nested for Loops
for ( int row = 0; row < 5; row++ )
{
for ( int col = row; col < 5; col++ )
cout << col << ' ';
cout << endl;
}
// Example Output
0 1 2 3 4
1 2 3 4
2 3 4
3 4
4