SlideShare a Scribd company logo
1 of 58
 2003 Prentice Hall, Inc. All rights reserved.
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.11 Compound Assignment Operators
4.12 Increment and Decrement Operators
4.13 Primitive Types
Chapter 4 - Control Structures: Part 1
 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 structures can specify order of statements
• Sequence structure (default)
• Selection structure
• Repetition structure
• Activity diagram
– Models the workflow (flowchart)
• Action-state symbols
• Transition arrows
 2003 Prentice Hall, Inc. All rights reserved.
6
Fig 4.1 Sequence structure activity diagram.
add grade to total
add 1 to counter
Corresponding Java statement:
total = total + grade;
Corresponding Java statement:
counter = counter + 1;
 2003 Prentice Hall, Inc. All rights reserved.
7
Java Keywords
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 Java keywords.
 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
– for
• 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
Fig 4.3 if single-selections statement activity diagram.
[grade >= 60]
[grade < 60]
print “Passed”
if (studentGrade >= 60)
{
System.out.println (“Passed”);
}
 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
Fig 4.4 if…else double-selections statement activity diagram.
[grade >= 60]
[grade < 60]
print “Failed” print “Passed”
if (studentGrade >= 60)
{
System.out.println (“Passed”);
}
else
{
System.out.println (“Failed”);
}
 2003 Prentice Hall, Inc. All rights reserved.
13
System.out.println (studentGrade >= 60 ?
“Passed”: “Failed”);
Conditional Operator (?:)
 2003 Prentice Hall, Inc. All rights reserved.
14
Nested if…else selection structures
if (studentGrade >= 90)
System.out.println (“A”);
else if (studentGrade >= 80)
System.out.println (“B”);
else if (studentGrade >= 70)
System.out.println (“C”);
else if (studentGrade >= 60)
System.out.println (“D”);
else
System.out.println (“F”);
 2003 Prentice Hall, Inc. All rights reserved.
15
4.7 while Repetition Statement
• Repeat action while condition remains true
• Condition should eventually become false (or
never-ending loop)
 2003 Prentice Hall, Inc. All rights reserved.
16
Fig 4.5 while repetition statement activity diagram.
[product <= 1000]
[product > 1000]
double product value
merge
decision
Corresponding Java statement:
product = 2 * product;
while (product <= 1000)
{
product = 2 * product;
}
 2003 Prentice Hall, Inc. All rights reserved.
17
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.
18
Assignment
operator
Sample
expression
Explanation Assigns
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 Arithmetic assignment operators.
 2003 Prentice Hall, Inc. All rights reserved.
19
4.12 Increment and Decrement Operators
• Unary increment operator (++)
– Increment variable’s value by 1
• Unary decrement operator (--)
– Decrement variable’s value by 1
• C++ is a language “one better than” C
• Preincrement / predecrement operator
• Postincrement / postdecrement operator
 2003 Prentice Hall, Inc. All rights reserved.
