Você está na página 1de 40

1

Chapter 4 - Control Structures: Part 1


Outline
4.1 Introduction
4.2 Algorithms
4.3 Pseudocode
4.4 Control Structures
4.5 if Single-Selection Statement
4.6 if else Selection Statement
4.7 while Repetition Statement
4.8 Formulating Algorithms: Case Study 1 (Counter-
Controlled Repetition)
4.9 Formulating Algorithms with Top-Down, Stepwise
Refinement: Case Study 2 (Sentinel-Controlled Repetition)
4.10 Formulating Algorithms with Top-Down, Stepwise
Refinement: Case Study 3 (Nested Control Structures)
4.11 Compound Assignment Operators
4.12 Increment and Decrement Operators
4.13 Primitive Types
4.14 (Optional Case Study) Thinking About Objects: Identifying
Class Attributes
 2003 Prentice Hall, Inc. All rights reserved.
2

4.1 Introduction

• We learn about Control Structures


– Structured-programming principle
– Control structures help build and manipulate objects
(Chapter 8)

 2003 Prentice Hall, Inc. All rights reserved.


3

4.2 Algorithms

• Algorithm
– Series of actions in specific order
• The actions executed
• The order in which actions execute
• Program control
– Specifying the order in which actions execute
• Control structures help specify this order

 2003 Prentice Hall, Inc. All rights reserved.


4

4.3 Pseudocode

• Pseudocode
– Informal language for developing algorithms
– Not executed on computers
– Helps developers “think out” algorithms

 2003 Prentice Hall, Inc. All rights reserved.


5

4.4 Control Structures

• Sequential execution
– Program statements execute one after the other
• Transfer of control
– Three control statements can specify order of statements
• Sequence structure
• Selection structure
• Repetition structure
• Activity diagram
– Models the workflow
• Action-state symbols
• Transition arrows

 2003 Prentice Hall, Inc. All rights reserved.


6

Corresponding Java statement:


add grade to total total = total + grade;

Corresponding Java statement:


add 1 to counter counter = counter + 1;

Fig 4.1 Sequence structure activity diagram.

 2003 Prentice Hall, Inc. All rights reserved.


7

Ja va Keyw ord s
abstract assert boolean break byte
case catch char class continue
default do double else extends
final finally float for if
implements import instanceof int interface
long native new package private
protected public return short static
strictfp super switch synchronized this
throw throws transient try void
volatile while
Keywords that are reserved, but not currently used
const goto
Fig. 4.2 Ja va keyw o rd s.

 2003 Prentice Hall, Inc. All rights reserved.


8

4.4 Control Structures

• Java has a sequence structure “built-in”


• Java provides three selection structures
– if
– If…else
– switch

• Java provides three repetition structures


– while
– do…while
– do

• Each of these words is a Java keyword

 2003 Prentice Hall, Inc. All rights reserved.


9

4.5 if Single-Selection Statement

• Single-entry/single-exit control structure


• Perform action only when condition is true
• Action/decision programming model

 2003 Prentice Hall, Inc. All rights reserved.


10

[grade >= 60]


print “Passed”

[grade < 60]

Fig 4.3 if single-selections statement activity diagram.

 2003 Prentice Hall, Inc. All rights reserved.


11

4.6 if…else Selection Statement

• Perform action only when condition is true


• Perform different specified action when condition
is false
• Conditional operator (?:)
• Nested if…else selection structures

 2003 Prentice Hall, Inc. All rights reserved.


12

[grade < 60] [grade >= 60]


print “Failed” print “Passed”

Fig 4.4 if…else double-selections statement activity diagram.

 2003 Prentice Hall, Inc. All rights reserved.


13

4.7 while Repetition Statement

• Repeat action while condition remains true

 2003 Prentice Hall, Inc. All rights reserved.


14

merge

decision
[product <= 1000]
double product value

[product > 1000]


Corresponding Java statement:
product = 2 * product;

Fig 4.5 while repetition statement activity diagram.

 2003 Prentice Hall, Inc. All rights reserved.


15
4.8 Formulating Algorithms: Case Study 1
(Counter-Controlled Repetition)
• Counter
– Variable that controls number of times set of statements
executes
• Average1.java calculates grade averages
– uses counters to control repetition

 2003 Prentice Hall, Inc. All rights reserved.


16

Set total to zero


Set grade counter to one

While grade counter is less than or equal to ten


Input the next grade
Add the grade into the total
Add one to the grade counter

Set the class average to the total divided by ten


Print the class average

Fig. 4.6 Pseudocode algorithm that uses counter-


controlled repetition to solve the class-average
problem.

 2003 Prentice Hall, Inc. All rights reserved.


