Transcript Chapter 5

Java Programming: From Problem
Analysis to Program Design, 3e
Chapter 5
Control Structures II: Repetition
Chapter Objectives
• Learn about repetition (looping) control structures
• Explore how to construct and use countcontrolled, sentinel-controlled, flag-controlled,
and EOF-controlled repetition structures
• Examine break and continue statements
• Discover how to form and use nested control
structures
Java Programming: From Problem Analysis to Program Design, 3e
2
Why Is Repetition Needed?
• There are many situations in which the
same statements need to be executed several
times
• Example
– Formulas used to find average grades for
students in a class
Java Programming: From Problem Analysis to Program Design, 3e
3
The while Looping (Repetition)
Structure
• Syntax
while (expression)
statement
• Expression is always true in an infinite loop
• Statements must change value of expression to
false
Java Programming: From Problem Analysis to Program Design, 3e
4
The while Looping (Repetition)
Structure (continued)
Java Programming: From Problem Analysis to Program Design, 3e
5
The while Looping (Repetition)
Structure (continued)
Example 5-1
i = 0;
while (i <= 20)
{
System.out.print(i + " ");
i = i + 5;
}
System.out.println();
//Line 1
//Line 2
//Line 3
//Line 4
//Line 5
Output:
0 5 10 15 20
Java Programming: From Problem Analysis to Program Design, 3e
6
The while Looping (Repetition)
Structure (continued)
• Typically, while loops are written in the
following form:
Java Programming: From Problem Analysis to Program Design, 3e
7
Counter-Controlled while Loop
• Used when exact number of data or entry pieces
is known
• General form:
Java Programming: From Problem Analysis to Program Design, 3e
8
Sentinel-Controlled while Loop
• Used when exact number of entry pieces is
unknown but last entry (special/sentinel value) is
known
• General form:
Java Programming: From Problem Analysis to Program Design, 3e
9
Flag-Controlled while Loop
• Boolean value used to control loop
• General form:
Java Programming: From Problem Analysis to Program Design, 3e
10
EOF(End of File)-Controlled while
Loop
• Used when input is from files
• Sentinel value is not always appropriate
• In an EOF-controlled while loop that uses
the Scanner object console to input
data, console acts at the loop control
variable
• The method hasNext, of the class
Scanner, returns true if there is an input
in the input stream; otherwise it returns
false
Java Programming: From Problem Analysis to Program Design, 3e
11
EOF(End of File)-Controlled
while Loop (continued)
• The expression console.hasNext() evaluates
to true if there is an input in the input stream;
otherwise it returns false
• Expressions such as console.nextInt() act
as the loop condition
• A general form of the EOF-controlled while loop
that uses the Scanner object console to input
data is of the form:
Java Programming: From Problem Analysis to Program Design, 3e
12
EOF(End of File)-Controlled
while Loop (continued)
• Suppose that inFile is a Scanner object
initialized to the input file; in this case, the EOFcontrolled while loop takes the following form:
Java Programming: From Problem Analysis to Program Design, 3e
13
Programming Example:
Checking Account Balance
• Input file: customer’s account number,
account balance at beginning of month,
transaction type (withdrawal, deposit,
interest), transaction amount
• Output: account number, beginning balance,
ending balance, total interest paid, total
amount deposited, number of deposits, total
amount withdrawn, number of withdrawals
Java Programming: From Problem Analysis to Program Design, 3e
14
Programming Example: Checking
Account Balance (continued)
• Solution
– Read data
– EOF-controlled loop
– switch structure of transaction types
– Determine action (add to balance or subtract
from balance depending on transaction type)
Java Programming: From Problem Analysis to Program Design, 3e
15
Programming Example:
Fibonacci Number
•
Fibonacci formula for any Fibonacci sequence:
an = an-1 + an-2
•
Input: first two Fibonacci numbers in sequence,
position in sequence of desired Fibonacci number
(n)
–
–
–
•
int previous1 = Fibonacci number 1
int previous2 = Fibonacci number 2
int nthFibonacci = position of nth Fibonacci number
Output: nth Fibonacci number
Java Programming: From Problem Analysis to Program Design, 3e
16
Programming Example: Fibonacci
Number (Solution)
if (nthFibonacci == 1)
current = previous1;
else if (nthFibonacci == 2)
current = previous2;
else
{
counter = 3;
while (counter <= nthFibonacci)
{
current = previous2 + previous1;
previous1 = previous2;
previous2 = current;
counter++;
}
}
• Final result found in last value of current
Java Programming: From Problem Analysis to Program Design, 3e
17
The for Looping (Repetition)
Structure
• Specialized form of while loop
• Simplifies the writing of count-controlled loops
• Syntax:
for (initial expression; logical expression;
update expression)
statement
Java Programming: From Problem Analysis to Program Design, 3e
18
The for Looping (Repetition)
Structure (continued)
• Execution
– Initial statement executes
– The loop condition evaluated
– If loop condition evaluates to true, execute
for loop statement and execute update
statement
– Repeat until loop condition is false
Java Programming: From Problem Analysis to Program Design, 3e
19
The for Looping (Repetition)
Structure (continued)
Java Programming: From Problem Analysis to Program Design, 3e
20
The for Looping (Repetition)
Structure (continued)
Example 5-8
The following for loop prints the first 10 nonnegative
integers:
for (i = 0; i < 10; i++)
System.out.print(i + " ");
System.out.println();
Java Programming: From Problem Analysis to Program Design, 3e
21
The for Looping (Repetition)
Structure (continued)
Example 5-9
1.
The following for loop outputs the word Hello and a star (on separate
lines) five times:
for (i = 1; i <= 5; i++)
{
System.out.println("Hello");
System.out.println("*");
}
2.
for (i = 1; i <= 5; i++)
System.out.println("Hello");
System.out.println("*");
This loop outputs the word Hello five times and the star only once
Java Programming: From Problem Analysis to Program Design, 3e
22
The for Looping (Repetition)
Structure (continued)
• Does not execute if initial condition is
false
• Update expression changes value of loop
control variable, eventually making it false
• If logical expression is always true, result
is an infinite loop
• Infinite loop can be specified by omitting all
three control statements
Java Programming: From Problem Analysis to Program Design, 3e
23
The for Looping (Repetition)
Structure (continued)
• If logical expression is omitted, it is
assumed to be true
• for statement ending in semicolon is
empty
Java Programming: From Problem Analysis to Program Design, 3e
24
Programming Example: Classify
Numbers
• Input: N integers (positive, negative, and zeros)
int N = 20;
//N easily modified
• Output: number of 0s, number of even integers,
number of odd integers
Java Programming: From Problem Analysis to Program Design, 3e
25
Programming Example: Classify
Numbers (Solution)
for (counter = 1; counter <= N; counter++)
{
number = console.nextInt();
System.out.print(number + " ");
switch (number % 2)
{
case 0:
evens++;
if (number == 0)
zeros++;
break;
case 1:
case -1:
odds++;
} //end switch
} //end for loop
Java Programming: From Problem Analysis to Program Design, 3e
26
The do…while Loop
(Repetition) Structure
• Syntax:
• Statements executed first, then logical
expression evaluated
• Statement(s) executed at least once then
continued if logical expression is true
Java Programming: From Problem Analysis to Program Design, 3e
27
do…while Loop (Post-test Loop)
Java Programming: From Problem Analysis to Program Design, 3e
28
break Statements
• Used to exit early from a loop
• Used to skip remainder of switch
structure
• Can be placed within if statement of a loop
– If condition is met, loop exited immediately
Java Programming: From Problem Analysis to Program Design, 3e
29
continue Statements
• Used in while, for, and do...while
structures
• When executed in a loop, the remaining
statements in the loop are skipped; proceeds
with the next iteration of the loop
• When executed in a while/do…while
structure, expression evaluated immediately
after continue statement
• In a for structure, the update expression is
executed after the continue statement;
then the loop condition executes
Java Programming: From Problem Analysis to Program Design, 3e
30
Nested Control Structures
• Provides new power, subtlety, and
complexity
• if, if…else, and switch structures can
be placed within while loops
• for loops can be found within other for
loops
Java Programming: From Problem Analysis to Program Design, 3e
31
Nested Control Structures (Example)
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
System.out.print(" *");
System.out.println();
}
• Output:
*
**
***
****
*****
Java Programming: From Problem Analysis to Program Design, 3e
32
Chapter Summary
• Looping Mechanisms
–
–
–
–
–
–
Counter-controlled while loop
Sentinel-controlled while loop
Flag-controlled while loop
EOF-controlled while loop
for loop
do…while loop
• break statements
• continue statements
• Nested control structures
Java Programming: From Problem Analysis to Program Design, 3e
33