31
TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming Java: A Multimedia Approach by M. Guzdial and B. Ericson, and instructor materials prepared by B. Ericson.

TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Embed Size (px)

Citation preview

Page 1: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

TOPIC 10

THE IF STATEMENT

1

Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson, andinstructor materials prepared by B. Ericson.

Page 2: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Outline2

How to use conditionals Picture manipulation using conditionals:

Edge detectionSepia toningChromakey (Blue-screening)

Page 3: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Making Decisions3

Computer programs often have to make decisions Taking different actions depending on some

condition Examples:

If the amount you want to withdraw is less than your bank balance, you are allowed to make the withdrawal, otherwise you are not

If a number is negative, you cannot take its square root

Page 4: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Making Decisions4

More examples: If a turtle is too close to the edge of its

world, it cannot move forward the specified distance

If a red value for a pixel is already 255, you can’t increase it

Making decisions in high-level programming languages is called conditional execution and is done using the if statement and if-else statement

Page 5: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

If Statement 5

A statement or block of statements is executed only if some condition is true

If the condition is false, execution falls through to the next statement following the if statement

Next statement

if (condition)

true

false

Statement or block

Page 6: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

If Statement Syntax6

We may want a single statement to be executed if the condition is true:

if (condition) statement

We may want a block of statements to be executed if the condition is true:

if (condition){ statement … statement }

Safer to always use braces, even if a single statement

For readability, make sure you line up the braces

Page 7: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

If - else Statement7

Using an if and else, we can do one thing if the condition is trueor a different thing if the condition is false

Next statement

if (condition)

true

false

Statement or block

Statement or block

else

Page 8: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

If - else Statement Syntax8

If the condition is true, statement1 (or block of statements) is executed, otherwise statement2 (or block of statements) is executed

if (condition) statement1else statement2

Example:if (x < y)

System.out.println("y is larger");else

System.out.println("x is larger");

Page 9: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Conditional Statement Example

9

Bank withdrawal example:

// amount: the amount you want to withdraw// balance: your account balance

if (amount <= balance) { balance = balance – amount; }

System.out.println("Balance is " + balance);

What happens if amount > balance?

Page 10: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Conditional Statement Example

10

To let the user know that the withdrawal was not allowedif (amount <= balance){

balance = balance – amount;System.out.println("New balance is " +

balance);}else{

System.out.println("Sorry, you are trying to withdraw $" + amount + " and your balance is only $" + balance); }

Page 11: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Using Conditions in Pictures11

Choosing which pixels to manipulate in a picture To remove red-eye in an image To create sepia-toned images To posterize images (reduce the number of

color) Do blue-screen effect etc.

Page 12: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Simple Color Replacement12

Suppose we wanted to change all of the white in an image to a “bluer” white

Algorithm: For each pixel in the picture

If the pixel’s color is whiteDecrease the red and green in this

color

Page 13: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Simple Color Replacement Method

13

public void makeWhiteMoreBlue() {for (int x = 0; x < this.getWidth(); x++) { for (int y = 0; y < this.getHeight(); y++) {

Pixel pixelObj = this.getPixel(x,y); int red = pixelObj.getRed(); int green = pixelObj.getGreen(); int blue = pixelObj.getBlue(); if (red == 255 && green == 255 && blue == 255) { pixelObj.setRed(200); pixelObj.setGreen(200); } } }}

Page 14: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

A better method14

Allow more flexibility: Replace the color when all red, green and

blue are above a threshold In this case, reduce red and green, and

increase blue

Page 15: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Simple Color Replacement Method

15

public void makeWhiteMoreBlue() {for (int x = 0; x < this.getWidth(); x++) { for (int y = 0; y < this.getHeight(); y++) {

Pixel pixelObj = this.getPixel(x,y); int red = pixelObj.getRed(); int green = pixelObj.getGreen(); int blue = pixelObj.getBlue(); if (red >= 200 && green >= 200 && blue >= 200) { pixelObj.setRed(200); pixelObj.setGreen(200); pixelObj.setBlue(255); } } }}

Page 16: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Multiple if statements16

Suppose we are doing different things based on a set of ranges, forexample:0 <= x <= 55 < x <= 1010 < x