17
1 // Fig. 4.7: Average1.java Outline
2 // Class-average program with counter-controlled repetition.
3 import javax.swing.JOptionPane;
4 Average1.java
5 public class Average1 { Declare variables;
6 gradeCounter is the counter
7 public static void main( String args[] ) gradeCounter
8 {
9 int total; // sum of grades input by user Line 21
10 int gradeCounter; // number of grade to be entered next
11 int grade; // grade value
12 int average; // average of grades Continue looping
as long as
13 gradeCounter is less than or
14 String gradeString; // grade typed by user equal to 10
15
16 // initialization phase
17 total = 0; // initialize total
18 gradeCounter = 1; // initialize loop counter
19
20 // processing phase
21 while ( gradeCounter <= 10 ) { // loop 10 times
22
23 // prompt for input and read grade from user
24 gradeString = JOptionPane.showInputDialog(
25 "Enter integer grade: " );
26
27 // convert gradeString to int
28 grade = Integer.parseInt( gradeString );
29

 2003 Prentice Hall, Inc.


All rights reserved.
18
30 total = total + grade; // add grade to total Outline
31 gradeCounter = gradeCounter + 1; // increment counter
32
33 } // end while Average1.java
34
35 // termination phase
36 average = total / 10; // integer division
37
38 // display average of exam grades
39 JOptionPane.showMessageDialog( null, "Class average is " + average,
40 "Class Average", JOptionPane.INFORMATION_MESSAGE );
41
42 System.exit( 0 ); // terminate the program
43
44 } // end main
45
46 } // end class Average1

 2003 Prentice Hall, Inc.


All rights reserved.
19
Outline

Average1.java

 2003 Prentice Hall, Inc.


All rights reserved.
4.9 Formulating Algorithms with Top- 20

Down, Stepwise Refinement: Case Study 2


(Sentinel-Controlled Repetition)
• Sentinel value
– Used to indicated the end of data entry
• Average2.java has indefinite repetition
– User enters sentinel value (-1) to end repetition

 2003 Prentice Hall, Inc. All rights reserved.


21

Initialize total to zero


Initialize counter to zero

Input the first grade (possibly the sentinel)

While the user has not as yet entered the sentinel


Add this grade into the running total
Add one to the grade counter
Input the next grade (possibly the sentinel)

If the counter is not equal to zero


Set the average to the total divided by the counter
Print the average
else
Print “No grades were entered”

Fig. 4.8 Class-average problem pseudocode


algorithm with sentinel-controlled repetition.

 2003 Prentice Hall, Inc. All rights reserved.


22
1 // Fig. 4.9: Average2.java Outline
2 // Class-average program with sentinel-controlled repetition.
3 import java.text.DecimalFormat; // class to format numbers
4 import javax.swing.JOptionPane; Average2.java
5
6 public class Average2 {
7
8 public static void main( String args[] )
9 {
10 int total; // sum of grades
11 int gradeCounter; // number of grades entered
12 int grade; // grade value
13
14 double average; // number with decimal point for average
15
16 String gradeString; // grade typed by user
17
18 // initialization phase
19 total = 0; // initialize total
20 gradeCounter = 0; // initialize loop counter
21
22 // processing phase
23 // get first grade from user
24 gradeString = JOptionPane.showInputDialog(
25 "Enter Integer Grade or -1 to Quit:" );
26
27 // convert gradeString to int
28 grade = Integer.parseInt( gradeString );
29

 2003 Prentice Hall, Inc.


All rights reserved.
23
30 // loop until sentinel value read from user Outline
31 while ( grade != -1 ) {
32 total = total + grade; //loop gradegradeCounter
add until to total
33 gradeCounter = gradeCounter + 1; // equals sentinel
increment value (-1)
counter Average2.java
34
35 // get next grade from user
36 gradeString = JOptionPane.showInputDialog( Line 31
37 "Enter Integer Grade or -1 to Quit:" );
38 Line 45
39 // convert gradeString to int Format numbers to nearest
40 grade = Integer.parseInt( gradeString ); hundredth
41
42 } // end while
43
44 // termination phase
45 DecimalFormat twoDigits = new DecimalFormat( "0.00" );
46
47 // if user entered at least one grade...
48 if ( gradeCounter != 0 ) {
49
50 // calculate average of all grades entered
51 average = (double) total / gradeCounter;
52
53 // display average with two digits of precision
54 JOptionPane.showMessageDialog( null,
55 "Class average is " + twoDigits.format( average ),
56 "Class Average", JOptionPane.INFORMATION_MESSAGE );
57
58 } // end if part of if...else
59

 2003 Prentice Hall, Inc.


All rights reserved.
24
60 else // if no grades entered, output appropriate message Outline
61 JOptionPane.showMessageDialog( null, "No grades were entered",
62 "Class Average", JOptionPane.INFORMATION_MESSAGE );
63 Average2.java
64 System.exit( 0 ); // terminate application
65
66 } // end main
67
68 } // end class Average2

 2003 Prentice Hall, Inc.


