© 2006 pearson education chapter 3 part 2 more about strings and conditional statements loops (for...

36
© 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

Upload: chad-pope

Post on 01-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

© 2006 Pearson Education

Chapter 3 Part 2

More about Strings

and

Conditional Statements

Loops (for and while)

1

Page 2: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

2

Repetition Statements

Repetition statements allow us to execute a statement multiple times

Often they are referred to as loops

Like conditional statements, they are controlled by boolean expressions

The text covers two kinds of repetition statements:• the while loop• the for loop

The programmer should choose the right kind of loop for the situation

Page 3: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

3

The while Statement

The while statement has the following syntax:

while ( condition ) statement;

while is areserved word

If the condition is true, the statement is executed.Then the condition is evaluated again.

The statement is executed repeatedly untilthe condition becomes false.

Page 4: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

4

Logic of a while Loop

statement

true

conditionevaluated

false

Page 5: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

5

The while Statement

Note that if the condition of a while statement is false initially, the statement is never executed

Therefore, the body of a while loop will execute zero or more times

See Counter.java (page 147)

See Average.java (page 148)• A sentinel value indicates the end of the input• The variable sum maintains a running sum

See WinPercentage.java (page 151)• A loop is used to validate the input, making the program

more robust

Page 6: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

while (value != 0) // sentinel value of 0 to terminate loop { count++;

sum += value; System.out.println ("The sum so far is " + sum);

System.out.print ("Enter an integer (0 to quit): "); value = scan.nextInt(); }

System.out.println (); System.out.println ("Number of values entered: " + count);

average = (double)sum / count;

DecimalFormat fmt = new DecimalFormat ("0.###"); System.out.println ("The average is " + fmt.format(average)); } }

Page 7: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

while (won < 0 || won > NUM_GAMES) { System.out.print ("Invalid input. Please reenter: "); won = scan.nextInt(); }

ratio = (double)won / NUM_GAMES;

NumberFormat fmt = NumberFormat.getPercentInstance();

System.out.println (); System.out.println ("Winning percentage: " +

fmt.format(ratio)); } }

Page 8: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

8

Infinite Loops

The body of a while loop eventually must make the condition false

If not, it is an infinite loop, which will execute until the user interrupts the program

This is a common logical error

You should always double check to ensure that your loops will terminate normally

See Forever.java (page 152)

Page 9: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

public class Forever { //----------------------------------------------------------------- // Prints ever-decreasing integers in an INFINITE LOOP! //----------------------------------------------------------------- public static void main (String[] args) { int count = 1;

while (count <= 25) { System.out.println (count); count = count - 1; }

System.out.println ("Done"); // this statement is never reached

} }

Page 10: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

10

Nested Loops

Similar to nested if statements, loops can be nested as well

That is, the body of a loop can contain another loop

Each time through the outer loop, the inner loop goes through its full set of iterations

See PalindromeTester.java (page 155)

Page 11: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

while (another.equalsIgnoreCase("y")) // allows y or Y { System.out.println ("Enter a potential palindrome:"); str = scan.nextLine();

left = 0; right = str.length() - 1;

while (str.charAt(left) == str.charAt(right) && left < right) { left++; right--; }

Page 12: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

System.out.println();

if (left < right) System.out.println ("That string is NOT a palindrome."); else System.out.println ("That string IS a palindrome.");

System.out.println(); System.out.print ("Test another palindrome (y/n)? "); another = scan.nextLine(); } } }

Page 13: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

13

Conditional Operator

Conditional operators are a shortcut way to express an if-else situation.

Format:

result = (condition)? value1 : value2;

“if” part

“else” part

Page 14: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

14

Conditional Operator

Example: (orig if-else)

if (x > 0) count = count + 1;else count = count – 1;

Example: (cond. operator)

count =(x > 0)? (count + 1) : (count – 1);

Page 15: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

15

The Do-While Loop

The do-while loop works like the while loop, BUT in a different order. The do portion is done first, before the while condition is checked.

Format: do{ … statements for what to do

}while (condition);

Page 16: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

16

Example of Do-While loop

int count = 0; int sum = 0;

do

{

sum = sum + count;

count ++;

}

while (count < 10);

Notice the while condition is not

checked until the do loop is executed at

least once.

Page 17: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

17

The for Statement

The for statement has the following syntax:

for ( initialization ; condition ; increment ) statement;

Reservedword

The initializationis executed once

before the loop begins

The statement isexecuted until the

condition becomes false

The increment portion is executed at the end of each iterationThe condition-statement-increment cycle is executed repeatedly

Page 18: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

18

The for Statement

A for loop is functionally equivalent to the following while loop structure:

initialization;while ( condition ){ statement; increment;}

Page 19: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

19

Logic of a for loop

statement

true

conditionevaluated

false

increment

initialization

Page 20: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

20

The for Statement

Like a while loop, the condition of a for statement is tested prior to executing the loop body

Therefore, the body of a for loop will execute zero or more times

It is well suited for executing a loop a specific number of times that can be determined in advance

See Counter2.java (page 161)

See Multiples.java (page 163)

See Stars.java (page 165)

Page 21: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

public class Counter2 { //----------------------------------------------------------------- // Prints integer values from 1 to a specific limit. //----------------------------------------------------------------- public static void main (String[] args) { final int LIMIT = 5;

for (int count=1; count <= LIMIT; count++) System.out.println (count);

System.out.println ("Done"); } }

