Top Banner
Boolean expressions Boolean expressions Conditional statements Conditional statements and expressions and expressions
46

Boolean expressions Conditional statements and expressions.

Dec 28, 2015

Download

Documents

Wesley Heath
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Boolean expressions Conditional statements and expressions.

Boolean expressionsBoolean expressionsConditional statements and Conditional statements and

expressionsexpressions

Page 2: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

I weighed a pound of pennies and found I weighed a pound of pennies and found there was exactly 160.there was exactly 160.

160 is an integer.160 is an integer.int exact = 160;int exact = 160;

But nothing stops me from changing it.But nothing stops me from changing it. It is also a constant that I never want to It is also a constant that I never want to

change.change.finalfinal int exact = 160; int exact = 160;

So let’s write a guessing game.So let’s write a guessing game.

Page 3: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing gameimport java.util.Scanner;import java.util.Scanner;

public class GuessingGame {public class GuessingGame {public static void main ( String s[] ) {public static void main ( String s[] ) {

final int exact = 160;final int exact = 160;Scanner in = new Scanner( System.in );Scanner in = new Scanner( System.in );//prompt for a guess//prompt for a guessSystem.out.print( “Guess the # of pennies in a pound. “ );System.out.print( “Guess the # of pennies in a pound. “ );int guess = in.nextInt();int guess = in.nextInt();//check the answer//check the answer// If guess and exact are equal, then let them know.// If guess and exact are equal, then let them know.// Otherwise, let them know that their guess was incorrect.// Otherwise, let them know that their guess was incorrect.

(We currently don’t have the language tools to do this!)(We currently don’t have the language tools to do this!)

in.close();in.close();}}

}}

Page 4: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing gameimport java.util.Scanner;import java.util.Scanner;

public class GuessingGame {public class GuessingGame {public static void main ( String s[] ) {public static void main ( String s[] ) {

final int exact = 160;final int exact = 160;Scanner in = new Scanner( System.in );Scanner in = new Scanner( System.in );//prompt for a guess//prompt for a guessSystem.out.print( “Guess the # of pennies in a pound. “ );System.out.print( “Guess the # of pennies in a pound. “ );int guess = in.nextInt();int guess = in.nextInt();//check the answer//check the answerif (guess==exact)if (guess==exact) System.out.println( “You are correct!” );System.out.println( “You are correct!” );elseelse System.out.println( “Nope.” );System.out.println( “Nope.” );

in.close();in.close();}}

}}

Page 5: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

……//check the answer//check the answerif (guess==exact)if (guess==exact) System.out.println( “You are correct!” );System.out.println( “You are correct!” );elseelse System.out.println( “Nope.” );System.out.println( “Nope.” );……

== is a boolean (true or false) operator== is a boolean (true or false) operator It tests for equality.It tests for equality.

A==B is a boolean expressionA==B is a boolean expression The result of this expression is either true or false.The result of this expression is either true or false.

Page 6: Boolean expressions Conditional statements and expressions.

George BooleGeorge Boole

2 November 1815 – 8 2 November 1815 – 8 December 1864December 1864

an English mathematician an English mathematician and philosopherand philosopher

As the inventor of Boolean As the inventor of Boolean logic—the basis of modern logic—the basis of modern digital computer logic—digital computer logic—Boole is regarded in Boole is regarded in hindsight as a founder of hindsight as a founder of the field of computer the field of computer science.science.

Page 7: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

Let’s accept a guess that’s 160 Let’s accept a guess that’s 160 ±± 10%. 10%.

Page 8: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

Let’s accept a guess that’s 160 Let’s accept a guess that’s 160 ±± 10%. 10%.So let’s define two more constants – the So let’s define two more constants – the

minimum and the maximum that we’ll minimum and the maximum that we’ll accept.accept.

Page 9: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

Let’s accept a guess that’s 160 Let’s accept a guess that’s 160 ±± 10%. 10%.So let’s define two more constants – the So let’s define two more constants – the

minimum and the maximum that we’ll minimum and the maximum that we’ll accept.accept.final int exact = 160;final int exact = 160;

final int max = exact + exact/10;final int max = exact + exact/10;

final int min = exact - exact/10;final int min = exact - exact/10;

Page 10: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

Now we must change the check to include the Now we must change the check to include the acceptable range.acceptable range.

……

//check the answer//check the answer

if (guess==exact)if (guess==exact)

System.out.println( “You are correct!” );System.out.println( “You are correct!” );

elseelse

System.out.println( “Nope.” );System.out.println( “Nope.” );

……

Page 11: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game Now we must change the check to include the acceptable Now we must change the check to include the acceptable