All rights reserved.
4.10 Formulating Algorithms with Top- 25

Down, Stepwise Refinement: Case Study 3


(Nested Control Structures)
• Nested control structures

 2003 Prentice Hall, Inc. All rights reserved.


26

Initialize passes to zero


Initialize failures to zero
Initialize student to one
While student counter is less than or equal to ten
Input the next exam result
If the student passed
Add one to passes
else
Add one to failures
Add one to student counter
Print the number of passes
Print the number of failures
If more than eight students passed
Print “Raise tuition”

Fig 4.10 Pseudocode for examination-results problem.

 2003 Prentice Hall, Inc. All rights reserved.


27
1 // Fig. 4.11: Analysis.java Outline
2 // Analysis of examination results. Loop until student counter is
3 import javax.swing.JOptionPane; greater than 10
4 Analysis.java
5 public class Analysis {
6
7 public static void main( String args[] ) Line 19
8 {
9 // initializing variables in declarations Line 29
10 int passes = 0; // number of passes
11 int failures = 0; // number of failures
12 int studentCounter = 1; // student counter
13 int result; // one exam result
14
15 String input; // user-entered Nested
value control structure
16 String output; // output string
17
18 // process 10 students using counter-controlled loop
19 while ( studentCounter <= 10 ) {
20
21 // prompt user for input and obtain value from user
22 input = JOptionPane.showInputDialog(
23 "Enter result (1 = pass, 2 = fail)" );
24
25 // convert result to int
26 result = Integer.parseInt( input );
27
28 // if result 1, increment passes; if...else nested in while
29 if ( result == 1 )
30 passes = passes + 1;

 2003 Prentice Hall, Inc.


All rights reserved.
28
31 Outline
32 else // if result not 1, increment failures
33 failures = failures + 1;
34 Analysis.java
35 // increment studentCounter so loop eventually terminates
36 studentCounter = studentCounter + 1;
37
38 } // end while
39
40 // termination phase; prepare and display results
41 output = "Passed: " + passes + "\nFailed: " + failures;
42
43 // determine whether more than 8 students passed
44 if ( passes > 8 )
45 output = output + "\nRaise Tuition";
46
47 JOptionPane.showMessageDialog( null, output,
48 "Analysis of Examination Results",
49 JOptionPane.INFORMATION_MESSAGE );
50
51 System.exit( 0 ); // terminate application
52
53 } // end main
54
55 } // end class Analysis

 2003 Prentice Hall, Inc.


All rights reserved.
29

4.11 Compound Assignment Operators

• Assignment Operators
– Abbreviate assignment expressions
– Any statement of form
• variable = variable operator expression;
– Can be written as
• variable operator= expression;
– e.g., addition assignment operator +=
•c = c + 3
– can be written as
• c += 3

 2003 Prentice Hall, Inc. All rights reserved.


30

Assig nm ent Sa m p le Exp la na tion Assig ns


op era tor exp ression
Assume: int c = 3,
d = 5, e = 4, f
= 6, g = 12;
+= c += 7 c = c + 7 10 to c
-= d -= 4 d = d - 4 1 to d
*= e *= 5 e = e * 5 20 to e
/= f /= 3 f = f / 3 2 to f
%= g %= 9 g = g % 9 3 to g
Fig. 4.12 Arithm etic a ssig nm ent op era to rs.

 2003 Prentice Hall, Inc. All rights reserved.


31

4.12 Increment and Decrement Operators

• Unary increment operator (++)


– Increment variable’s value by 1
• Unary decrement operator (--)
– Decrement variable’s value by 1
• Preincrement / predecrement operator
• Post-increment / post-decrement operator

 2003 Prentice Hall, Inc. All rights reserved.


32

Op era tor Ca lled Sa m p le Exp la na tion


exp ression
++ preincrement ++a Increment a by 1, then use the new
value of a in the expression in
which a resides.
++ postincrement a++ Use the current value of a in the
expression in which a resides, then
increment a by 1.
-- predecrement --b Decrement b by 1, then use the
new value of b in the expression in
which b resides.
-- postdecrement b-- Use the current value of b in the
expression in which b resides, then
decrement b by 1.
Fig. 4.13 The inc rem ent a nd d ec re m ent op era tors.

 2003 Prentice Hall, Inc. All rights reserved.


