0% found this document useful (0 votes)
90 views70 pages

Loops

This document provides an overview of control statements in programming, specifically covering counter-controlled repetition using for and do-while loops. It discusses the essential components of for loops, including the initialization, loop condition, and increment expressions. Examples are given to illustrate varying the control variable in different ways within a for loop. Common errors are also outlined, such as using incorrect relational operators. The overall purpose is to teach readers how to use for and do-while loops to repeatedly execute statements through counter control.

Uploaded by

Maurice Walsh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
90 views70 pages

Loops

This document provides an overview of control statements in programming, specifically covering counter-controlled repetition using for and do-while loops. It discusses the essential components of for loops, including the initialization, loop condition, and increment expressions. Examples are given to illustrate varying the control variable in different ways within a for loop. Common errors are also outlined, such as using incorrect relational operators. The overall purpose is to teach readers how to use for and do-while loops to repeatedly execute statements through counter control.

Uploaded by

Maurice Walsh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 70

1

5
Control Statements: Part 2
2005 Pearson Education, Inc. All rights reserved.

Not everything that can be counted counts, and not every thing that counts can be counted.
Albert Einstein

Who can control his fate?


William Shakespeare

The used key is always bright.


Benjamin Franklin

Intelligence is the faculty of making artificial objects, especially tools to make tools.
Henri Bergson

Every advantage in the past is judged in the light of the final issue.
Demosthenes
2005 Pearson Education, Inc. All rights reserved.

OBJECTIVES
In this chapter you will learn: The essentials of counter-controlled repetition. To use the for and do while repetition statements to execute statements in a program repeatedly. To understand multiple selection using the switch selection statement. To use the break and continue program control statements to alter the flow of control. To use the logical operators to form complex conditional expressions in control statements.
2005 Pearson Education, Inc. All rights reserved.

5.1 5.2 5.3 5.4 5.5 5.6

Introduction Essentials of Counter-Controlled Repetition


for Repetition Statement

Examples Using the for Statement


do while Repetition Statement switch Multiple-Selection Statement

5.7
5.8 5.9 5.10 5.11 5.12

break and continue Statements

Logical Operators Structured Programming Summary (Optional) GUI and Graphics Case Study: Drawing Rectangles and Ovals (Optional) Software Engineering Case Study: Identifying Objects States and Activities Wrap-Up

2005 Pearson Education, Inc. All rights reserved.

5.1 Introduction
Continue structured-programming discussion
Introduce Javas remaining control structures
for, dowhile, switch

2005 Pearson Education, Inc. All rights reserved.

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

Loop-continuation condition that tests for the final value of the control variable

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

// Fig. 5.1: WhileCounter.java // Counter-controlled repetition with the while repetition statement. public class WhileCounter { public static void main( String args[] ) {

Outline

Control-variable name is counter Control-variable initial value is 1 WhileCounter.java

int counter = 1; // declare and initialize control variable while ( counter <= 10 ) // loop-continuation condition { System.out.printf( "%d } // end while System.out.println(); // output a newline } // end main ", counter ); ++counter; // increment control variable by 1

Condition tests for counters final value


Increment for counter

18 } // end class WhileCounter 1 2 3 4 5 6 7 8 9 10

2005 Pearson Education, Inc. All rights reserved.

Common Programming Error 5.1


Because floating-point values may be approximate, controlling loops with floatingpoint variables may result in imprecise counter values and inaccurate termination tests.

2005 Pearson Education, Inc. All rights reserved.

Error-Prevention Tip 5.1

Control counting loops with integers.

2005 Pearson Education, Inc. All rights reserved.

10

Good Programming Practice 5.1


Place blank lines above and below repetition and selection control statements, and indent the statement bodies to enhance readability.

2005 Pearson Education, Inc. All rights reserved.

11

Software Engineering Observation 5.1

Keep it simple remains good advice for most of the code you will write.

2005 Pearson Education, Inc. All rights reserved.

