Title: Control Structures
1Control Structures
Corresponds with Chapters 3 and 4
2Control Statements
- Decisions (selections)
- if statements
- switch statements
- Iterations (repetitions)
- for loops (enumerated)
- while loops (top-tested)
- do while loops (bottom-tested)
3if Statement
- if (booleanExpression)
- single statement
Remember to indent the subordinate statement
4if Statement
if (booleanExpression) statement1 statement
2 statementn
5if flowchart
6Example
- if (i gt 0 i lt 10)
- System.out.println("i is an
- integer between 0 and 10")
7The if...else Statement
- if (booleanExpression)
-
- statement(s)-for-the-true-case
-
- else
-
- statement(s)-for-the-false-case
-
Note blocks with braces are necessary when there
are multiple subordinate statements. They are
optional when there is a single subordinate
statement.
8if-- else flowchart
9if...else Example
The if branch statement must be in a block
because there are two of them.
- if (radius gt 0)
-
- area radiusradiusPI
- System.out.println("The area for the "
- "circle of radius " radius " is"
- area)
-
- else
- System.out.println("Negative input")
There is only one else-branch statement. It does
not need to be in a block, but you can if you
want.
10Nested if Statements
11FlowChart for if else if -- else
12Nesting an if - else inside the if portion
- if (boolean expression1)
- if (boolean expression2)
- statement1
- else
- statement2
The nested if-else. NOTE an else is always
associated with the most recent if. This else is
the result of boolean expression2, not boolean
expression1.
13FlowChart for if with nested if -- else
14Outer if-else with a nested if (no inner else)
- if (boolean expression1)
- if (boolean expression2)
- statement1
-
- else
- statement2
The nested if. NOTE here, because of the
braces, the else is associated with the if for
boolean expression 1.
15FlowChart for if -elsewith nested if
16Shortcut if Statements
- if (x gt 0)
- y 1
- else
- y -1
- is equivalent to
- y (x gt 0) ? 1 -1
if
else
Returned if true
Returned if false
17switch Statements
- switch (switch-expression)
-
- case value1
- statement(s) 1
- break
- case value2
- statement(s) 2
- break
-
- case valueN interestRate 9.0
- statement(s) N
- break
- default
- statement(s) for default
No break needed for last condition
18switch Statements
- switch (status)
- case 0 compute taxes for single filers
- break
- case 1 compute taxes for married file
jointly - break
- case 2 compute taxes for married file
separately - break
- case 3 compute taxes for head of household
- break
- default System.out.println("Errors invalid
status") - System.exit(0)
19switch Statement Flow Chart
20Equivalent if statement
- if (status 0)
- compute tax for single filers
- else if (status 1)
- compute tax for married filing jointly
- else if (status 2)
- compute tax for married filing separately
- else if (status 3)
- compute tax for head of household
- else
- System.out.println(
- ("Errors invalid status")
- System.exit(0)
-
21Exercise
- if (a1)
- x 6
- else if (a 2)
- x 10
- else if (a 3)
- x 16
- else if (a 4)
- x 34
Convert this if statement into a switch statement
22while Loops
- while (continue-condition)
-
- // loop-body
-
Top-tested loop Test before performing statements
of loop Loop body may never execute
23Listing 4.4 p109 User Decides when to quit
Initial data input before the loop
Subsequent data inputs toward the end of the
loop body
24Do-while Loops
- do
-
- //loop body
- while (continue-condition)
Bottom-tested loop Perform statements of loop
before testing Always enter the loop body at
least once
25Listing 4.5 a Do-While Loop
Test is at the bottom
26for Loops
1) assignment statement
- for (control variable initialization
- continue-test adjustment-statement)
-
- //loop body
2) boolean expression
3) assignment statement
- Set initial value for loop counter (only once,
before looping starts) - Test loop counter (also called control variable)
to see if it is less than the max loop allowed
(before executing loop body) - Increment loop counter (after executing loop
body) (usually an increment operator).
27for Loop Flow Chart
28for Loop Example
- int i
- for (i 0 ilt100 i)
-
- System.out.println(Hi. i is i)
Here, the loop counter variable (called i ) is
available for use outside the loop.
29Alternative SyntaxDeclare Loop Counter in
Initialization
- for (int i 0 ilt100 i)
-
- System.out.println(Hi. i is i)
Here, the loop counter variable (called i ) is
available for use only within the loop.
30The Nested for Loop
for (int i0 iltouterLoopLimiti) outer loop
statement(s) for (int j0jltinnerLoopLimitj)
inner loop statement(s) outer loop
statement(s)
Body of outer loop will execute outerLoopLimit
times
Body of inner loop will execute innerLoopLimit
times for each time the outer loop body executes.
? Total innerLoopLimit outerLoopLimit times!
31The Nested for Loop -- Flowchart
Statements preceding loop
No
Statements following loop
Yes
No
Yes
32Nested Loop Example(my example)
33Example Program Run
34A couple points about the example
35Reminders about packages from the example
The class NestedForLoop is in the package called
controlStructurePackage. Therefore, there is a
file called NestedForLoop.class in a folder
called controlStructurePackage.
36Reminders about packages from the example
In order to use a class from outside your own
package, you must import the package that the
class is contained in. Here, we import the
JOptionPane class from the javax.swing package.
37Another Example -- listing 4.6 p115
38Listing 4.6
39Listing 4.6
An if statement nested inside a for loop, which
is itself nested in another for loop.
40Listing 4.6
At the end, the string is displayed in the output
screen
41Listing 4.6 program analysis
Question 1 how many times will outer loop body
execute?
Question 2 how many times will inner loop body
execute?
Question 3 how many times will IF branch execute?
42The break Keyword
break can be used to terminate the loop based on
decisions inside the loop body.
43Listing 4.11 Using the break keyword
Question how many times will this loop body
execute? What will be the value in sum?
44The continue Keyword
continue can be used to branch to the top of the
loop (skipping statements in loop body) based on
decisions inside the loop body.
45Listing 4.12Using the continue keyword
Question 1 how many times will this loop body
execute?
Question 2 how many times sum number execute?
46Typical Nested Structure Decision within a
Loop(menu-driven as first statement in loop)
47A Java Implementation
This implementation nests a switch inside a while
loop.
Exercise Do the same thing by nesting an if
statement inside a do-while loop.
48Other Useful Examples
- Listing 4.8 finding the greatest common divisor
(while loop with nested if statement) - Listing 4.9 finding a sales amount (do-while
loop with nested if - else if - else statement) - Listing 4.10 printing a pyramid (outer for loop
with three nested for loops inside it) - Listing 4.14 finding prime numbers (outer while
loop with nested for loop with nested if
statement)