range.range.……//check the answer//check the answerif (guess==exact)if (guess==exact) System.out.println( “You are correct!” );System.out.println( “You are correct!” );else if (guess<min)else if (guess<min) System.out.println( “Nope.” );System.out.println( “Nope.” );else if (guess>max)else if (guess>max) System.out.println( “Nope.” );System.out.println( “Nope.” );elseelse System.out.println( “Close enough.” );System.out.println( “Close enough.” );……

Page 12: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

……//check the answer//check the answerif (guess==exact)if (guess==exact) System.out.println( “You are correct!” );System.out.println( “You are correct!” );else if (guess<min)else if (guess<min) System.out.println( “Nope.” );System.out.println( “Nope.” );else if (guess>max)else if (guess>max) System.out.println( “Nope.” );System.out.println( “Nope.” );elseelse System.out.println( “Close enough.” );System.out.println( “Close enough.” );……

Note that we write “Nope.” if the first boolean expression or the second boolean expression is true.

Wouldn’t it be nice if we had a boolean operator for or?

Page 13: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

……

//check the answer//check the answer

if (guess==exact)if (guess==exact)

System.out.println( “You are correct!” );System.out.println( “You are correct!” );

else if (guess<min | guess>max)else if (guess<min | guess>max)

System.out.println( “Nope.” );System.out.println( “Nope.” );

elseelse

System.out.println( “Close enough.” );System.out.println( “Close enough.” );

……

boolean operator for or

Page 14: Boolean expressions Conditional statements and expressions.

Penny guessing gamePenny guessing game

……

//check the answer//check the answer

if (guess==exact)if (guess==exact)

System.out.println( “You are correct!” );System.out.println( “You are correct!” );

else if (else if (guess>=min & guess<=maxguess>=min & guess<=max))

System.out.println( “System.out.println( “Close enough.Close enough.” );” );

elseelse

System.out.println( “System.out.println( “Nope.Nope.” );” );

……

boolean operator for and

Page 15: Boolean expressions Conditional statements and expressions.

Operators used in boolean Operators used in boolean expressionsexpressions

Unary (i.e., op A):Unary (i.e., op A): !! notnot

Binary (i.e., A op B):Binary (i.e., A op B): <, >, <=, >=<, >, <=, >= lt, gt, le, gelt, gt, le, ge ==, !===, != equals, not equalequals, not equal && andand || oror &&&& andand |||| oror

This is also the precedence from highest to lowest.This is also the precedence from highest to lowest.

Page 16: Boolean expressions Conditional statements and expressions.

Truth table for ANDTruth table for AND

A & B AT F

B T T FF F F

Page 17: Boolean expressions Conditional statements and expressions.

Truth table for ORTruth table for OR

A | B AT F

B T T TF T F

Page 18: Boolean expressions Conditional statements and expressions.

Truth table for NOTTruth table for NOT

!A AT FF T

Page 19: Boolean expressions Conditional statements and expressions.

COMPARING STRINGSCOMPARING STRINGS

Page 20: Boolean expressions Conditional statements and expressions.

Comparing stringsComparing strings

== doesn’t work (as you expect) so please == doesn’t work (as you expect) so please don’t use it for comparing strings. (But use don’t use it for comparing strings. (But use == for comparing ints or doubles.)== for comparing ints or doubles.)

Example:Example:String city1 = “Philadelphia”;String city1 = “Philadelphia”;

String city2 = “Phoenix”;String city2 = “Phoenix”; I want to say:I want to say:

if (city1==city2)if (city1==city2) but I can’t!but I can’t!

Page 21: Boolean expressions Conditional statements and expressions.

Comparing stringsComparing strings

Use .equals() instead:Use .equals() instead:

if (city1.equals(city2)) …if (city1.equals(city2)) …

.equals() is case sensitive (i.e., NYC is not .equals() is case sensitive (i.e., NYC is not the same as NyC)the same as NyC)

.equalsIgnoreCase() is not case sensitive.equalsIgnoreCase() is not case sensitive

if (city1.equalsIgnoreCase(city2)) …if (city1.equalsIgnoreCase(city2)) …

Page 22: Boolean expressions Conditional statements and expressions.

if’s and blocksif’s and blocks

Sometimes we wish to execute more than one Sometimes we wish to execute more than one statement for an statement for an ifif statement. statement.if (x==y)if (x==y)

singleStatement;singleStatement;

if (x==y) if (x==y) {{

statement1;statement1;

statement2;statement2;

……

statementn;statementn;

}}

{

s1;

s2;

sn;

}

This is called a block.

Page 23: Boolean expressions Conditional statements and expressions.

if’s and blocksif’s and blocks

Common mistake: Are the following all the Common mistake: Are the following all the same (or are they different)?same (or are they different)?