20
Operator Called Sample
expression
Explanation
++ 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 increment and decrement operators.
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
21
Increment.java
Line 13 postincrement
Line 21 preincrement
1 // Fig. 4.14: Increment.java
2 // Preincrementing and postincrementing operators.
3
4 public class Increment {
5
6 public static void main( String args[] )
7 {
8 int c;
9
10 // demonstrate postincrement
11 c = 5; // assign 5 to c
12 System.out.println( c ); // print 5
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
Line 13 postincrements c
Line 21 preincrements c
 2003 Prentice Hall, Inc. All rights reserved.
22
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.
23
Type Size in bits Values Standard
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'
(0 to 65535)
(ISO Unicode character set)
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:
–3.4028234663852886E+38 to
–1.40129846432481707e–45
Positive range:
1.40129846432481707e–45 to
3.4028234663852886E+38
(IEEE 754 floating point)
double 64 Negative range:
–1.7976931348623157E+308 to
–4.94065645841246544e–324
Positive range:
4.94065645841246544e–324 to
1.7976931348623157E+308
(IEEE 754 floating point)
Fig. 4.16The Java primitive types.
 2003 Prentice Hall, Inc. All rights reserved.
24
Chapter 5 – Control Structures: Part 2
Outline
5.1 Introduction
5.2 Essentials of Counter-Controlled Repetition
5.3 for Repetition Statement
5.4 Examples Using the for Statement
5.5 do…while Repetition Statement
5.6 switch Multiple-Selection Statement
5.7 break and continue Statements
5.8 Labeled break and continue Statements
5.9 Logical Operators
 2003 Prentice Hall, Inc. All rights reserved.
25
5.2 Essentials of Counter-Controlled
Repetition
• Counter-controlled repetition requires:
– Control variable (loop counter)
– Initial value of the control variable
– Increment/decrement of control variable through each loop
– Condition that tests for the final value of the control variable
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
26
WhileCounter.ja
va
Line 14
Line 16
Line 18
1 // Fig. 5.1: WhileCounter.java
2 // Counter-controlled repetition.
3 import java.awt.Graphics;
4
5 import javax.swing.JApplet;
6
7 public class WhileCounter extends JApplet {
8
9 // draw lines on applet’s background
10 public void paint( Graphics g )
11 {
12 super.paint( g ); // call paint method inherited from JApplet
13
14 int counter = 1; // initialization
15
16 while ( counter <= 10 ) { // repetition condition
17 g.drawLine( 10, 10, 250, counter * 10 );
18 ++counter; // increment
19
20 } // end while
21
22 } // end method paint
23
24 } // end class WhileCounter
Increment for counter
Condition tests for
counter’s final value
Control-variable name is counter
Control-variable initial value is 1
 2003 Prentice Hall, Inc. All rights reserved.
27
5.3 for Repetition Statement
• Handles counter-controlled-repetition details
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
28
ForCounter.java
Line 16
int counter =
1;
Line 16
counter <= 10;
Line 16
counter++;
1 // Fig. 5.2: ForCounter.java
2 // Counter-controlled repetition with the for statement.
3 import java.awt.Graphics;
4
5 import javax.swing.JApplet;
6
7 public class ForCounter extends JApplet {
8
9 // draw lines on applet’s background
10 public void paint( Graphics g )
11 {
12 super.paint( g ); // call paint method inherited from JApplet
13
14 // for statement header includes initialization,
15 // repetition condition and increment
16 for ( int counter = 1; counter <= 10; counter++ )
17 g.drawLine( 10, 10, 250, counter * 10 );
18
19 } // end method paint
20
21 } // end class ForCounter
Condition tests for
counter’s final value
Control-variable name is counter
Control-variable initial value is 1
Increment for counter
 2003 Prentice Hall, Inc. All rights reserved.
29
Fig. 5.3 for statement header components.
for ( int counter = 1; counter <= 10; counter++ )
Increment of control
variable
Control
variable
Final value of control
variable for which the
condition is true
for
keyword
Loop-continuation
condition
Initial value of
control variable
Required
semicolon
separator
Required
semicolon
separator
 2003 Prentice Hall, Inc. All rights reserved.
30
5.3 for Repetition Structure (cont.)
for ( initialization; loopContinuationCondition; increment )
statement;
can usually be rewritten as:
initialization;
while ( loopContinuationCondition ) {
statement;
increment;
}
init, condition, increment all optional
Condition assumed to be true (unending loop) if omitted
 2003 Prentice Hall, Inc. All rights reserved.
31
Fig. 5.4 for statement activity diagram.
[counter <= 10]
[counter > 10]
int counter = 1
counter++
Determine whether
the final value of
control variable has
been reached
g.drawLine(
10, 10, 250,
counter * 10 );
Establish initial value of
control variable
Draw a line on the
applet
Increment the
control variable
 2003 Prentice Hall, Inc. All rights reserved.
32
5.4 Examples Using the for Statement
• Varying control variable in for statement
– Vary control variable from 1 to 100 in increments of 1
• for ( int i = 1; i <= 100; i++ )
– Vary control variable from 100 to 1 in increments of –1
• for ( int i = 100; i >= 1; i-- )
– Vary control variable from 7 to 77 in increments of 7
• for ( int i = 7; i <= 77; i += 7 )
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
33
Sum.java
Line 12
1 // Fig. 5.5: Sum.java
2 // Summing integers with the for statement.
3 import javax.swing.JOptionPane;
4
5 public class Sum {
6
7 public static void main( String args[] )
8 {
9 int total = 0; // initialize sum
10
11 // total even integers from 2 through 100
12 for ( int number = 2; number <= 100; number += 2 )
13 total += number;
14
15 // display results
16 JOptionPane.showMessageDialog( null, "The sum is " + total,
17 "Total Even Integers from 2 to 100",
18 JOptionPane.INFORMATION_MESSAGE );
19
20 System.exit( 0 ); // terminate application
21
22 } // end main
23
24 } // end class Sum
increment number by 2 each iteration
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
34
Interest.java
Lines 13-15
Line 18
Line 19
1 // Fig. 5.6: Interest.java
2 // Calculating compound interest.
3 import java.text.NumberFormat; // class for numeric formatting
4 import java.util.Locale; // class for country-specific information
5
6 import javax.swing.JOptionPane;
7 import javax.swing.JTextArea;
8
9 public class Interest {
10
11 public static void main( String args[] )
12 {
13 double amount; // amount on deposit at end of each year
14 double principal = 1000.0; // initial amount before interest
15 double rate = 0.05; // interest rate
16
17 // create NumberFormat for currency in US dollar format
18 NumberFormat moneyFormat =
19 NumberFormat.getCurrencyInstance( Locale.US );
20
21 // create JTextArea to display output
22 JTextArea outputTextArea = new JTextArea();
23
24 // set first line of text in outputTextArea
25 outputTextArea.setText( "YeartAmount on depositn" );
26
Java treats floating-points as
type double
NumberFormat can format
numeric values as currency
Display currency values with
dollar sign ($)
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
35
Interest.java
Lines 28-31
27 // calculate amount on deposit for each of ten years
28 for ( int year = 1; year <= 10; year++ ) {
29
30 // calculate new amount for specified year
31 amount = principal * Math.pow( 1.0 + rate, year );
32
33 // append one line of text to outputTextArea
34 outputTextArea.append( year + "t" +
35 moneyFormat.format( amount ) + "n" );
36
37 } // end for
38
39 // display results
40 JOptionPane.showMessageDialog( null, outputTextArea,
41 "Compound Interest", JOptionPane.INFORMATION_MESSAGE );
42
43 System.exit( 0 ); // terminate the application
44
45 } // end main
46
47 } // end class Interest
Calculate amount with for
statement
 2003 Prentice Hall, Inc. All rights reserved.
36
5.5 do…while Repetition Statement
• do…while structure
– Similar to while structure
– Tests loop-continuation after performing body of loop
• i.e., loop body always executes at least once
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
37
DoWhileTest.jav
a
Lines 16-20
1 // Fig. 5.7: DoWhileTest.java
2 // Using the do...while statement.
3 import java.awt.Graphics;
4
5 import javax.swing.JApplet;
6
7 public class DoWhileTest extends JApplet {
8
9 // draw lines on applet
10 public void paint( Graphics g )
11 {
12 super.paint( g ); // call paint method inherited from JApplet
13
14 int counter = 1; // initialize counter
15
16 do {
17 g.drawOval( 110 - counter * 10, 110 - counter * 10,
18 counter * 20, counter * 20 );
19 ++counter;
20 } while ( counter <= 10 ); // end do...while
21
22 } // end method paint
23
24 } // end class DoWhileTest
Oval is drawn before testing
counter’s final value
 2003 Prentice Hall, Inc. All rights reserved.
38
Fig. 5.8 do…while repetition statement activity diagram.
action state
[true]
[false]
condition
 2003 Prentice Hall, Inc. All rights reserved.
39
5.6 switch Multiple-Selection Statement
• switch statement
– Used for multiple selections
– case followed by integer or character (case 10 or case ‘y’)
– Multiple cases (without code) indicate the same thing done
for each case
case 3:
case 5:
case 7:
x=y+z;
break;
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
40
SwitchTest.java
Lines 16-21:
Getting user’s input
1 // Fig. 5.9: SwitchTest.java
2 // Drawing lines, rectangles or ovals based on user input.
3 import java.awt.Graphics;
4
5 import javax.swing.*;
6
7 public class SwitchTest extends JApplet {
8 int choice; // user's choice of which shape to draw
9
10 // initialize applet by obtaining user's choice
11 public void init()
12 {
13 String input; // user's input
14
15 // obtain user's choice
16 input = JOptionPane.showInputDialog(
17 "Enter 1 to draw linesn" +
18 "Enter 2 to draw rectanglesn" +
19 "Enter 3 to draw ovalsn" );
20
21 choice = Integer.parseInt( input ); // convert input to int
22
23 } // end method init
24
25 // draw shapes on applet's background
26 public void paint( Graphics g )
27 {
28 super.paint( g ); // call paint method inherited from JApplet
29
30 for ( int i = 0; i < 10; i++ ) { // loop 10 times (0-9)
31
Get user’s input in JApplet
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
41
SwitchTest.java
Line 32:
controlling
expression
Line 32:
switch statement
Line 48
32 switch ( choice ) { // determine shape to draw
33
34 case 1: // draw a line
35 g.drawLine( 10, 10, 250, 10 + i * 10 );
36 break; // done processing case
37
38 case 2: // draw a rectangle
39 g.drawRect( 10 + i * 10, 10 + i * 10,
40 50 + i * 10, 50 + i * 10 );
41 break; // done processing case
42
43 case 3: // draw an oval
44 g.drawOval( 10 + i * 10, 10 + i * 10,
45 50 + i * 10, 50 + i * 10 );
46 break; // done processing case
47
48 default: // draw string indicating invalid value entered
49 g.drawString( "Invalid value entered",
50 10, 20 + i * 15 );
51
52 } // end switch
53
54 } // end for
55
56 } // end method paint
57
58 } // end class SwitchTest
default case for invalid entries
switch statement determines
which case label to execute,
depending on controlling expression
user input (choice) is
controlling expression
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
42
SwitchTest.java
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
43
SwitchTest.java
 2003 Prentice Hall, Inc. All rights reserved.
44
Fig. 5.10 switch multiple-selection statement activity diagram with break statements.
case a action(s) break
default action(s)
[true]
case b action(s) break
case z action(s) break
.
.
.
[false]
case a
[true]
[true]
case b
case z
[false]
[false]
 2003 Prentice Hall, Inc. All rights reserved.
45
5.7 break and continue Statements
• break/continue
– Alter flow of control
• break statement
– Causes immediate exit from control structure
• Used in while, for, do…while or switch statements
• Escape early from loop or skip remainder of switch
• continue statement
– Skips remaining statements in loop body
– Proceeds to next iteration
• Used in while, for or do…while statements
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
46
BreakTest.java
Line 12
Lines 14-15
1 // Fig. 5.11: BreakTest.java
2 // Terminating a loop with break.
3 import javax.swing.JOptionPane;
4
5 public class BreakTest {
6
7 public static void main( String args[] )
8 {
9 String output = "";
10 int count;
11
12 for ( count = 1; count <= 10; count++ ) { // loop 10 times
13
14 if ( count == 5 ) // if count is 5,
15 break; // terminate loop
16
17 output += count + " ";
18
19 } // end for
20
21 output += "nBroke out of loop at count = " + count;
22 JOptionPane.showMessageDialog( null, output );
23
24 System.exit( 0 ); // terminate application
25
26 } // end main
27
28 } // end class BreakTest
Loop 10 times
exit for structure (break)
when count equals 5
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
47
ContinueTest.ja
va
Line 11
Lines 13-14
1 // Fig. 5.12: ContinueTest.java
2 // Continuing with the next iteration of a loop.
3 import javax.swing.JOptionPane;
4
5 public class ContinueTest {
6
7 public static void main( String args[] )
8 {
9 String output = "";
10
11 for ( int count = 1; count <= 10; count++ ) { // loop 10 times
12
13 if ( count == 5 ) // if count is 5,
14 continue; // skip remaining code in loop
15
16 output += count + " ";
17
18 } // end for
19
20 output += "nUsed continue to skip printing 5";
21 JOptionPane.showMessageDialog( null, output );
22
23 System.exit( 0 ); // terminate application
24
25 } // end main
26
27 } // end class ContinueTest
Loop 10 times
Skip line 16 and proceed to
line 11 when count equals 5
 2003 Prentice Hall, Inc. All rights reserved.
48
5.8 Labeled break and continue
Statements
• Labeled block
– Set of statements enclosed by {}
– Preceded by a label
• Labeled break statement
– Exit from nested control structures
– Proceeds to end of specified labeled block
• Labeled continue statement
– Skips remaining statements in nested-loop body
– Proceeds to beginning of specified labeled block
– Controversial – disguised “goto” statement!
– Always a better way than labeled continue
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
49
BreakLabelTest.
java
Line 11
Line 14
Line 17
Lines 19-20
1 // Fig. 5.13: BreakLabelTest.java
2 // Labeled break statement.
3 import javax.swing.JOptionPane;
4
5 public class BreakLabelTest {
6
7 public static void main( String args[] )
8 {
9 String output = "";
10
11 stop: { // labeled block
12
13 // count 10 rows
14 for ( int row = 1; row <= 10; row++ ) {
15
16 // count 5 columns
17 for ( int column = 1; column <= 5 ; column++ ) {
18
19 if ( row == 5 ) // if row is 5,
20 break stop; // jump to end of stop block
21
22 output += "* ";
23
24 } // end inner for
25
26 output += "n";
27
28 } // end outer for
29
Loop 10 times
stop is the labeled block
Exit to line 35 (next slide)
Nested loop 5 times
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
50
BreakLabelTest.
java
30 // following line is skipped
31 output += "nLoops terminated normally";
32
33 } // end labeled block
34
35 JOptionPane.showMessageDialog( null, output,
36 "Testing break with a label",
37 JOptionPane.INFORMATION_MESSAGE );
38
39 System.exit( 0 ); // terminate application
40
41 } // end main
42
43 } // end class BreakLabelTest
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
51
ContinueLabelTe
st.java
Line 11
Line 14
Line 17
Lines 21-22
1 // Fig. 5.14: ContinueLabelTest.java
2 // Labeled continue statement.
3 import javax.swing.JOptionPane;
4
5 public class ContinueLabelTest {
6
7 public static void main( String args[] )
8 {
9 String output = "";
10
11 nextRow: // target label of continue statement
12
13 // count 5 rows
14 for ( int row = 1; row <= 5; row++ ) {
15 output += "n";
16
17 // count 10 columns per row
18 for ( int column = 1; column <= 10; column++ ) {
19
20 // if column greater than row, start next row
21 if ( column > row )
22 continue nextRow; // next iteration of labeled loop
23
24 output += "* ";
25
26 } // end inner for
27
28 } // end outer for
nextRow is the labeled block
Loop 5 times
Nested loop 10 times
continue to line 11 (nextRow)
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
52
ContinueLabelTe
st.java
29
30 JOptionPane.showMessageDialog( null, output,
31 "Testing continue with a label",
32 JOptionPane.INFORMATION_MESSAGE );
33
34 System.exit( 0 ); // terminate application
35
36 } // end main
37
38 } // end class ContinueLabelTest
 2003 Prentice Hall, Inc. All rights reserved.
53
5.9 Logical Operators
• Logical operators
– Allows for forming more complex conditions
– Combines simple conditions
• Java logical operators
– && (conditional AND) (short circuit)
– & (boolean logical AND)
– || (conditional OR) (short circuit)
– | (boolean logical OR)
– ^ (boolean logical exclusive OR)
– ! (logical NOT)
(project > 75 && exam>= 80)
 2003 Prentice Hall, Inc. All rights reserved.
54
expression1 expression2 expression1 &&
expression2
false false false
false true false
true false false
true true true
Fig. 5.15 && (conditional AND) operator truth table.
expression1 expression2 expression1 ||
expression2
false false false
false true true
true false true
true true true
Fig. 5.16 || (conditional OR) operator truth table.
 2003 Prentice Hall, Inc. All rights reserved.
55
expression1 expression2 expression1 ^
expression2
false false false
false true true
true false true
true true false
Fig. 5.17 ^ (boolean logical exclusive OR) operator truth table.
expression !expression
false true
true false
Fig. 5.18 ! (logical negation, or logical NOT) operator truth table.
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
56
LogicalOperator
s.java
Lines 16-20
Lines 23-27
1 // Fig. 5.19: LogicalOperators.java
2 // Logical operators.
3 import javax.swing.*;
4
5 public class LogicalOperators
6
7 public static void main( String args[] )
8 {
9 // create JTextArea to display results
10 JTextArea outputArea = new JTextArea( 17, 20 );
11
12 // attach JTextArea to a JScrollPane so user can scroll results
13 JScrollPane scroller = new JScrollPane( outputArea );
14
15 // create truth table for && (conditional AND) operator
16 String output = "Logical AND (&&)" +
17 "nfalse && false: " + ( false && false ) +
18 "nfalse && true: " + ( false && true ) +
19 "ntrue && false: " + ( true && false ) +
20 "ntrue && true: " + ( true && true );
21
22 // create truth table for || (conditional OR) operator
23 output += "nnLogical OR (||)" +
24 "nfalse || false: " + ( false || false ) +
25 "nfalse || true: " + ( false || true ) +
26 "ntrue || false: " + ( true || false ) +
27 "ntrue || true: " + ( true || true );
28
Conditional AND truth table
Conditional OR truth table
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
57
LogicalOperator
s.java
Lines 30-34
Lines 37-41
Lines 44-48
Lines 51-53
29 // create truth table for & (boolean logical AND) operator
30 output += "nnBoolean logical AND (&)" +
31 "nfalse & false: " + ( false & false ) +
32 "nfalse & true: " + ( false & true ) +
33 "ntrue & false: " + ( true & false ) +
34 "ntrue & true: " + ( true & true );
35
36 // create truth table for | (boolean logical inclusive OR) operator
37 output += "nnBoolean logical inclusive OR (|)" +
38 "nfalse | false: " + ( false | false ) +
39 "nfalse | true: " + ( false | true ) +
40 "ntrue | false: " + ( true | false ) +
41 "ntrue | true: " + ( true | true );
42
43 // create truth table for ^ (boolean logical exclusive OR) operator
44 output += "nnBoolean logical exclusive OR (^)" +
45 "nfalse ^ false: " + ( false ^ false ) +
46 "nfalse ^ true: " + ( false ^ true ) +
47 "ntrue ^ false: " + ( true ^ false ) +
48 "ntrue ^ true: " + ( true ^ true );
49
50 // create truth table for ! (logical negation) operator
51 output += "nnLogical NOT (!)" +
52 "n!false: " + ( !false ) +
53 "n!true: " + ( !true );
54
55 outputArea.setText( output ); // place results in JTextArea
56
Logical NOT truth table
Boolean logical exclusive
OR truth table
Boolean logical inclusive
OR truth table
Boolean logical AND
truth table
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
58
LogicalOperator
s.java
57 JOptionPane.showMessageDialog( null, scroller,
58 "Truth Tables", JOptionPane.INFORMATION_MESSAGE );
59
60 System.exit( 0 ); // terminate application
61
62 } // end main
63
64 } // end class LogicalOperators

More Related Content

Similar to Control structure

Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...
Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...
Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...WebStackAcademy
 
Unit 3 principles of programming language
Unit 3 principles of programming languageUnit 3 principles of programming language
Unit 3 principles of programming languageVasavi College of Engg
 
Esoft Metro Campus - Certificate in java basics
Esoft Metro Campus - Certificate in java basicsEsoft Metro Campus - Certificate in java basics
Esoft Metro Campus - Certificate in java basicsRasan Samarasinghe
 
02 Java Language And OOP PART II
02 Java Language And OOP PART II02 Java Language And OOP PART II
02 Java Language And OOP PART IIHari Christian
 
9781439035665 ppt ch05
9781439035665 ppt ch059781439035665 ppt ch05
9781439035665 ppt ch05Terry Yoast
 
04 control structures 1
04 control structures 104 control structures 1
04 control structures 1Jomel Penalba
 
java in Aartificial intelligent by virat andodariya
java in Aartificial intelligent by virat andodariyajava in Aartificial intelligent by virat andodariya
java in Aartificial intelligent by virat andodariyaviratandodariya
 
JAVA in Artificial intelligent
JAVA in Artificial intelligentJAVA in Artificial intelligent
JAVA in Artificial intelligentVirat Andodariya
 
ECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/SnaptutorialECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/Snaptutorialpinck2380
 
ECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/SnaptutorialECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/Snaptutorialpinck200
 

Similar to Control structure (20)

Function in cpu 1
Function in cpu 1Function in cpu 1
Function in cpu 1
 
Ppt chapter04
Ppt chapter04Ppt chapter04
Ppt chapter04
 
Pptchapter04
Pptchapter04Pptchapter04
Pptchapter04
 
Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...
Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...
Core Java Programming Language (JSE) : Chapter IV - Expressions and Flow Cont...
 
Unit 3 principles of programming language
Unit 3 principles of programming languageUnit 3 principles of programming language
Unit 3 principles of programming language
 
Esoft Metro Campus - Certificate in java basics
Esoft Metro Campus - Certificate in java basicsEsoft Metro Campus - Certificate in java basics
Esoft Metro Campus - Certificate in java basics
 
Java chapter 3
Java chapter 3Java chapter 3
Java chapter 3
 
02 Java Language And OOP PART II
02 Java Language And OOP PART II02 Java Language And OOP PART II
02 Java Language And OOP PART II
 
9781439035665 ppt ch05
9781439035665 ppt ch059781439035665 ppt ch05
9781439035665 ppt ch05
 
04 control structures 1
04 control structures 104 control structures 1
04 control structures 1
 
Core java
Core javaCore java
Core java
 
Chap05
Chap05Chap05
Chap05
 
java in Aartificial intelligent by virat andodariya
java in Aartificial intelligent by virat andodariyajava in Aartificial intelligent by virat andodariya
java in Aartificial intelligent by virat andodariya
 
JAVA in Artificial intelligent
JAVA in Artificial intelligentJAVA in Artificial intelligent
JAVA in Artificial intelligent
 
Operator in JAVA
Operator in JAVA Operator in JAVA
Operator in JAVA
 
ECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/SnaptutorialECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/Snaptutorial
 
ECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/SnaptutorialECET 360 help A Guide to career/Snaptutorial
ECET 360 help A Guide to career/Snaptutorial
 
Lec1
Lec1Lec1
Lec1
 
Test
TestTest
Test
 
Test
TestTest
Test
 

Recently uploaded

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Control structure

  • 1.  2003 Prentice Hall, Inc. All rights reserved. 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.11 Compound Assignment Operators 4.12 Increment and Decrement Operators 4.13 Primitive Types Chapter 4 - Control Structures: Part 1
  • 2.  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)
  • 3.  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
  • 4.  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
  • 5.  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 structures can specify order of statements • Sequence structure (default) • Selection structure • Repetition structure • Activity diagram – Models the workflow (flowchart) • Action-state symbols • Transition arrows
  • 6.  2003 Prentice Hall, Inc. All rights reserved. 6 Fig 4.1 Sequence structure activity diagram. add grade to total add 1 to counter Corresponding Java statement: total = total + grade; Corresponding Java statement: counter = counter + 1;
  • 7.  2003 Prentice Hall, Inc. All rights reserved. 7 Java Keywords 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 Java keywords.
  • 8.  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 – for • Each of these words is a Java keyword
  • 9.  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
  • 10.  2003 Prentice Hall, Inc. All rights reserved. 10 Fig 4.3 if single-selections statement activity diagram. [grade >= 60] [grade < 60] print “Passed” if (studentGrade >= 60) { System.out.println (“Passed”); }
  • 11.  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
  • 12.  2003 Prentice Hall, Inc. All rights reserved. 12 Fig 4.4 if…else double-selections statement activity diagram. [grade >= 60] [grade < 60] print “Failed” print “Passed” if (studentGrade >= 60) { System.out.println (“Passed”); } else { System.out.println (“Failed”); }
  • 13.  2003 Prentice Hall, Inc. All rights reserved. 13 System.out.println (studentGrade >= 60 ? “Passed”: “Failed”); Conditional Operator (?:)
  • 14.  2003 Prentice Hall, Inc. All rights reserved. 14 Nested if…else selection structures if (studentGrade >= 90) System.out.println (“A”); else if (studentGrade >= 80) System.out.println (“B”); else if (studentGrade >= 70) System.out.println (“C”); else if (studentGrade >= 60) System.out.println (“D”); else System.out.println (“F”);
  • 15.  2003 Prentice Hall, Inc. All rights reserved. 15 4.7 while Repetition Statement • Repeat action while condition remains true • Condition should eventually become false (or never-ending loop)
  • 16.  2003 Prentice Hall, Inc. All rights reserved. 16 Fig 4.5 while repetition statement activity diagram. [product <= 1000] [product > 1000] double product value merge decision Corresponding Java statement: product = 2 * product; while (product <= 1000) { product = 2 * product; }
  • 17.  2003 Prentice Hall, Inc. All rights reserved. 17 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
  • 18.  2003 Prentice Hall, Inc. All rights reserved. 18 Assignment operator Sample expression Explanation Assigns 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 Arithmetic assignment operators.
  • 19.  2003 Prentice Hall, Inc. All rights reserved. 19 4.12 Increment and Decrement Operators • Unary increment operator (++) – Increment variable’s value by 1 • Unary decrement operator (--) – Decrement variable’s value by 1 • C++ is a language “one better than” C • Preincrement / predecrement operator • Postincrement / postdecrement operator
  • 20.  2003 Prentice Hall, Inc. All rights reserved. 20 Operator Called Sample expression Explanation ++ 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 increment and decrement operators.
  • 21.  2003 Prentice Hall, Inc. All rights reserved. Outline 21 Increment.java Line 13 postincrement Line 21 preincrement 1 // Fig. 4.14: Increment.java 2 // Preincrementing and postincrementing operators. 3 4 public class Increment { 5 6 public static void main( String args[] ) 7 { 8 int c; 9 10 // demonstrate postincrement 11 c = 5; // assign 5 to c 12 System.out.println( c ); // print 5 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 Line 13 postincrements c Line 21 preincrements c
  • 22.  2003 Prentice Hall, Inc. All rights reserved. 22 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
  • 23.  2003 Prentice Hall, Inc. All rights reserved. 23 Type Size in bits Values Standard 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' (0 to 65535) (ISO Unicode character set) 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: –3.4028234663852886E+38 to –1.40129846432481707e–45 Positive range: 1.40129846432481707e–45 to 3.4028234663852886E+38 (IEEE 754 floating point) double 64 Negative range: –1.7976931348623157E+308 to –4.94065645841246544e–324 Positive range: 4.94065645841246544e–324 to 1.7976931348623157E+308 (IEEE 754 floating point) Fig. 4.16The Java primitive types.
  • 24.  2003 Prentice Hall, Inc. All rights reserved. 24 Chapter 5 – Control Structures: Part 2 Outline 5.1 Introduction 5.2 Essentials of Counter-Controlled Repetition 5.3 for Repetition Statement 5.4 Examples Using the for Statement 5.5 do…while Repetition Statement 5.6 switch Multiple-Selection Statement 5.7 break and continue Statements 5.8 Labeled break and continue Statements 5.9 Logical Operators
  • 25.  2003 Prentice Hall, Inc. All rights reserved. 25 5.2 Essentials of Counter-Controlled Repetition • Counter-controlled repetition requires: – Control variable (loop counter) – Initial value of the control variable – Increment/decrement of control variable through each loop – Condition that tests for the final value of the control variable
  • 26.  2003 Prentice Hall, Inc. All rights reserved. Outline 26 WhileCounter.ja va Line 14 Line 16 Line 18 1 // Fig. 5.1: WhileCounter.java 2 // Counter-controlled repetition. 3 import java.awt.Graphics; 4 5 import javax.swing.JApplet; 6 7 public class WhileCounter extends JApplet { 8 9 // draw lines on applet’s background 10 public void paint( Graphics g ) 11 { 12 super.paint( g ); // call paint method inherited from JApplet 13 14 int counter = 1; // initialization 15 16 while ( counter <= 10 ) { // repetition condition 17 g.drawLine( 10, 10, 250, counter * 10 ); 18 ++counter; // increment 19 20 } // end while 21 22 } // end method paint 23 24 } // end class WhileCounter Increment for counter Condition tests for counter’s final value Control-variable name is counter Control-variable initial value is 1
  • 27.  2003 Prentice Hall, Inc. All rights reserved. 27 5.3 for Repetition Statement • Handles counter-controlled-repetition details
  • 28.  2003 Prentice Hall, Inc. All rights reserved. Outline 28 ForCounter.java Line 16 int counter = 1; Line 16 counter <= 10; Line 16 counter++; 1 // Fig. 5.2: ForCounter.java 2 // Counter-controlled repetition with the for statement. 3 import java.awt.Graphics; 4 5 import javax.swing.JApplet; 6 7 public class ForCounter extends JApplet { 8 9 // draw lines on applet’s background 10 public void paint( Graphics g ) 11 { 12 super.paint( g ); // call paint method inherited from JApplet 13 14 // for statement header includes initialization, 15 // repetition condition and increment 16 for ( int counter = 1; counter <= 10; counter++ ) 17 g.drawLine( 10, 10, 250, counter * 10 ); 18 19 } // end method paint 20 21 } // end class ForCounter Condition tests for counter’s final value Control-variable name is counter Control-variable initial value is 1 Increment for counter
  • 29.  2003 Prentice Hall, Inc. All rights reserved. 29 Fig. 5.3 for statement header components. for ( int counter = 1; counter <= 10; counter++ ) Increment of control variable Control variable Final value of control variable for which the condition is true for keyword Loop-continuation condition Initial value of control variable Required semicolon separator Required semicolon separator
  • 30.  2003 Prentice Hall, Inc. All rights reserved. 30 5.3 for Repetition Structure (cont.) for ( initialization; loopContinuationCondition; increment ) statement; can usually be rewritten as: initialization; while ( loopContinuationCondition ) { statement; increment; } init, condition, increment all optional Condition assumed to be true (unending loop) if omitted
  • 31.  2003 Prentice Hall, Inc. All rights reserved. 31 Fig. 5.4 for statement activity diagram. [counter <= 10] [counter > 10] int counter = 1 counter++ Determine whether the final value of control variable has been reached g.drawLine( 10, 10, 250, counter * 10 ); Establish initial value of control variable Draw a line on the applet Increment the control variable
  • 32.  2003 Prentice Hall, Inc. All rights reserved. 32 5.4 Examples Using the for Statement • Varying control variable in for statement – Vary control variable from 1 to 100 in increments of 1 • for ( int i = 1; i <= 100; i++ ) – Vary control variable from 100 to 1 in increments of –1 • for ( int i = 100; i >= 1; i-- ) – Vary control variable from 7 to 77 in increments of 7 • for ( int i = 7; i <= 77; i += 7 )
  • 33.  2003 Prentice Hall, Inc. All rights reserved. Outline 33 Sum.java Line 12 1 // Fig. 5.5: Sum.java 2 // Summing integers with the for statement. 3 import javax.swing.JOptionPane; 4 5 public class Sum { 6 7 public static void main( String args[] ) 8 { 9 int total = 0; // initialize sum 10 11 // total even integers from 2 through 100 12 for ( int number = 2; number <= 100; number += 2 ) 13 total += number; 14 15 // display results 16 JOptionPane.showMessageDialog( null, "The sum is " + total, 17 "Total Even Integers from 2 to 100", 18 JOptionPane.INFORMATION_MESSAGE ); 19 20 System.exit( 0 ); // terminate application 21 22 } // end main 23 24 } // end class Sum increment number by 2 each iteration
  • 34.  2003 Prentice Hall, Inc. All rights reserved. Outline 34 Interest.java Lines 13-15 Line 18 Line 19 1 // Fig. 5.6: Interest.java 2 // Calculating compound interest. 3 import java.text.NumberFormat; // class for numeric formatting 4 import java.util.Locale; // class for country-specific information 5 6 import javax.swing.JOptionPane; 7 import javax.swing.JTextArea; 8 9 public class Interest { 10 11 public static void main( String args[] ) 12 { 13 double amount; // amount on deposit at end of each year 14 double principal = 1000.0; // initial amount before interest 15 double rate = 0.05; // interest rate 16 17 // create NumberFormat for currency in US dollar format 18 NumberFormat moneyFormat = 19 NumberFormat.getCurrencyInstance( Locale.US ); 20 21 // create JTextArea to display output 22 JTextArea outputTextArea = new JTextArea(); 23 24 // set first line of text in outputTextArea 25 outputTextArea.setText( "YeartAmount on depositn" ); 26 Java treats floating-points as type double NumberFormat can format numeric values as currency Display currency values with dollar sign ($)
  • 35.  2003 Prentice Hall, Inc. All rights reserved. Outline 35 Interest.java Lines 28-31 27 // calculate amount on deposit for each of ten years 28 for ( int year = 1; year <= 10; year++ ) { 29 30 // calculate new amount for specified year 31 amount = principal * Math.pow( 1.0 + rate, year ); 32 33 // append one line of text to outputTextArea 34 outputTextArea.append( year + "t" + 35 moneyFormat.format( amount ) + "n" ); 36 37 } // end for 38 39 // display results 40 JOptionPane.showMessageDialog( null, outputTextArea, 41 "Compound Interest", JOptionPane.INFORMATION_MESSAGE ); 42 43 System.exit( 0 ); // terminate the application 44 45 } // end main 46 47 } // end class Interest Calculate amount with for statement
  • 36.  2003 Prentice Hall, Inc. All rights reserved. 36 5.5 do…while Repetition Statement • do…while structure – Similar to while structure – Tests loop-continuation after performing body of loop • i.e., loop body always executes at least once
  • 37.  2003 Prentice Hall, Inc. All rights reserved. Outline 37 DoWhileTest.jav a Lines 16-20 1 // Fig. 5.7: DoWhileTest.java 2 // Using the do...while statement. 3 import java.awt.Graphics; 4 5 import javax.swing.JApplet; 6 7 public class DoWhileTest extends JApplet { 8 9 // draw lines on applet 10 public void paint( Graphics g ) 11 { 12 super.paint( g ); // call paint method inherited from JApplet 13 14 int counter = 1; // initialize counter 15 16 do { 17 g.drawOval( 110 - counter * 10, 110 - counter * 10, 18 counter * 20, counter * 20 ); 19 ++counter; 20 } while ( counter <= 10 ); // end do...while 21 22 } // end method paint 23 24 } // end class DoWhileTest Oval is drawn before testing counter’s final value
  • 38.  2003 Prentice Hall, Inc. All rights reserved. 38 Fig. 5.8 do…while repetition statement activity diagram. action state [true] [false] condition
  • 39.  2003 Prentice Hall, Inc. All rights reserved. 39 5.6 switch Multiple-Selection Statement • switch statement – Used for multiple selections – case followed by integer or character (case 10 or case ‘y’) – Multiple cases (without code) indicate the same thing done for each case case 3: case 5: case 7: x=y+z; break;
  • 40.  2003 Prentice Hall, Inc. All rights reserved. Outline 40 SwitchTest.java Lines 16-21: Getting user’s input 1 // Fig. 5.9: SwitchTest.java 2 // Drawing lines, rectangles or ovals based on user input. 3 import java.awt.Graphics; 4 5 import javax.swing.*; 6 7 public class SwitchTest extends JApplet { 8 int choice; // user's choice of which shape to draw 9 10 // initialize applet by obtaining user's choice 11 public void init() 12 { 13 String input; // user's input 14 15 // obtain user's choice 16 input = JOptionPane.showInputDialog( 17 "Enter 1 to draw linesn" + 18 "Enter 2 to draw rectanglesn" + 19 "Enter 3 to draw ovalsn" ); 20 21 choice = Integer.parseInt( input ); // convert input to int 22 23 } // end method init 24 25 // draw shapes on applet's background 26 public void paint( Graphics g ) 27 { 28 super.paint( g ); // call paint method inherited from JApplet 29 30 for ( int i = 0; i < 10; i++ ) { // loop 10 times (0-9) 31 Get user’s input in JApplet
  • 41.  2003 Prentice Hall, Inc. All rights reserved. Outline 41 SwitchTest.java Line 32: controlling expression Line 32: switch statement Line 48 32 switch ( choice ) { // determine shape to draw 33 34 case 1: // draw a line 35 g.drawLine( 10, 10, 250, 10 + i * 10 ); 36 break; // done processing case 37 38 case 2: // draw a rectangle 39 g.drawRect( 10 + i * 10, 10 + i * 10, 40 50 + i * 10, 50 + i * 10 ); 41 break; // done processing case 42 43 case 3: // draw an oval 44 g.drawOval( 10 + i * 10, 10 + i * 10, 45 50 + i * 10, 50 + i * 10 ); 46 break; // done processing case 47 48 default: // draw string indicating invalid value entered 49 g.drawString( "Invalid value entered", 50 10, 20 + i * 15 ); 51 52 } // end switch 53 54 } // end for 55 56 } // end method paint 57 58 } // end class SwitchTest default case for invalid entries switch statement determines which case label to execute, depending on controlling expression user input (choice) is controlling expression
  • 42.  2003 Prentice Hall, Inc. All rights reserved. Outline 42 SwitchTest.java
  • 43.  2003 Prentice Hall, Inc. All rights reserved. Outline 43 SwitchTest.java
  • 44.  2003 Prentice Hall, Inc. All rights reserved. 44 Fig. 5.10 switch multiple-selection statement activity diagram with break statements. case a action(s) break default action(s) [true] case b action(s) break case z action(s) break . . . [false] case a [true] [true] case b case z [false] [false]
  • 45.  2003 Prentice Hall, Inc. All rights reserved. 45 5.7 break and continue Statements • break/continue – Alter flow of control • break statement – Causes immediate exit from control structure • Used in while, for, do…while or switch statements • Escape early from loop or skip remainder of switch • continue statement – Skips remaining statements in loop body – Proceeds to next iteration • Used in while, for or do…while statements
  • 46.  2003 Prentice Hall, Inc. All rights reserved. Outline 46 BreakTest.java Line 12 Lines 14-15 1 // Fig. 5.11: BreakTest.java 2 // Terminating a loop with break. 3 import javax.swing.JOptionPane; 4 5 public class BreakTest { 6 7 public static void main( String args[] ) 8 { 9 String output = ""; 10 int count; 11 12 for ( count = 1; count <= 10; count++ ) { // loop 10 times 13 14 if ( count == 5 ) // if count is 5, 15 break; // terminate loop 16 17 output += count + " "; 18 19 } // end for 20 21 output += "nBroke out of loop at count = " + count; 22 JOptionPane.showMessageDialog( null, output ); 23 24 System.exit( 0 ); // terminate application 25 26 } // end main 27 28 } // end class BreakTest Loop 10 times exit for structure (break) when count equals 5
  • 47.  2003 Prentice Hall, Inc. All rights reserved. Outline 47 ContinueTest.ja va Line 11 Lines 13-14 1 // Fig. 5.12: ContinueTest.java 2 // Continuing with the next iteration of a loop. 3 import javax.swing.JOptionPane; 4 5 public class ContinueTest { 6 7 public static void main( String args[] ) 8 { 9 String output = ""; 10 11 for ( int count = 1; count <= 10; count++ ) { // loop 10 times 12 13 if ( count == 5 ) // if count is 5, 14 continue; // skip remaining code in loop 15 16 output += count + " "; 17 18 } // end for 19 20 output += "nUsed continue to skip printing 5"; 21 JOptionPane.showMessageDialog( null, output ); 22 23 System.exit( 0 ); // terminate application 24 25 } // end main 26 27 } // end class ContinueTest Loop 10 times Skip line 16 and proceed to line 11 when count equals 5
  • 48.  2003 Prentice Hall, Inc. All rights reserved. 48 5.8 Labeled break and continue Statements • Labeled block – Set of statements enclosed by {} – Preceded by a label • Labeled break statement – Exit from nested control structures – Proceeds to end of specified labeled block • Labeled continue statement – Skips remaining statements in nested-loop body – Proceeds to beginning of specified labeled block – Controversial – disguised “goto” statement! – Always a better way than labeled continue
  • 49.  2003 Prentice Hall, Inc. All rights reserved. Outline 49 BreakLabelTest. java Line 11 Line 14 Line 17 Lines 19-20 1 // Fig. 5.13: BreakLabelTest.java 2 // Labeled break statement. 3 import javax.swing.JOptionPane; 4 5 public class BreakLabelTest { 6 7 public static void main( String args[] ) 8 { 9 String output = ""; 10 11 stop: { // labeled block 12 13 // count 10 rows 14 for ( int row = 1; row <= 10; row++ ) { 15 16 // count 5 columns 17 for ( int column = 1; column <= 5 ; column++ ) { 18 19 if ( row == 5 ) // if row is 5, 20 break stop; // jump to end of stop block 21 22 output += "* "; 23 24 } // end inner for 25 26 output += "n"; 27 28 } // end outer for 29 Loop 10 times stop is the labeled block Exit to line 35 (next slide) Nested loop 5 times
  • 50.  2003 Prentice Hall, Inc. All rights reserved. Outline 50 BreakLabelTest. java 30 // following line is skipped 31 output += "nLoops terminated normally"; 32 33 } // end labeled block 34 35 JOptionPane.showMessageDialog( null, output, 36 "Testing break with a label", 37 JOptionPane.INFORMATION_MESSAGE ); 38 39 System.exit( 0 ); // terminate application 40 41 } // end main 42 43 } // end class BreakLabelTest
  • 51.  2003 Prentice Hall, Inc. All rights reserved. Outline 51 ContinueLabelTe st.java Line 11 Line 14 Line 17 Lines 21-22 1 // Fig. 5.14: ContinueLabelTest.java 2 // Labeled continue statement. 3 import javax.swing.JOptionPane; 4 5 public class ContinueLabelTest { 6 7 public static void main( String args[] ) 8 { 9 String output = ""; 10 11 nextRow: // target label of continue statement 12 13 // count 5 rows 14 for ( int row = 1; row <= 5; row++ ) { 15 output += "n"; 16 17 // count 10 columns per row 18 for ( int column = 1; column <= 10; column++ ) { 19 20 // if column greater than row, start next row 21 if ( column > row ) 22 continue nextRow; // next iteration of labeled loop 23 24 output += "* "; 25 26 } // end inner for 27 28 } // end outer for nextRow is the labeled block Loop 5 times Nested loop 10 times continue to line 11 (nextRow)
  • 52.  2003 Prentice Hall, Inc. All rights reserved. Outline 52 ContinueLabelTe st.java 29 30 JOptionPane.showMessageDialog( null, output, 31 "Testing continue with a label", 32 JOptionPane.INFORMATION_MESSAGE ); 33 34 System.exit( 0 ); // terminate application 35 36 } // end main 37 38 } // end class ContinueLabelTest
  • 53.  2003 Prentice Hall, Inc. All rights reserved. 53 5.9 Logical Operators • Logical operators – Allows for forming more complex conditions – Combines simple conditions • Java logical operators – && (conditional AND) (short circuit) – & (boolean logical AND) – || (conditional OR) (short circuit) – | (boolean logical OR) – ^ (boolean logical exclusive OR) – ! (logical NOT) (project > 75 && exam>= 80)
  • 54.  2003 Prentice Hall, Inc. All rights reserved. 54 expression1 expression2 expression1 && expression2 false false false false true false true false false true true true Fig. 5.15 && (conditional AND) operator truth table. expression1 expression2 expression1 || expression2 false false false false true true true false true true true true Fig. 5.16 || (conditional OR) operator truth table.
  • 55.  2003 Prentice Hall, Inc. All rights reserved. 55 expression1 expression2 expression1 ^ expression2 false false false false true true true false true true true false Fig. 5.17 ^ (boolean logical exclusive OR) operator truth table. expression !expression false true true false Fig. 5.18 ! (logical negation, or logical NOT) operator truth table.
  • 56.  2003 Prentice Hall, Inc. All rights reserved. Outline 56 LogicalOperator s.java Lines 16-20 Lines 23-27 1 // Fig. 5.19: LogicalOperators.java 2 // Logical operators. 3 import javax.swing.*; 4 5 public class LogicalOperators 6 7 public static void main( String args[] ) 8 { 9 // create JTextArea to display results 10 JTextArea outputArea = new JTextArea( 17, 20 ); 11 12 // attach JTextArea to a JScrollPane so user can scroll results 13 JScrollPane scroller = new JScrollPane( outputArea ); 14 15 // create truth table for && (conditional AND) operator 16 String output = "Logical AND (&&)" + 17 "nfalse && false: " + ( false && false ) + 18 "nfalse && true: " + ( false && true ) + 19 "ntrue && false: " + ( true && false ) + 20 "ntrue && true: " + ( true && true ); 21 22 // create truth table for || (conditional OR) operator 23 output += "nnLogical OR (||)" + 24 "nfalse || false: " + ( false || false ) + 25 "nfalse || true: " + ( false || true ) + 26 "ntrue || false: " + ( true || false ) + 27 "ntrue || true: " + ( true || true ); 28 Conditional AND truth table Conditional OR truth table
  • 57.  2003 Prentice Hall, Inc. All rights reserved. Outline 57 LogicalOperator s.java Lines 30-34 Lines 37-41 Lines 44-48 Lines 51-53 29 // create truth table for & (boolean logical AND) operator 30 output += "nnBoolean logical AND (&)" + 31 "nfalse & false: " + ( false & false ) + 32 "nfalse & true: " + ( false & true ) + 33 "ntrue & false: " + ( true & false ) + 34 "ntrue & true: " + ( true & true ); 35 36 // create truth table for | (boolean logical inclusive OR) operator 37 output += "nnBoolean logical inclusive OR (|)" + 38 "nfalse | false: " + ( false | false ) + 39 "nfalse | true: " + ( false | true ) + 40 "ntrue | false: " + ( true | false ) + 41 "ntrue | true: " + ( true | true ); 42 43 // create truth table for ^ (boolean logical exclusive OR) operator 44 output += "nnBoolean logical exclusive OR (^)" + 45 "nfalse ^ false: " + ( false ^ false ) + 46 "nfalse ^ true: " + ( false ^ true ) + 47 "ntrue ^ false: " + ( true ^ false ) + 48 "ntrue ^ true: " + ( true ^ true ); 49 50 // create truth table for ! (logical negation) operator 51 output += "nnLogical NOT (!)" + 52 "n!false: " + ( !false ) + 53 "n!true: " + ( !true ); 54 55 outputArea.setText( output ); // place results in JTextArea 56 Logical NOT truth table Boolean logical exclusive OR truth table Boolean logical inclusive OR truth table Boolean logical AND truth table
  • 58.  2003 Prentice Hall, Inc. All rights reserved. Outline 58 LogicalOperator s.java 57 JOptionPane.showMessageDialog( null, scroller, 58 "Truth Tables", JOptionPane.INFORMATION_MESSAGE ); 59 60 System.exit( 0 ); // terminate application 61 62 } // end main 63 64 } // end class LogicalOperators