12

5.3 for Repetition Statement


Handles counter-controlled-repetition details

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12

// Fig. 5.2: ForCounter.java // Counter-controlled repetition with the for repetition statement. public class ForCounter { public static void main( String args[] ) { // for statement header includes initialization, // loop-continuation condition and increment for ( int counter = 1; counter <= 10; counter++ ) System.out.printf( "%d ", counter );

13

Outline

ForCounter.java
Line 10 int counter = 1; Line 10 counter <= 10; Line 10 counter++;

13 System.out.println(); // output a newline 14 } // end main 15 } // end class ForCounter Control-variable name is counter 1 2 3 4 5 6 7 8 9 10 Control-variable initial value is 1

Increment for counter

Condition tests for counters final value

2005 Pearson Education, Inc. All rights reserved.

14

Common Programming Error 5.2

Using an incorrect relational operator or an incorrect final value of a loop counter in the loop-continuation condition of a repetition statement can cause an off-by-one error.

2005 Pearson Education, Inc. All rights reserved.

15

Good Programming Practice 5.2


Using the final value in the condition of a while or for statement and using the <= relational operator helps avoid off-by-one errors. For a loop that prints the values 1 to 10, the loop-continuation condition should be counter <= 10 rather than counter < 10 (which causes an off-by-one error) or counter < 11 (which is correct). Many programmers prefer so-called zero-based counting, in which to count 10 times, counter would be initialized to zero and the loop-continuation test would be counter < 10.

2005 Pearson Education, Inc. All rights reserved.

16

Fig. 5.3 | for statement header components.

2005 Pearson Education, Inc. All rights reserved.

17

5.3 for Repetition Statement (Cont.)


for ( initialization; loopContinuationCondition; increment ) statement; can usually be rewritten as:

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

2005 Pearson Education, Inc. All rights reserved.

18

Common Programming Error 5.3


Using commas instead of the two required semicolons in a for header is a syntax error.

2005 Pearson Education, Inc. All rights reserved.

19

Common Programming Error 5.4


When a for statements control variable is declared in the initialization section of the fors header, using the control variable after the fors body is a compilation error.

2005 Pearson Education, Inc. All rights reserved.

20

Performance Tip 5.1


There is a slight performance advantage to preincrementing, but if you choose to postincrement because it seems more natural (as in a for header), optimizing compilers will generate Java bytecode that uses the more efficient form anyway.

2005 Pearson Education, Inc. All rights reserved.

21

Good Programming Practice 5.3


In the most cases, preincrementing and postincrementing are both used to add 1 to a variable in a statement by itself. In these cases, the effect is exactly the same, except that preincrementing has a slight performance advantage. Given that the compiler typically optimizes your code to help you get the best performance, use the idiom with which you feel most comfortable in these situations.

2005 Pearson Education, Inc. All rights reserved.

22

Common Programming Error 5.5


Placing a semicolon immediately to the right of the right parenthesis of a for header makes that fors body an empty statement. This is normally a logic error.

2005 Pearson Education, Inc. All rights reserved.

23

Error-Prevention Tip 5.2


Infinite loops occur when the loop-continuation condition in a repetition statement never becomes false. To prevent this situation in a countercontrolled loop, ensure that the control variable is incremented (or decremented) during each iteration of the loop. In a sentinel-controlled loop, ensure that the sentinel value is eventually input.

2005 Pearson Education, Inc. All rights reserved.

24

Error-Prevention Tip 5.3


Although the value of the control variable can be changed in the body of a for loop, avoid doing so, because this practice can lead to subtle errors.

2005 Pearson Education, Inc. All rights reserved.

25

Fig. 5.4 | UML activity diagram for the for statement in Fig. 5.2.

2005 Pearson Education, Inc. All rights reserved.

26

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 co ntrol 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 )

Vary control variable from 20 to 2 in decrements of 2


for ( int i = 20; i >= 2; i -= 2 )

