Chap05

33
Java Programming: From Problem Analysis to Program Design, 3e Chapter 5 Control Structures II: Repetition

Transcript of Chap05

Page 1: Chap05

Java Programming: From Problem Analysis to Program Design, 3e

Chapter 5

Control Structures II: Repetition

Page 2: Chap05

2Java Programming: From Problem Analysis to Program Design, 3e

Chapter Objectives

• Learn about repetition (looping) control structures• Explore how to construct and use count-

controlled, sentinel-controlled, flag-controlled, and EOF-controlled repetition structures

• Examine break and continue statements• Discover how to form and use nested control

structures

Page 3: Chap05

3Java Programming: From Problem Analysis to Program Design, 3e

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

Page 4: Chap05

4Java Programming: From Problem Analysis to Program Design, 3e

The while Looping (Repetition) Structure

• Syntaxwhile (expression)

statement

• Expression is always true in an infinite loop

• Statements must change value of expression to false

Page 5: Chap05

5Java Programming: From Problem Analysis to Program Design, 3e

The while Looping (Repetition) Structure (continued)

Page 6: Chap05

6Java Programming: From Problem Analysis to Program Design, 3e

The while Looping (Repetition) Structure (continued)

Example 5-1

i = 0; //Line 1while (i <= 20) //Line 2{

System.out.print(i + " "); //Line 3 i = i + 5; //Line 4

}

System.out.println(); //Line 5

Output:

0 5 10 15 20

Page 7: Chap05

7Java Programming: From Problem Analysis to Program Design, 3e

The while Looping (Repetition) Structure (continued)

• Typically, while loops are written in the following form:

Page 8: Chap05

8Java Programming: From Problem Analysis to Program Design, 3e

Counter-Controlled while Loop• Used when exact number of data or entry pieces is

known• General form:

Page 9: Chap05

9Java Programming: From Problem Analysis to Program Design, 3e

Sentinel-Controlled while Loop

• Used when exact number of entry pieces is unknown but last entry (special/sentinel value) is known

• General form:

Page 10: Chap05

10Java Programming: From Problem Analysis to Program Design, 3e

Flag-Controlled while Loop

• Boolean value used to control loop

• General form:

Page 11: Chap05

11Java Programming: From Problem Analysis to Program Design, 3e

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

Page 12: Chap05

12Java Programming: From Problem Analysis to Program Design, 3e

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:

Page 13: Chap05

13Java Programming: From Problem Analysis to Program Design, 3e

EOF(End of File)-Controlled while Loop (continued)

• Suppose that inFile is a Scanner object initialized to the input file; in this case, the EOF-controlled while loop takes the following form:

Page 14: Chap05

14Java Programming: From Problem Analysis to Program Design, 3e

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

Page 15: Chap05

15Java Programming: From Problem Analysis to Program Design, 3e

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)

Page 16: Chap05

16Java Programming: From Problem Analysis to Program Design, 3e

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

Page 17: Chap05

17Java Programming: From Problem Analysis to Program Design, 3e

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

Page 18: Chap05

18Java Programming: From Problem Analysis to Program Design, 3e

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

Page 19: Chap05

19Java Programming: From Problem Analysis to Program Design, 3e

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

Page 20: Chap05

20Java Programming: From Problem Analysis to Program Design, 3e

The for Looping (Repetition) Structure (continued)

Page 21: Chap05

21Java Programming: From Problem Analysis to Program Design, 3e

The for Looping (Repetition) Structure (continued)

Example 5-8The following for loop prints the first 10 nonnegative integers:

for (i = 0; i < 10; i++)

System.out.print(i + " ");

System.out.println();

Page 22: Chap05

22Java Programming: From Problem Analysis to Program Design, 3e

The for Looping (Repetition) Structure (continued)

Example 5-91. 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

Page 23: Chap05

23Java Programming: From Problem Analysis to Program Design, 3e

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

Page 24: Chap05

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

Page 25: Chap05

25Java Programming: From Problem Analysis to Program Design, 3e

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

Page 26: Chap05

26Java Programming: From Problem Analysis to Program Design, 3e

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

Page 27: Chap05

27Java Programming: From Problem Analysis to Program Design, 3e

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

Page 28: Chap05

28Java Programming: From Problem Analysis to Program Design, 3e

do…while Loop (Post-test Loop)

Page 29: Chap05

29Java Programming: From Problem Analysis to Program Design, 3e

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

Page 30: Chap05

30Java Programming: From Problem Analysis to Program Design, 3e

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

Page 31: Chap05

31Java Programming: From Problem Analysis to Program Design, 3e

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

Page 32: Chap05

32Java Programming: From Problem Analysis to Program Design, 3e

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:***************

Page 33: Chap05

33Java Programming: From Problem Analysis to Program Design, 3e

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