if (x==y)System.out.println( "hello" );

System.out.println( "there" );

if (x==y)System.out.println( "hello" );

System.out.println( "there" );

Page 24: Boolean expressions Conditional statements and expressions.

if’s and blocksif’s and blocks

Common mistake: Are the following all the Common mistake: Are the following all the same (or are they different)?same (or are they different)?

if (x==y)System.out.println( "hello" );

System.out.println( "there" );

if (x==y) {System.out.println( "hello" );

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

Page 25: Boolean expressions Conditional statements and expressions.

if’s and blocksif’s and blocks

Common mistake: Are the following all the Common mistake: Are the following all the same (or are they different)?same (or are they different)?

if (x==y) {System.out.println( "hello" );

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

if (x==y) {System.out.println( "hello" );

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

Page 26: Boolean expressions Conditional statements and expressions.

if’s and blocksif’s and blocks

Common mistake: Are the following all the Common mistake: Are the following all the same (or are they different)?same (or are they different)?

if (x==y) {System.out.println( "hello" );

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

if (x==y) {System.out.println( "hello" );

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

Page 27: Boolean expressions Conditional statements and expressions.

if‘s and blocksif‘s and blocks

Rule(s):Rule(s):Don’t be confused/misled by indentation!Don’t be confused/misled by indentation!The purpose of indentation is to make code The purpose of indentation is to make code

more more humanlyhumanly readable. readable. Indentation does not matter to the compiler at Indentation does not matter to the compiler at

all.all.Blocks (not indentation) group lines of code Blocks (not indentation) group lines of code

together.together.

Page 28: Boolean expressions Conditional statements and expressions.

if examplesif examples

if (x == 2 & y < 10)if (x == 2 & y < 10)x = 10;x = 10;

if (x == 2) {if (x == 2) {x = 10;x = 10;

}}

if (x == y) {if (x == y) {x = 0;x = 0;y = 1;y = 1;

}}

Page 29: Boolean expressions Conditional statements and expressions.

if examplesif examples

if (x==y) {if (x==y) {

x = 0;x = 0;

y = 1;y = 1;

} else {} else {

x = 1;x = 1;

y = 0;y = 0;

}}

Page 30: Boolean expressions Conditional statements and expressions.

if examplesif examples

if (x==1) {if (x==1) {x = 2;x = 2;y = 3;y = 3;

} else if (x==2) {} else if (x==2) {x = 3;x = 3;y = 4;y = 4;

} else {} else {x = 1;x = 1;y = 0;y = 0;

}}

Page 31: Boolean expressions Conditional statements and expressions.

if examplesif examples

if (x==1) {if (x==1) {x = 2;x = 2;y = 3;y = 3;

} else if (x==2) {} else if (x==2) {x = 3;x = 3;y = 4;y = 4;

} else { //we don’t need to restate } else { //we don’t need to restate else if (x!=1 && x!=2)else if (x!=1 && x!=2)

x = 1;x = 1;y = 0;y = 0;

}}

Page 32: Boolean expressions Conditional statements and expressions.

if-else form in generalif-else form in general

if (conds1)if (conds1)one-statement; or { block-of-statements }one-statement; or { block-of-statements }

else if (conds2)else if (conds2)one-statement; or { block-of-statements }one-statement; or { block-of-statements }

……else if (condsn)else if (condsn)

one-statement; or { block-of-statements }one-statement; or { block-of-statements }elseelse

one-statement; or { block-of-statements }one-statement; or { block-of-statements }

Page 33: Boolean expressions Conditional statements and expressions.

if-else formif-else form

Same or different?Same or different?

int x = 5;

if (x >= 4)System.out.println( "A" );

if (x >=5)System.out.println( "B" );

int x = 5;

if (x >= 4)System.out.println( "A" );

else if (x >=5)System.out.println( "B" );

Page 34: Boolean expressions Conditional statements and expressions.

if-else formif-else form

Same or different?Same or different?

int x = 5;

if (x >= 4) {System.out.println( "A" );

} else if (x >=5) {System.out.println( "B" );

}

int x = 5;

if (x >= 4)System.out.println( "A" );

else if (x >=5)System.out.println( "B" );

Page 35: Boolean expressions Conditional statements and expressions.

if-else formif-else form

Same or different?Same or different?int x = 5;

if (x >= 4) {System.out.println( "A" );

} else if (x >=5) {System.out.println( "B" );

}

int x = 5;

if (x >= 4){

System.out.println( "A" );}else if (x >=5){

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

Page 36: Boolean expressions Conditional statements and expressions.

Boolean type, and boolean Boolean type, and boolean variablesvariables

boolean b;boolean b;b = true;b = true;b = false;b = false;

int x = 10;int x = 10;int y = 9;int y = 9;b = (x==y);b = (x==y);b = (x>y);b = (x>y);

Page 37: Boolean expressions Conditional statements and expressions.

Boolean I/OBoolean I/O

boolean answer = in.nextBoolean();boolean answer = in.nextBoolean();You must type in either You must type in either truetrue or or falsefalse and hit and hit

return (enter).return (enter).

System.out.println( answer );System.out.println( answer ); //works as too //works as too

Page 38: Boolean expressions Conditional statements and expressions.

Conditional operator ?:Conditional operator ?:

Many programs contain code like the Many programs contain code like the following:following:

if (n > 0)if (n > 0)

average = sum / n;average = sum / n;

elseelse

average = 0;average = 0;

Page 39: Boolean expressions Conditional statements and expressions.

Conditional operator ?: exampleConditional operator ?: example

Many programs contain code like the following:Many programs contain code like the following:

int apples = 6;int apples = 6;

if (apples != 1)if (apples != 1)

System.out.printf( "I have %d apples. \n", apples );System.out.printf( "I have %d apples. \n", apples );

elseelse

System.out.printf( "I have %d apple. \n", apples );System.out.printf( "I have %d apple. \n", apples );

int apples = 6;if (apples != 1)

System.out.println( "I have " + apples + " apples." );else

System.out.println( "I have " + apples + " apple." );

(examples use printf and println)

Page 40: Boolean expressions Conditional statements and expressions.

Conditional operator ?:Conditional operator ?:

(boolean-expr) ? expr(boolean-expr) ? exprif-trueif-true : expr : exprif-falseif-false

evaluated if-and-only-if (iff) boolean-expr is true

evaluated iff boolean-expr is false

Page 41: Boolean expressions Conditional statements and expressions.

Conditional operator ?:Conditional operator ?:

if (n > 0)if (n > 0)

average = sum / n;average = sum / n;

elseelse

average = 0;average = 0;

average = (n > 0) ? sum / n : 0;average = (n > 0) ? sum / n : 0;

Page 42: Boolean expressions Conditional statements and expressions.

Conditional operator ?: Conditional operator ?: (example using printf)(example using printf)

int apples = 6;int apples = 6;

if (apples != 1)if (apples != 1)

System.out.printf( "I have %d apples \n", apples );System.out.printf( "I have %d apples \n", apples );

elseelse

System.out.printf( "I have %d apple \n", apples );System.out.printf( "I have %d apple \n", apples );

System.out.printf( "I have %d apple%s \n", apples,System.out.printf( "I have %d apple%s \n", apples,

(apples != 1) ? "s" : "" );(apples != 1) ? "s" : "" );

Page 43: Boolean expressions Conditional statements and expressions.

Conditional operator ?: Conditional operator ?: (example using println)(example using println)

int apples = 6;int apples = 6;

if (apples != 1)if (apples != 1)

System.out.println( "I have " + apples + " apples." );System.out.println( "I have " + apples + " apples." );

elseelse

System.out.println( "I have " + apples + " apple." );System.out.println( "I have " + apples + " apple." );

System.out.printf( "I have " + apples + " apple"System.out.printf( "I have " + apples + " apple"

+ (apples != 1) ? "s" : ""+ (apples != 1) ? "s" : ""

+ "." );+ "." );

Page 44: Boolean expressions Conditional statements and expressions.

Conditional operator ?:Conditional operator ?:

Problem: We have 2 int’s, A and B. We Problem: We have 2 int’s, A and B. We want another int, C, to be set to the want another int, C, to be set to the maximum of A and B.maximum of A and B.

How can we do this with if-else?How can we do this with if-else?

How can we do this with How can we do this with ?:?:??

Page 45: Boolean expressions Conditional statements and expressions.

Conditional operator ?:Conditional operator ?:

Problem: We have 2 int’s, A and B. We Problem: We have 2 int’s, A and B. We want another int, C, to be set to the want another int, C, to be set to the maximum of A and B.maximum of A and B.How can we do this with if-else?How can we do this with if-else?

if (A>B)if (A>B)

C = A;C = A;

elseelse

C = B;C = B;

How can we do this with How can we do this with ?:?:??

Page 46: Boolean expressions Conditional statements and expressions.

Conditional operator ?:Conditional operator ?:

Problem: We have 2 int’s, A and B. We Problem: We have 2 int’s, A and B. We want another int, C, to be set to the want another int, C, to be set to the maximum of A and B.maximum of A and B.How can we do this with if-else?How can we do this with if-else?

if (A>B)if (A>B)

C = A;C = A;

elseelse

C = B;C = B;How can we do this with How can we do this with ?:?:??

C = (A>B) ? A : B;C = (A>B) ? A : B;