Vary control variable over the sequence: 2, 5, 8, 11, 14, 17, 20


for ( int i = 2; i <= 20; i += 3 )

Vary control variable over the sequence: 99, 88, 77, 66, 55, 44, 33, 22, 11, 0
for ( int i = 99; i >= 0; i -= 11 )

2005 Pearson Education, Inc. All rights reserved.

27

Common Programming Error 5.6


Not using the proper relational operator in the loopcontinuation condition of a loop that counts downward (e.g., using i <= 1 instead of i >= 1 in a loop counting down to 1) is usually a logic error.

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

// Fig. 5.5: Sum.java // Summing integers with the for statement. public class Sum { public static void main( String args[] ) { int total = 0; // initialize total // total even integers from 2 through 20 for ( int number = 2; number <= 20; number += 2 ) total += number; System.out.printf( "Sum is %d\n", total ); // display results

28

Outline

Sum.java

Line 11

15 } // end main 16 } // end class Sum Sum is 110

increment number by 2 each iteration

2005 Pearson Education, Inc. All rights reserved.

5.4 Examples Using the for Statement (Cont.)


Initialization and increment expression can be comma-separated lists of expressions
E.g., lines 11-12 of Fig. 5.5 can be rewritten as
for ( int number = 2; number <= 20; total += number, number += 2 ) ; // empty statement

29

2005 Pearson Education, Inc. All rights reserved.

30

Good Programming Practice 5.4

Limit the size of control statement headers to a single line if possible.

2005 Pearson Education, Inc. All rights reserved.

31

Good Programming Practice 5.5


Place only expressions involving the control variables in the initialization and increment sections of a for statement. Manipulations of other variables should appear either before the loop (if they execute only once, like initialization statements) or in the body of the loop (if they execute once per iteration of the loop, like increment or decrement statements).

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

// Fig. 5.6: Interest.java // Compound-interest calculations with for. public class Interest { public static void main( String args[] { double amount; // amount on deposit at end of each year double principal = 1000.0; // initial amount before interest double rate = 0.05; // interest rate // display headers System.out.printf( "%s%20s\n", "Year", "Amount on deposit" );

32

Outline

Java treats floating-points as type double )

Interest.java

(1 of 2)

Line 8 Line 13 Second string is right justified and displayed with a field width of 20

2005 Pearson Education, Inc. All rights reserved.

15 16 17 18 19 20 21 22 23 24

// calculate amount on deposit for each of ten years for ( int year = 1; year <= 10; year++ ) { // calculate new amount for specified year amount = principal * Math.pow( 1.0 + rate, year ); // display the year and the amount System.out.printf( "%4d%,20.2f\n", year, amount ); } // end for } // end main

33

Outline
Calculate amount with for statement
Interest.java

(2 of 2)

25 } // end class Interest Year 1 2 3 4 5 6 7 8 9 10 Amount on deposit 1,050.00 1,102.50 1,157.63 1,215.51 1,276.28 1,340.10 1,407.10 1,477.46 1,551.33 1,628.89

Use the comma (,) formatting flag to display the amount with a thousands separator Lines 16-23 Line 22

Program output

2005 Pearson Education, Inc. All rights reserved.

5.4 Examples Using the for Statement (Cont.)


Formatting output
Field width Minus sign (-) formatting flag
Comma (,) formatting flag

34

static method
ClassName.methodName( arguments)

2005 Pearson Education, Inc. All rights reserved.

35

Good Programming Practice 5.6


Do not use variables of type double (or float) to perform precise monetary calculations. The imprecision of floating-point numbers can cause errors that will result in incorrect monetary values. In the exercises, we explore the use of integers to perform monetary calculations. [Note: Some thirdparty vendors provide for-sale class libraries that perform precise monetary calculations. In addition, the Java API provides class java.math.BigDecimal for performing calculations with arbitrary precision floating-point values.]
2005 Pearson Education, Inc. All rights reserved.