if (0 <= x && x <= 5)statement or block

if (5 < x && x <= 10)statement or block

if (10 < x)statement or block

Page 17: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Using “else if” for > 2 Options

17

Or we can use several if-else statements

You don’t need to check if x > 5, since the first if block would have been executed if it was <= 5

if (0 <= x && x <= 5)statement or block

else if (x <= 10)statement or block

else // what must x be?statement or block

Page 18: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Sepia-Toned Pictures18

They have a yellowish tint, used to make things look old

Page 19: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Sepia-Toned Algorithm19

First make the picture grayscale Change the darkest grays (shadows) to be

even darker Make the middle grays a brown color

By reducing the blue Make the lightest grays (highlights) a bit

yellow By increasing red and green Or decreasing blue (less than before

though) We now have more than 2 possibilities, so we

need to use multiple if statements

Page 20: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Sepia-Toned Method20

public void sepiaTint() { // first change the current picture to grayscale this.grayscale();

// loop through the pixels for (int x = 0; x < this.getWidth(); x++) { for (int y = 0; y < this.getHeight(); y++) { // get the current pixel and its color values Pixel pixelObj = this.getPixel(x,y); int redValue = pixelObj.getRed(); int greenValue = pixelObj.getGreen(); int blueValue = pixelObj.getBlue();

Page 21: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Sepia-Toned Method (continued)

21

// tint the shadows darker if (redValue < 60) { redValue = (int) (redValue * 0.9); greenValue = (int) (greenValue * 0.9); blueValue = (int) (blueValue * 0.9); } // tint the midtones a light brown by reducing the blue else if (redValue < 190) { blueValue = (int) (blueValue * 0.8); } // tint the highlights a light yellow by reducing the blue else { blueValue = (int) (blueValue * 0.9); }

Page 22: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Sepia-Toned Method (continued)

22

// set the colors

pixelObj.setRed(redValue);

pixelObj.setGreen(greenValue);

pixelObj.setBlue(blueValue);

}

}

}

Page 23: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Dangling Else Problem23

Consider this example:if (x > 0)

if (x < 100) System.out.println(“one” );

elseSystem.out.println(“two”);

Suppose x has the value –2. What do you think will be printed?

Page 24: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Dangling Else Problem24

The rule is that an else goes with the closest if indentation makes no difference!

Now what if we had wanted to group the else with the first if ? Use braces:

if (x > 0) {

if (x < 100)System.out.println(“one” );

}else

System.out.println(“two”);

Page 25: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Blue Screen25

The weather announcers on TV are not really standing in front of a changing weather map They are in front of a solid colour

background blue or green (but usually blue – it’s

better for skintones) How do the weather map images appear

behind them? If a pixel’s color is blue, replace it with

color of corresponding pixel from new background image

Also used for special effects in TV and movies

Page 26: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Blue Screen26

Here just a blue sheet was used

Professionally, you need an evenly lit, bright, pure blue background

With nothing blue in the part of the image you want to keep

Page 27: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

New Background27

Page 28: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Algorithm28

Our method will be invoked on an image with a blue screen The blue will be replaced as a background

by another imagepassed in as a parameter

Algorithm: Loop through all the pixels If the pixel color is “blue”

Replace the pixel color with the color from the pixel at the same location in the new background picture

Page 29: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Method29

public void blueScreen(Picture newBackground) { // loop through the columns for (int x=0; x<this.getWidth(); x++) { // loop through the rows for (int y=0; y<this.getHeight(); y++) { // get the current pixel Pixel currPixel = this.getPixel(x,y);

Page 30: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Method (continued)30

/* if the color of the pixel at this location is mostly blue

(blue value greater than red and green combined),

then use new background color at this pixel */ if (currPixel.getRed() + currPixel.getGreen() <

currPixel.getBlue()) { Pixel newPixel = newBackground.getPixel(x,y); currPixel.setColor(newPixel.getColor()); } } } }

Page 31: TOPIC 10 THE IF STATEMENT 1 Notes adapted from Introduction to Computing and Programming with Java: A Multimedia Approach by M. Guzdial and B. Ericson,

Summary31

Conditionals Nested Conditionals Dangling Else

Picture Algorithms that use conditionals