Chapter 6 - Iteration. In this chapter we will: discuss the use of repetition (iteration) in programming algorithms; describe the Java while, for, and do-while statements; demonstrate the use of loop invariants to verify the correctness of loops; show the use of loops in data entry and computer animation.
Trang 1
Chapter 6
Iteration
Lecture Slides to Accompany
An Introduction to Computer Science Using Java (2nd Edition)
by S.N Kamin, D Mickunas, E Reingold
Trang 2
Chapter Preview
In this chapter we will:
• discuss the use of repetition (iteration) in programming algorithms
• describe the Java while, for, and do-while statements
• demonstrate the use of loop invariants to verify the correctness of loops
• show the use of loops in data entry and computer animation
Trang 3
while Loop
• Repeated executes body of the loop which
can be a single or compound statement
• A while loop will execute as long as its
condition is true
• An infinite loop will occur if the condition
never becomes false
• Example:
count = 1;
while (count <= 10)
count = count + 1;
Trang 4
while Loop From Temperature
Conversion Program
OutputBox out = new OutputBox( );
out.println(“\tDEGREES C\tDEGREES F”);
// initialize the loop variable
cent = LOW_TEMP;
// test the loop variable
while (cent <= HIGH_TEMP) {
// convert C to F
fahr = (9.0 / 5.0) * cent + 32.0;
out.println(“\t” + cent “\t\t” fahr);
// increment loop variable
cent = cent + 1.0;
}
Trang 5Trang 6
for Statement
• Used to implement pre-test loops that are controlled by incrementing a variable each time the loop is executed
• Loop variable computations for initialization, testing, and incrementing appear in a single statement
• Example:
for(count=1; count <= 10; count = count + 1);
Trang 7
Comparing for and while
• Done using for
for ( statement1;
condition;
statement2 )
statement 3;
• Equivalent while loop
statement1;
while (condition) { statement3;
statement2;
}
Trang 8
Temperature Conversion Program
Loop Implemented Using for
OutputBox out = new OutputBox( );
out.println(“\tDEGREES C\tDEGREES F”);
for (cent = LOW_TEMP;
cent <= HIGH_TEMP;
cent = cent + 1.0;) {
// convert C to F
fahr = (9.0 / 5.0) * cent + 32.0;
out.println(“\t” + cent “\t\t” fahr); }
Trang 9
do-while Statement
• Used to implement post-test loops that always
execute the loop body at least one time
• A do-while loop will continue execute as long as its condition is true
• An infinite loop will occur if the condition never
becomes false
• Example:
count = 1;
do { count = count + 1;
} while (count <= 10);
Trang 10
Comparing do-while and while
• Done using do-while
do
statement;
while (condition);
• Equivalent while loop
statement;
while (condition) statement;
Trang 11
Comparing do-while and while
• Done using do-while
numberOfDigits = 0;
rest = number;
do {
rest = rest / 10;
numberOfDigits++;
} while (rest != 0);
• Equivalent while loop
numberOfDigits = 0;
rest = number;
if (number = 0) numberOfDigits = 1; else
while (rest > 0) { rest = rest / 10; numberOfDigits++; };
Trang 12
Reading Input Using a Loop
• Done using do-while
read score
if ( not end of input)
do {
process score
read score
} while ( not end of input );
• Done using while
read score while ( not end of input ) { process score
read score };
Trang 13
Sentinel Controlled Loop
int i = 0;
InputBox in = new InputBox();
In.setPrompt(“Enter data or –1 to terminate”);
// read first score
score = in.readInt();
while ( score != -1 ) {
i++;
// insert code to process score
// read next score
score = in.readInt();
}
Trang 14
Reading to End of Input
int i = 0;
InputBox in = new InputBox();
In.setPrompt(“Enter score (empty input ends data”);
// read first score
score = in.readInt();
while ( !in.eoi() ) {
i++;
// insert code to process score
// read next score
score = in.readInt();
}
Trang 15
Loop-and-a-Half
• Done using while
read score
while ( !in.eoi( ) ) {
process score
read score
};
• Done using do-while
do { read score
if ( !in.eoi( ) ) process score } while ( !in.eoi( ) );
Trang 16Trang 17
Infinite Loop with Escape
• Done using do-while
do {
read
if ( in.eoi( ) ) return
process
} while ( true );
• Done using while
while (true) { read
if ( in.eoi( ) ) return process score
};
Trang 18Trang 19
Drawing in Java
// code to read and display GIF image from file import java.awt.*;
Import CSLib.*;
…
DrawingBox g = new DrawingBox();
…
Toolkit tools = Toolkit.getDefaultToolkit():
Image mouse =
tools.getImage(“C:/KMR/images/mouse.gif”); g.drawImage(mouse, x, y);
Trang 20
Nested Loops
int advance = 0;
// Draw clock and read input repeatedly
do {
for (int i = 1; i <= advance; i++) {
// Advance time
c.setMinute(c.getMinute()+1);
// Update clock display
d.clear();
c.display(d, SIZE/2, SIZE/2, SIZE/2);
}
in.setPrompt(“Advance how many minutes?”); advance = in.readInt();
} while (!in.eoi());