36

Performance Tip 5.2


In loops, avoid calculations for which the result never changes such calculations should typically be placed before the loop. [Note: Many of todays sophisticated optimizing compilers will place such calculations outside loops in the compiled code.]

2005 Pearson Education, Inc. All rights reserved.

37

5.5 dowhile Repetition Statement


dowhile structure
Similar to while structure
Tests loop-continuation after performing body of loop
i.e., loop body always executes at least once

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

// Fig. 5.7: DoWhileTest.java // do...while repetition statement. public class DoWhileTest { public static void main( String args[] ) { int counter = 1; // initialize counter do { System.out.printf( "%d ++counter; ", counter );

38

Outline

DoWhileTest.java

Line 8 Lines 10-14

} while ( counter <= 10 ); // end do...while System.out.println(); // outputs a newline } // end main

18 } // end class DoWhileTest 1 2 3 4 5 6 7 8 9 10

Program output

2005 Pearson Education, Inc. All rights reserved.

39

Fig. 5.8 | do...while repetition statement UML activity diagram.

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

// Fig. 5.9: GradeBook.java // GradeBook class uses switch statement to count A, B, C, D and F grades. import java.util.Scanner; // program uses class Scanner public class GradeBook { private String courseName; // name of course this GradeBook represents private int total; // sum of grades private int gradeCounter; // number of grades entered private int aCount; // count of A grades private int bCount; // count of B grades private int cCount; // count of C grades private int dCount; // count of D grades private int fCount; // count of F grades // constructor initializes courseName; // int instance variables are initialized to 0 by default public GradeBook( String name ) { courseName = name; // initializes courseName total = 100; aCount = 0; int grade = 50; } // end constructor // method to set the course name public void setCourseName( String name ) { courseName = name; // store the course name } // end method setCourseName

40

Outline

GradeBook.java

(1 of 5) Lines 8-14

21 22 23 24 25 26 27 28

2005 Pearson Education, Inc. All rights reserved.

29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

// method to retrieve the course name public String getCourseName() { return courseName; } // end method getCourseName // display a welcome message to the GradeBook user public void displayMessage() { // getCourseName gets the name of the course System.out.printf( "Welcome to the grade book for\n%s!\n\n", getCourseName() ); } // end method displayMessage // input arbitrary number of grades from user public void inputGrades() { Scanner input = new Scanner( System.in ); int grade; // grade entered by user System.out.printf( "%s\n%s\n %s\n %s\n",

41

Outline

GradeBook.java

(2 of 5)

Lines 50-54

Display prompt

"Enter the integer grades in the range 0-100.", "Type the end-of-file indicator to terminate input:", "On UNIX/Linux/Mac OS X type <ctrl> d then press Enter", "On Windows type <ctrl> z then press Enter" );

2005 Pearson Education, Inc. All rights reserved.

56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82

// loop until user enters the end-of-file indicator while ( input.hasNext() ) { grade = input.nextInt(); // read grade total += grade; // add grade to total ++gradeCounter; // increment number of grades // call method to increment appropriate counter incrementLetterGradeCounter( grade ); } // end while } // end method inputGrades // add 1 to appropriate counter for specified grade public void incrementLetterGradeCounter( int numericGrade ) { // determine which grade was entered switch ( numericGrade / 10 ) { case 9: // grade was between 90 case 10: // and 100 ++aCount; // increment aCount break; // necessary to exit switch case 8: // grade was between 80 and 89 ++bCount; // increment bCount break; // exit switch

42

Outline

GradeBook.java

(3 of 5) Line 57 Line 72 controlling expression Lines 72-94

2005 Pearson Education, Inc. All rights reserved.

83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

