Variables Conditionals Boolean Expressions Conditional Statements How a program produces different...

29
Conditionals csc 23 animation scripting

Transcript of Variables Conditionals Boolean Expressions Conditional Statements How a program produces different...

Page 1: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Conditionals

csc 233animation scripting

Page 2: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Conditionals

Variables Conditionals

Boolean Expressions Conditional Statements

▪ How a program produces different results based on varying circumstances

if, else if, else Boolean variables

2

Page 3: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

What is a Boolean Expression? Something that resolves to either

true or false (yes or no) Not maybe…

▪ Computers think in 1’s and 0’s

Remember truth tables 1 = ON = True 0 = OFF = False

Usually based on a comparison Are you 21 years old? Is changeCount less than 5? Is myScore between 80 and 89? Is lastName ‘Smith’?

3

A B Output

0 0 0

0 1 0

1 0 0

1 1 1

A B Output

0 0 0

0 1 1

1 0 1

1 1 1

AND

OR

Page 4: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Boolean Comparison Operators Similar to Algebra

> greater than < less than >= greater than or equal to <= less than or equal to == equality (equal to)

▪ Note: ‘=‘ is the ‘assignment’ operator: x = 5;

!= inequality (not equal to)

Learning Processing: Slides by Don Smith 4

Page 5: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Boolean Expressions and if

What is a Boolean Expression? A comparison that results in either a true or a

false Where do I use it?

Usually in parenthesis, after an if: if (age >= 21)

▪ // True Action

if (mouseX < width/2)▪ // True Action

Only do ‘Action’ if condition is True

5

Action

Condition

True

False

Page 6: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Two-way conditionals: if else

Use else for ‘false’ actions after an if test: ‘Binds’ with the closest if: if (age >= 21)

▪ // True Action

else // age < 21▪ // False Action

Take one of the two paths: True or False

Good idea to use curly braces: if (age >= 21){

▪ // True Action

} else {▪ // False Action

} 6

TrueAction

Condition

True

False

FalseAction

Page 7: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Multiple Actions 2 options if else

What if I have more than one thing to do if true? Make a ‘block’ of code after the if: if (age >= 21) {

▪ // True Action 1

▪ // True Action 2

} else▪ // False Action

Indentation is for humans if (age >= 21)

▪ // True Action 1

▪ // True Action 2

Without the curly braces:▪ Only the first statement after a conditional is executed

▪ True Action 2 is executed no matter what age is!

And don’t forget to ‘match’ your curly braces! 7

TrueAction 1

Condition

True

False

FalseAction

TrueAction 2

Page 8: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Multiple-Way Branching: else if

What if you want more than two paths? Use else if: if (age >= 21)

▪ // First True Action

else if (age > 18)▪ // Second True Action

else if (age > 5)▪ // Third True Action

Only one action done▪ Then go to the ‘bottom’

8

First TrueAction

FirstConditio

n

False

True

SecondConditio

n

False

True

True

False

Second True

Action

Third TrueAction

ThirdConditio

n

Page 9: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

else if with else at the end

Two ‘true’ paths and one ‘neither’ path? Use else if: if (age >= 21)

▪ // First True Action

else if (age > 18)▪ // Second True Action

else▪ // Both False Action

9

First TrueAction

FirstConditio

n

False

True

Second True

ActionFalse

True

SecondConditio

n

Both FalseAction

Page 10: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Try This: else if else

An example of Multi-way Branching

Where the mouse is determines the background color

10

void setup(){ size (500, 500); }void draw(){ if (mouseX < width/3){ background(255); } else if (mouseX < 2*width/3){ background(127); } else { background(0); }

}

Page 11: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Multi-way Branching: Be careful how you arrange tests.

11

// vs 2. How will this evaluate?

int x = 75;

