Variables Conditionals Boolean Expressions Conditional Statements How a program produces different...
-
Upload
neal-garwood -
Category
Documents
-
view
225 -
download
0
Transcript of Variables Conditionals Boolean Expressions Conditional Statements How a program produces different...
Conditionals
csc 233animation scripting
Conditionals
Variables Conditionals
Boolean Expressions Conditional Statements
▪ How a program produces different results based on varying circumstances
if, else if, else Boolean variables
2
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
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
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
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
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
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
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
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); }
}
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
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
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
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!
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}
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}
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:}
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
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
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
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);}
Second half
Multiple Rollovers Boolean Variables A bouncing ball Physics 101
22
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
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”);
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.
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;}
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);}
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
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