case 7: // grade was between 70 and 79 ++cCount; // increment cCount break; // exit switch case 6: // grade was between 60 and 69 ++dCount; // increment dCount break; // exit switch default: // grade was less than 60 ++fCount; // increment fCount break; // optional; will exit switch anyway } // end switch } // end method incrementLetterGradeCounter // display a report based on the grades entered by user public void displayGradeReport() { System.out.println( "\nGrade Report:" ); // if user entered at least one grade... if ( gradeCounter != 0 ) { // calculate average of all grades entered double average = (double) total / gradeCounter;

43

Outline

GradeBook.java

(4 of 5)

Line 91 default case

2005 Pearson Education, Inc. All rights reserved.

108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

// output summary of results System.out.printf( "Total of the %d grades entered is %d\n", gradeCounter, total ); System.out.printf( "Class average is %.2f\n", average ); System.out.printf( "%s\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n", "Number of students who received each grade:", "A: ", aCount, "B: ", bCount, "C: ", cCount, "D: ", dCount, } // end if else // no grades were entered, so output appropriate message System.out.println( "No grades were entered" ); } // end method displayGradeReport // display number of A grades // display number of B grades // display number of C grades // display number of D grades

44

Outline

GradeBook.java

(5 of 5)

"F: ", fCount ); // display number of F grades

123 } // end class GradeBook

2005 Pearson Education, Inc. All rights reserved.

45

Common Programming Error 5.7


Forgetting a break statement when one is needed in a switch is a logic error.

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

// Fig. 5.10: GradeBookTest.java // Create GradeBook object, input grades and display grade report. public class GradeBookTest { public static void main( String args[] ) { // create GradeBook object myGradeBook and // pass course name to constructor GradeBook myGradeBook = new GradeBook( "CS101 Introduction to Java Programming" );

46

Outline

GradeBookTest.java

Call GradeBook public(1 of 2) methods to count grades Lines 13-15

myGradeBook.displayMessage(); // display welcome message myGradeBook.inputGrades(); // read grades from user

15 myGradeBook.displayGradeReport(); // display report based on grades 16 } // end main 17 } // end class GradeBookTest

2005 Pearson Education, Inc. All rights reserved.

Welcome to the grade book for CS101 Introduction to Java Programming! Enter the integer grades in the range 0-100. Type the end-of-file indicator to terminate input: On UNIX/Linux/Mac OS X type <ctrl> d then press Enter On Windows type <ctrl> z then press Enter 99 92 45 57 63 71 76 85 90 100 ^Z Grade Report: Total of the 10 grades entered is 778 Class average is 77.80 Number of students who received each grade: A: 4 B: 1 C: 2 D: 1 F: 2

47

Outline

GradeBookTest.java

(2 of 2)

Program output

2005 Pearson Education, Inc. All rights reserved.

48

Software Engineering Observation 5.2

Provide a default case in switch statements. Including a default case focuses you on the need to process exceptional conditions.

2005 Pearson Education, Inc. All rights reserved.

49

Fig. 5.11 | switch multiple-selection statement UML activity diagram with break statements.

2005 Pearson Education, Inc. All rights reserved.

5.6 switch Multiple-Selection Statement (Cont.)


Expression in each case
Constant integral expression
Combination of integer constants that evaluates to a constant integer value

50

Character constant
E.g., A, 7 or $

Constant variable
Declared with keyword final

2005 Pearson Education, Inc. All rights reserved.

51

5.7 break and continue Statements


break/continue
Alter flow of control

break statement
Causes immediate exit from control structure
Used in while, for, dowhile or switch statements

continue statement
Skips remaining statements in loop body Proceeds to next iteration
Used in while, for or dowhile statements

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

// Fig. 5.12: BreakTest.java // break statement exiting a for statement. public class BreakTest { public static void main( String args[] ) Loop 10 times { int count; // control variable also used after Exit loop for terminates statement (break) for ( count = 1; count <= 10; count++ ) // loop 10 times { if ( count == 5 ) // if count is 5, break; // terminate loop System.out.printf( "%d ", count ); } // end for System.out.printf( "\nBroke out of loop at count = %d\n", count ); } // end main } // end class BreakTest