void setup() { // set up start if (x > 25) { println( x + " is greater than 25"); } else if (x > 50) { println( x + " is greater than 50"); } else { println( x + " is 25 or less"); }} // setup close

// vs 1. How will this evaluate?

int x = 75;

void setup() { // set up start if (x > 50) { println( x + " is greater than 50"); } else if (x > 25) { println( x + " is greater than 25"); } else { println( x + " is 25 or less"); }} // setup close

Page 12: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Try this:Gradebook Application

Determine the letter grade for a number 0-100 90 – 100: A 80 – 89.999 B 70 – 79.999 C 60 – 69.999 D Below 60: F

How would you plan/code a solution? What would you test for first? What second? How many tests do you need?

12

Page 13: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Numeric Range testing You often have to determine if a number

is in a specific range (min to max) Example: Which range is a number in?

0-25: Print “Young” 26-50: Print “Mid-Age” >50: Print “Mature”

How would you plan/code a solution? What would you test for first? What second? Can this be done with only two tests?

13

Page 14: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Try This:if else Examples

14

float r = 150; // variablesfloat g = 0;float b = 0;

void setup() { size(200,200);}void draw() { background(r,g,b); stroke(255); // Line down center line(width/2, 0, width/2, height); if (mouseX > width/2) // If right r = r + 1; // more red else // Else left r = r - 1; // less red if (r > 255) // Range Check r r = 255; if (r < 0) // Range Check r r = 0;}

else ‘binds’ with closest ifYou can use if with no else clause!

Page 15: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Range check with constrain( )

15

float r = 150; // variablesfloat g = 0;float b = 0;

void setup() { size(200,200);}void draw() { background(r,g,b); stroke(255); // Line down center line(width/2, 0, width/2, height); if (mouseX > width/2) // If right r = r + 1; // more red else // Else left r = r - 1; // less red r = constrain(r,0,255); // Range Check r}

Page 16: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Three-way branching

16

float r = 150; // variablesfloat g = 0;float b = 0;

void setup() { size(200,200);}void draw() { background(r,g,b); stroke(255); line(width * 2/3, 0, width * 2/3, height); line(width * 1/3, 0, width * 1/3, height); if (mouseX > (width * 2/3)){ // right 3rd r = r + 1; println("r = " + r);} else if (mouseX < (width * 1/3)){ // left 3rd r = r -1; println("r = " + r);} else{ // center 3rd ellipse(mouseX, mouseY, 30,30); println("r = " + r); } r = constrain(r,0,255); // Range Check r}

Page 17: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Exercise: Move a rectangle… but stop!

17

float x = 0;

void setup() { size(200,200);}

void draw() { background(255); fill(0); rect(x,100,20,20); x = x + 1; // Keep x in left half // Conditional version:

// constrain version:}

Page 18: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Logical Operators: AND

Sometimes two (or more) things need to be true before you want to do something

Example: If age >= 16 AND permit == 1

▪ Print “OK to drive” How do we spell ‘AND’? && ‘Nested ifs:’ One if, compound condition

18

int age = 17;int permit = 1;

if (age >= 16) if (permit == 1) print(“OK to Drive”); else print(“Ride the bus”);else print(“Ride the bus”);

int age = 17;int permit= 1;

if (age >= 16 && permit == 1) print(“OK to Drive”);else print(“Ride the bus”);

Remember: else ‘binds’ with closest if (without an else)

A B Output

0 0 0

0 1 0

1 0 0

1 1 1

Page 19: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Logical Operators: OR Sometimes one of (two or more) things is

enough to decide

19

int age = 17;int permit = 1;

if (age >= 18 || (age >= 16 && permit == 1)) print(“OK to Drive”);else print(“Ride the bus”);

A B Output

0 0 0

0 1 1

1 0 1

1 1 1

Page 20: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Logical Operators: OR Sometimes one of (two or more) things is

enough to decide Example:

If age >= 18 OR (age >= 16 AND permit == 1)▪ Print “OK to drive”

How do we spell ‘OR’? || (two vertical bars)

20

int age = 17;int permit = 1;

if (age >= 18 || (age >= 16 && permit == 1)) print(“OK to Drive”);else print(“Ride the bus”);

Note the use of parenthesis to ‘connect’ the AND clause

Page 21: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Exercise:Simple Rollover

21

int x = 50;int y = 50;int w = 100;int h = 75;

void setup() { size(200,200);}

void draw() { background(255); stroke(255); // test if mouse is over the rectangle if ( mouseX.. && mouseY.. && ??? // Change the color of the rectangle rect(x,y,w,h);}

Page 22: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Second half

Multiple Rollovers Boolean Variables A bouncing ball Physics 101

22

Page 23: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Try this:multiple roll overs

Steps: Draw a white background Draw horizontal and vertical lines down the center If mouse is in top left, draw black rectangle in that quadrant If mouse is in top right, draw black rectangle in that quadrant If mouse is in bottom left, draw black rectangle in that quadrant If mouse is in bottom right, draw black rectangle in that quadrant

But how can we tell which quadrant it is in? Upper Left: x = 0 to 99, y = 0 to 99 Upper right: x = 100 to 199, y = 0 to 99 …

23

Page 24: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

boolean variables You may want to ‘remember’ if something

is true or false and store it in a variable Then you can compare it to true or false

Example: If age >= 16 AND permit == true

▪ Print “OK to drive”

24

int age = 17;boolean permit = true;

if (age >= 16 && permit == true) print(“OK to Drive”);else print(“Ride the bus”);

Page 25: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Try this:A Button as a switch

// Declare variablesboolean click = false; // assigns a value of false to booleanint circleX = 0;int circleY = 0;

void setup() { size(200,200);}

void draw() { background(100); stroke(255); fill(0); ellipse(circleX, circleY, 50, 50);

// Move the circle only after a click if (click){ // if Boolean click is true (pressed) circleX = circleX + 1; // then add 1 to x and y pos. circleY = circleY + 1; println (circleX); }else{ // if click is not pressed do nothing circleX = circleX; circleY = circleY; }}

void mousePressed() { // change the value of the Boolean to click = !click; // the opposite: if true then false, if false then true/

// Location of the mouse doesn’t matter}

25

This sketch will use a Boolean value as a variable which can then be used to act like a switch to activate or deactivate the movement of the object.New idea is “!” or not equal to.click = !click;This makes the value of click become its opposite. In this case it toggles back and forth from true to false each time the mouse button is pressed.try it out for yourself.

Page 26: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Try this : Modulation A bouncing ‘ball’

Use a variable speed which can be positive or negative.

Change speed to negative if we bounce off the right edge.

26

int circleX = 0;int speed = 1;void setup() { size(200,200); smooth();}void draw() { background(255); circleX = circleX + speed; if ( circleX > width || circleX < 0) speed = speed * -1; // reverse course // Display the circle at x location stroke(0); fill(175); ellipse(circleX, 100, 32, 32); }

// What will this do?void mousePressed() { speed = speed + 1;}

Page 27: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

A note about debugging…

You can print the variable speed to see what it is doing.

Use println(speed) if you want one number per line.

27

int circleX = 0;int speed = 1;void setup() { size(200,200); smooth();}void draw() { background(255); circleX = circleX + speed; if ( circleX > width || circleX < 0) speed = speed * -1; // reverse course // Display the circle at x location stroke(0); fill(175); ellipse(circleX, 100, 32, 32); }

void mousePressed() { speed = speed + 1; println(speed);}

Page 28: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Summary Conditionals allow you to control the flow

if, else, else if allow many options

Boolean expressions are used inside if(… ) tests Resolve to either true or false

Boolean expressions use comparison operators: >, <, >=, <=, ==, !=

Boolean variables can be set to true or false, and also used in conditional expressions

AND and OR (&& and ||) are used to combine conditionals

You can use print() and println()to help debug your programs while you are testing them

28

Page 29: Variables Conditionals Boolean Expressions Conditional Statements How a program produces different results based on varying circumstances if, else if,

Exercises 1.) Take your project 1 design and add more

functionality to it that applies these concepts. Create roll over actions, movement around the screen, conditions, mouse interactivity. Build on to your project with this new knowledge.

2.) Create a mock web navigation that utilizes roll over functionality and conditional statements to reveal content, create animation or draw images to the screen. Look ahead at text to add text to the screen also look at how to import images to your canvas and create web links.

29