1 // Fig. 4.14: Increment.java 33
2 // Preincrementing and postincrementing operators. Outline
3
4 public class Increment { Line 13 postincrements c
5 Increment.java
6 public static void main( String args[] )
7 {
8 int c;
Line 13 postincrement
9
10 // demonstrate postincrement
11 c = 5; // assign 5 to c Line 21 preincrement
12 System.out.println( c ); // print 5 Line 21 preincrements c
13 System.out.println( c++ ); // print 5 then postincrement
14 System.out.println( c ); // print 6
15
16 System.out.println(); // skip a line
17
18 // demonstrate preincrement
19 c = 5; // assign 5 to c
20 System.out.println( c ); // print 5
21 System.out.println( ++c ); // preincrement then print 6
22 System.out.println( c ); // print 6
23
24 } // end main
25
26 } // end class Increment
5
5
6

5
6
6
 2003 Prentice Hall, Inc.
All rights reserved.
34

Op era tors Assoc ia tivity Typ e


++ -- right to left unary postfix
++ -- + - (type) right to left unary
* / % left to right multiplicative
+ - left to right additive
< <= > >= left to right relational
== != left to right equality
?: right to left conditional
= += -= *= /= %= right to left assignment
Fig. 4.15 Prec ed enc e a nd a ssoc ia tivity of the op era tors d isc ussed so fa r.

 2003 Prentice Hall, Inc. All rights reserved.


35

4.13 Primitive Types

• Primitive types
– “building blocks” for more complicated types
• Java is strongly typed
– All variables in a Java program must have a type
• Java primitive types
– portable across computer platforms that support Java

 2003 Prentice Hall, Inc. All rights reserved.


36

Typ e Size in b its Va lues Sta nd a rd


boolean true or false
[Note: The representation of a boolean is
specific to the Java Virtual Machine on each
computer platform.]
char 16 '\u0000' to '\uFFFF' (ISO Unicode character set)
(0 to 65535)
byte 8 –128 to +127
(–27 to 27 – 1)
short 16 –32,768 to +32,767
(–215 to 215 – 1)
int 32 –2,147,483,648 to +2,147,483,647
(–231 to 231 – 1)
long 64 –9,223,372,036,854,775,808 to
+9,223,372,036,854,775,807
(–263 to 263 – 1)
float 32 Negative range: (IEEE 754 floating point)
–3.4028234663852886E+38 to
–1.40129846432481707e–45
Positive range:
1.40129846432481707e–45 to
3.4028234663852886E+38
double 64 Negative range: (IEEE 754 floating point)
–1.7976931348623157E+308 to
–4.94065645841246544e–324
Positive range:
4.94065645841246544e–324 to
1.7976931348623157E+308
Fig. 4.16 The Ja va p rim itive typ es.

 2003 Prentice Hall, Inc. All rights reserved.


37
4.14 (Optional Case Study) Thinking About
Objects: Identifying Class Attributes
• Classes have attributes (data)
– Implemented in Java programs as variables
– Attributes of real-world objects
• Radio (object)
– Station setting, volume setting, AM or FM (attributes)
• Identify attributes
– Look for descriptive words and phrases in problem statement
– Each identified word and phrase is a candidate attribute
• e.g., “the elevator is moving”
– “is moving” corresponds to boolean attribute moving
• e.g., “the elevator takes five seconds to travel between floors”
– corresponds to int attribute travelTime
• int travelTime = 5; (in Java)
 2003 Prentice Hall, Inc. All rights reserved.
38

Cla ss Desc rip tive word s a nd p hra ses


ElevatorShaft [no descriptive words or phrases]
Elevator moving
summoned
current floor
destination floor
capacity of only one person
five seconds to travel between floors
Person unique
waiting / moving
current floor
Floor first or second; capacity for only one person
FloorButton pressed / reset
ElevatorButton pressed / reset
FloorDoor door closed / door open
ElevatorDoor door closed / door open
Bell [no descriptive words or phrases]
Light turned on / turned off
Fig. 4.17 Desc rip tive word s a nd p hra ses from p rob lem sta tem ent.

 2003 Prentice Hall, Inc. All rights reserved.


39
4.14 (Optional Case Study) Thinking About
Objects: Identifying Class Attributes (Cont.)
• UML class diagram
– Class attributes are place in the middle compartment
– Attributes are written language independently
• e.g., attribute open of class ElevatorDoor
– open : Boolean = false
• May be coded in Java as
– boolean open = false;

 2003 Prentice Hall, Inc. All rights reserved.


40

ElevatorShaft ElevatorDoor Light


open : Boolean = false lightOn : Boolean = false

Person Floor
Bell
ID : Integer floorNumber : Integer
moving : Boolean = true capacity : Integer = 1
currentFloor : Integer

ElevatorButton FloorDoor
Elevator
pressed : Boolean = false open : Boolean = false
moving : Boolean = false
summoned : Boolean = false
currentFloor : Integer = 1
destinationFloor : Integer = 2
capacity : Integer = 1 FloorButton
travelTime : Integer = 5
pressed : Boolean = false

Fig. 4.18 Classes with attributes.

 2003 Prentice Hall, Inc. All rights reserved.

Você também pode gostar