52

Outline

when count equals 5

BreakTest.java Line 9 Lines 11-12

1 2 3 4 Broke out of loop at count = 5

Program output

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

// Fig. 5.13: ContinueTest.java // continue statement terminating an iteration of a for statement. public class ContinueTest { public static void main( String args[] ) {

53

Outline

Loop 10 times
ContinueTest.java

Skip line and proceed to for ( int count = 1; count <= 10; count++ ) // loop 10 12 times { line 7 when count equals 5 if ( count == 5 ) // if count is 5, continue; // skip remaining code in loop
System.out.printf( "%d ", count ); } // end for

Line 7 Lines 9-10

15 System.out.println( "\nUsed continue to skip printing 5" ); 16 } // end main 17 } // end class ContinueTest 1 2 3 4 6 7 8 9 10 Used continue to skip printing 5

Program output

2005 Pearson Education, Inc. All rights reserved.

54

Software Engineering Observation 5.3


Some programmers feel that break and continue violate structured programming. Since the same effects are achievable with structured programming techniques, these programmers do not use break or continue.

2005 Pearson Education, Inc. All rights reserved.

55

5.8 Logical Operators


Logical operators
Allows for forming more complex conditions
Combines simple conditions

Java logical operators


&& (conditional AND)
|| (conditional OR) & | (boolean logical AND) (boolean logical inclusive OR)

^
!

(boolean logical exclusive OR)


(logical NOT)

2005 Pearson Education, Inc. All rights reserved.

56

5.8 Logical Operators (Cont.)


Conditional AND (&&) Operator
Consider the following if statement
if ( gender == FEMALE && age >= 65 ) ++seniorFemales;

Combined condition is true


if and only if both simple conditions are true

Combined condition is false


if either or both of the simple conditions are false

2005 Pearson Education, Inc. All rights reserved.

57

expression1 expression2 expression1 && expression2


false false true true false true false true False False False True

Fig. 5.14 | && (conditional AND) operator truth table.

2005 Pearson Education, Inc. All rights reserved.

58

5.8 Logical Operators (Cont.)