Page 22: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

final int PER_LINE = 5; int value, limit, mult, count = 0; Scanner scan = new Scanner (System.in); System.out.print ("Enter a positive value: "); value = scan.nextInt(); System.out.print ("Enter an upper limit: "); limit = scan.nextInt(); System.out.println (); System.out.println ("The multiples of " + value + " between " + value + " and " + limit + " (inclusive) are:");

for (mult = value; mult <= limit; mult += value) { System.out.print (mult + "\t");

// Print a specific number of values per line of output count++; if (count % PER_LINE == 0) System.out.println(); } }

Page 23: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

public class Stars { //----------------------------------------------------------------- // Prints a triangle shape using asterisk (star) characters. //----------------------------------------------------------------- public static void main (String[] args) { final int MAX_ROWS = 10;

for (int row = 1; row <= MAX_ROWS; row++) { for (int star = 1; star <= row; star++) System.out.print ("*");

System.out.println(); } } }

Page 24: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

24

The for Statement

Each expression in the header of a for loop is optional

• If the initialization is left out, no initialization is performed

• If the condition is left out, it is always considered to be true, and therefore creates an infinite loop

• If the increment is left out, no increment operation is performed

Both semi-colons are always required in the for loop header

Page 25: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

25

Choosing a Loop Structure

When you can’t determine how many times you want to execute the loop body, use a while statement

If you can determine how many times you want to execute the loop body, use a for statement

Page 26: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

26

Program Development

We now have several additional statements and operators at our disposal

Following proper development steps is important

Suppose you were given some initial requirements:

• accept a series of test scores

• compute the average test score

• determine the highest and lowest test scores

• display the average, highest, and lowest test scores

Page 27: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

27

Program Development

Requirements Analysis – clarify and flesh out specific requirements• How much data will there be?

• How should data be accepted?

• Is there a specific output format required?

After conferring with the client, we determine:• the program must process an arbitrary number of test

scores

• the program should accept input interactively

• the average should be presented to two decimal places

The process of requirements analysis may take a long time

Page 28: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

28

Program Development

Design – determine a possible general solution

• Input strategy? (Sentinel value?)

• Calculations needed?

An initial algorithm might be expressed in pseudocode

Multiple versions of the solution might be needed to refine it

Alternatives to the solution should be carefully considered

Page 29: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

29

Program Development

Implementation – translate the design into source code

Make sure to follow coding and style guidelines

Implementation should be integrated with compiling and testing your solution

This process mirrors a more complex development model we'll eventually need to develop more complex software

The result is a final implementation

See ExamGrades.java (page 170)

Page 30: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

max = min = grade;

// Read and process the rest of the grades while (grade >= 0) { count++; sum += grade;

if (grade > max) max = grade; else if (grade < min) min = grade;

System.out.print ("Enter the next grade (-1 to quit): "); grade = scan.nextInt (); }

Page 31: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

// Produce the final results if (count == 0) System.out.println ("No valid grades were entered."); else { DecimalFormat fmt = new DecimalFormat ("0.##"); average = (double)sum / count; System.out.println(); System.out.println ("Total number of students: " +

count); System.out.println ("Average grade: " +

fmt.format(average)); System.out.println ("Highest grade: " + max); System.out.println ("Lowest grade: " + min); } }

Page 32: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

32

Program Development

Testing – attempt to find errors that may exist in your programmed solution

Compare your code to the design and resolve any discrepancies

Determine test cases that will stress the limits and boundaries of your solution

Carefully retest after finding and fixing an error

Page 33: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

33

More Drawing Techniques

Conditionals and loops can greatly enhance our ability to control graphics

See Bullseye.java (page 173)

See Boxes.java (page 175)

See BarHeights.java (page 177)

Page 34: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

34

Summary

Chapter 3 has focused on:

• program development stages• the flow of control through a method• decision-making statements• expressions for making complex decisions• repetition statements• drawing with conditionals and loops

Page 35: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

35

Assignment 3 COMPLETE ALL ASSIGNMENTS IN THE ORDER LISTED Lab 2 -- Grades Lab 3 Phase 1

• Counting and Looping – Love CS• Powers of 2 – Powers• A guessing Game – Guess

Chapter 3 Exercises continued• numbers 9- 13

Lab 3 Phase 2• Factorials – Factorial (Ex. Credit)• More Guessing – GuessDo

Chapter 3 Exercises continued• numbers 14 - 22

Page 36: © 2006 Pearson Education Chapter 3 Part 2 More about Strings and Conditional Statements Loops (for and while) 1

36

Assignment 4 COMPLETE ALL ASSIGNEMENTS IN THE ORDER LISTED Lab 4 Phase 1

• Counting Characters – CharCount Chapter 3 Programming Projects (pp. 187 – 188)

• 3.1, 3.4, 3.5, 3.7, 3.8, 3.12 a, b, 3.13 Lab 4 Phase 2

• Finding Maximum & Minimum Values – MaxMin Chapter 3 Exercises Continued

• numbers 23 – 27 Chapter 3 Exercises from textbook pp. 189

• 3.15 – 3.17 (Ex. Credit) Lab 5

• A Rainbow Applet – Rainbow (Ex. Credit)