Conditional OR (||) Operator
Consider the following if statement
if ( ( semesterAverage >= 90 ) || ( finalExam >= 90 ) System.out.println( Student grade is A );

Combined condition is true


if either or both of the simple condition are true

Combined condition is false


if both of the simple conditions are false

2005 Pearson Education, Inc. All rights reserved.

59

expression1
false false true true

expression2
false true false true

expression1 || expression2
false true true true

Fig. 5.15 | || (conditional OR) operator truth table.

2005 Pearson Education, Inc. All rights reserved.

60

5.8 Logical Operators (Cont.)


Short-Circuit Evaluation of Complex Conditions
Parts of an expression containing && or || operators are evaluated only until it is known whether the condition is true or false E.g., ( gender == FEMALE ) && ( age >= 65 )
Stops immediately if gender is not equal to FEMALE

2005 Pearson Education, Inc. All rights reserved.

61

Common Programming Error 5.8


In expressions using operator &&, a conditionwe will call this the dependent condition-may require another condition to be true for the evaluation of the dependent condition to be meaningful. In this case, the dependent condition should be placed after the other condition, or an error might occur. For example, in the expression ( i != 0 ) && ( 10 / i == 2 ), the second condition must appear after the first condition, or a divideby-zero error might occur.
2005 Pearson Education, Inc. All rights reserved.

62

5.8 Logical Operators (Cont.)


Boolean Logical AND (&) Operator
Works identically to &&
Except & always evaluate both operands

Boolean Logical OR (|) Operator


Works identidally to ||
Except | always evaluate both operands

2005 Pearson Education, Inc. All rights reserved.

63

Error-Prevention Tip 5.4


For clarity, avoid expressions with side effects in conditions. The side effects may look clever, but they can make it harder to understand code and can lead to subtle logic errors.

2005 Pearson Education, Inc. All rights reserved.

64

5.8 Logical Operators (Cont.)


Boolean Logical Exclusive OR (^)
One of its operands is true and the other is false
Evaluates to true

Both operands are true or both are false


Evaluates to false

Logical Negation (!) Operator


Unary operator

2005 Pearson Education, Inc. All rights reserved.

65

expression1
false false true true

expression2
false true false true

expression1 ^ expression2
false true true false

Fig. 5.16 | ^ (boolean logical exclusive OR) operator truth table.

2005 Pearson Education, Inc. All rights reserved.

66

expression
false true

!expression
true false

Fig. 5.17 |! (logical negation, or logical NOT) operator truth table.

2005 Pearson Education, Inc. All rights reserved.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

// Fig. 5.18: LogicalOperators.java // Logical operators. public class LogicalOperators { public static void main( String args[] ) { // create truth table for && (conditional AND) operator System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Conditional AND (&&)", "false && false", ( false && false ), "false && true", ( false && true ), "true && false", ( true && false ), "true && true", ( true && true ) ); // create truth table for || (conditional OR) operator System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Conditional OR (||)", "false || false", ( false || false ), "false || true", ( false || true ), "true || false", ( true || false ), "true || true", ( true || true ) ); // create truth table for & (boolean logical AND) operator System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logical AND (&)", "false & false", ( false & false ), "false & true", ( false & true ), "true & false", ( true & false ), "true & true", ( true & true ) );

67

Outline

LogicalOperators. java

(1 of 3) Lines 9-13 Conditional AND truth table Lines 16-20

Lines 23-27 Conditional OR truth table

Boolean logical AND truth table


2005 Pearson Education, Inc. All rights reserved.

29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

// create truth table for | (boolean logical inclusive OR) operator System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logical inclusive OR (|)", "false | false", ( false | false ), "false | true", ( false | true ), "true | false", ( true | false ), "true | true", ( true | true ) ); // create truth table for ^ (boolean logical exclusive OR) operator System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logical exclusive OR (^)", "false ^ false", ( false ^ false ), "false ^ true", ( false ^ true ), "true ^ false", ( true ^ false ), "true ^ true", ( true ^ true ) ); // create truth table for ! (logical negation) operator System.out.printf( "%s\n%s: %b\n%s: %b\n", "Logical NOT (!)", "!false", ( !false ), "!true", ( !true ) ); } // end main

68

Outline
Boolean LogicalOperators. logical inclusive ORjava truth table (2 of 3) Lines 30-35 Boolean logical exclusive OR truth table Lines 38-43

Lines 46-47 Logical negation truth table

49 } // end class LogicalOperators

2005 Pearson Education, Inc. All rights reserved.

Conditional AND (&&) false && false: false false && true: false true && false: false true && true: true Conditional OR (||) false || false: false false || true: true true || false: true true || true: true Boolean logical AND (&) false & false: false false & true: false true & false: false true & true: true Boolean logical inclusive OR (|) false | false: false false | true: true true | false: true true | true: true Boolean logical exclusive OR (^) false ^ false: false false ^ true: true true ^ false: true true ^ true: false Logical NOT (!) !false: true !true: false

69

Outline

LogicalOperators. java

(3 of 3) Program output

2005 Pearson Education, Inc. All rights reserved.

70

Operators
++ -++ (type) * / + < <= == != & ^ | && || ?: = += + % > >= !

Associativity Type
right to left right to left left to right left to right left to right left to right left to right left to right left to right left to right left to right right to left right to left unary postfix unary prefix multiplicative additive relational equality boolean logical AND boolean logical exclusive OR boolean logical inclusive OR conditional AND conditional OR conditional assignment

-=

*=

/=

%=

Fig. 5.19 | Precedence/associativity of the operators discussed so far.

2005 Pearson Education, Inc. All rights reserved.

You might also like