38
Chapter 4 Controlling Execution CSE 1010

Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Embed Size (px)

Citation preview

Page 1: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Chapter 4 Controlling Execution

CSE 1010

Page 2: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

22

Objectives

Evaluate logical expressions– Boolean– Relational

Change the flow of execution– Diagrams (e.g., flowcharts)– Selection: if and switch statements– Iteration: for and while loops

Page 3: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

3

Suppose…

Problem: Assign letter grades for course performance: avg >= 90 gets A 80 <= avg < 90 gets B 70 <= avg < 80 gets C 60 <= avg < 70 gets D avg < 60 gets F

Input: list of student averages

Page 4: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

4

Program Execution

RecallAlgorithm = a step-by-step sequence of

instructions that leads to the solution of a specific problem

Program = implementation of an algorithm in a programming language

So far, all our scripts have executed the statements one-by-one in order, i.e., sequentially

Is that always what we want to do?. . . If not, we need something new…

Page 5: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

5

Example, cont’d

if avg > = 90, then letter = ‘A’else …

i.e., if (expression is true)

execute code for true

elseexecute code for false

avg >= 90?

letter = ‘A’

true

false

doother

Page 6: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

6

General Syntax of the IF statement

if (logical expression 1 is true) execute code block 1

else if (logical expression 2 is true) execute code block 2

…else if (logical expr m is true)

execute code block m

elseexecute code block for no conditions

were true

ONLY ONE code block ever runs

Can only have ONE else

Page 7: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

7

Logical Expressions

Any collection of constants, variables, and operators whose result is a Boolean true or false value

MATLAB prints 1 for true, 0 for falseBut you have to specify values as true

or false

Types: Boolean, relational

Page 8: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

8

Relational Operators

< strictly less than

< = less than or equal to

> strictly greater than

> = greater than or equal to

= = equal to

~ = not equal to

Page 9: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

9

Relational ExamplesA = 3;B = 6;A < Bans 1A > Bans 0A == Bans 0A ~= Bans 1

A = [3 2 1 7];B = [6 5 4 3];A < Bans 1 1 1 0A > Bans 0 0 0 1A == Bans 0 0 0 0A ~= Bans 1 1 1 1

Page 10: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

10

Logical Operators

& element-wise logical AND (vectors)

| element-wise logical OR (vectors)

&& logical AND (scalar)|| logical OR (scalar)

~ unary NOT

Generally, these are the ones most used in conditional expressions

Page 11: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

11

Logical ExamplesA = 4; % DeclarationB = -2; % DeclarationA > 2 && B < 2 % Is A greater than

2 % and is B less than

-2?ans

1C = [3 6 9 12];D = [2 4 8 16];A > 2 && C > D

??? Operands to the || and && operators must be convertible to logical scalar values.

Page 12: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

12

Truth Table

A B A & B A | B ~A ~B

False False FalseFalse FalseFalse TrueTrue TrueTrue

False True FalseFalse TrueTrue TrueTrue FalseFalse

True False FalseFalse TrueTrue FalseFalse TrueTrue

True True TrueTrue TrueTrue FalseFalse FalseFalse

Page 13: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

13

Example 1

A = 4;B = 8;C == (A && B > 2)ans = 1

C == ((A && B) > 2)ans = 0

Explanation

Page 14: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Explanation

Page 15: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Let’s try that …

A = 4;

B = 8;

C = true;

A^2 = = B && C

Ans ?

Page 16: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Explanation

• On first glance, one may be tempted to try it as

• (A^2) == (B && C) where one soon finds B && C would give an error.

•  • But the == has higher precedence

than &&, so what one really has is• (A^2 == B) && C  which gives a

false result.

Page 17: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

17

Example 2

A = 4;B = 8;C = 1 % True

A ^ 2 == B && C

ans = ? % Can you explain? % Note: ans = 0!

Page 18: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Operator Precedence

The precedence of operators governs the order in which operations are performed.

… on the next slideOperations listed on the same row are

performed from left to right.

The normal precedence of operators can be overruled by enclosing preferred operations in parentheses ( . . .)

… recommended to avoid errors!

Page 19: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

19

Matlab Precedence of Operators

.’ .^ Scalar transpose and power

’ ^ Matrix transpose and power

+ - ~ Unary operators

.* ./ .\ * / \ Multiplication, division, left division

+ - Addition and subtraction

: Colon operator

< <= >= > == ~=

Comparison

& Element-wise AND

| Element-wise OR

&& Logical AND

|| Logical ORThe normal precedence of operators can be overruled by enclosing

preferred operations in parentheses!

Page 20: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

20

Try These:

The test is run element-by-element on two row vectors, A and B:

A = [2 4 6 8], B = [1 3 9 27]C = A < B C = [0 0 1 1] D = A < 5 D = [1 1 0 0]E = B < 5 E = [1 1 0 0]

C & D % Try in Matlab~ E % Try in Matlab

Page 21: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Short circuit Evaluation (on your own time)

Evaluate only as much of the expression as needed to get the result

A && condition short-circuits to false if the left operand evaluates to false

A || condition short-circuits to true if the left operand evaluates to true

Example:

If n is not valid , the evaluation will stop and v(n) will cause an error

n =Input('Enter a index value');% check that n is a valid indexif ( n <= length(v) && n > 0 )

21

Page 22: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Flow Chart

A graphical representation of your algorithmShow solution design (algorithm) independent of

the code implementation

Flow Chart elements: : to begin or end a section of code

: indicates input or output processes

: indicates a decision point

: for general statements and calculations 22

Page 23: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Example Flow Chart

Algorithm:

• Define a vector of mph values

• Convert mph to ft/s• Combine the mph and ft/s

vectors in to a matrix• Create a table title• Create column headings• Display the table

Flow Chart: Write a program to convert from mph to ft/s

Start

Define a vector of

mph

Convert mph to ft/s

Create a table

Output table

End

Recommendation: Transfer the algorithm/flowchart steps to your m-file as comments and then add appropriate code between the comments

23

Page 24: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Flow of control

Sequential is restrictive, does not help solve some problems (e.g., decision problems, etc.)

– Just as humans change their minds depending on circumstances , machines should too ;-))

Selection– Choosing to execute a particular set of

statements depending on a condition

Repetition– Executing a set of statements more than one

time (loops). 24

Page 25: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Conditional Execution in General

Basic conditional execution requires two things: 1) A logical expression, and2) A code block

If the expression is true, the code block is executed.

Otherwise, execution is resumed at the instruction following the code block

IFcondition

statements

true

false

25

Page 26: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Compound Conditional = Selection

By introducing elseif and else, we allow the possibility of either conditional or unconditional execution when a test returns false.

26

IFcondition

elseIFcondition

statements1 stmts2

elseIFcondition

stmtsN stmtsN+1

else

end

if

Page 27: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

MATLAB if statements

Every if statement must be completed with a companion end statement Shows where to pick up after executing or

not executing a conditional code block

27

IFcondition

elseIFcondition

statements1 stmts2

elseIFcondition

stmtsN stmtsN+1

elseif

end

Page 28: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

What Executes? What Result?

>> a = 16;

>> b = 4;

>> if (a > b && b > 6)

c = 3;

elseif (b > 5)

c = 4;

else

c = 5;

end;

>> c

28

Page 29: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Does This Program Work?

score = input(‘enter score: ’);

if (score > 55)

disp( ‘D’ )

elseif (score > 65)

disp( ‘C’)

elseif (score > 80)

disp( ‘B’ )

elseif (score > 93)

disp( ‘A’ )

else

disp( ‘Not good…’ )

end 29

Page 30: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Vector Conditionals

Because in Matlab the Focus is on arrays, let’s see what happens when we apply a conditional to an array

In the following slide, we use the example of a very simple array:

a row vector

Page 31: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Vector Conditional Example

>> x =[4 -9 25];

>> if x < 0

disp('some elements of x are negative')

else

y = sqrt(x)

end

ans y =

2.0000 0 + 3.0000i 5.0000

31

So . . . x < 0 must have been false!

Page 32: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Example, cont’d

>> x =[4 -9 25];

>> if x > = 0

disp('some elements of x are negative')

else

y = sqrt(x)

end

ans y =

2.0000 0 + 3.0000i 5.0000

32What’s happening?

So x > = 0 must have been false!

Page 33: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Conditionals and Arrays:. . . How it works

When the test if logical expression is performed where the logical expression may be an array, the test returns the value “true” only if all the elements of the logical expression are true!

>> x =[4 -9 25];

>> if x < 0

>> x =[4 -9 25];

>> if x >= 0

33

x < 0 results in [0 1 0]

x >= 0 results in [1 0 1]

But the if returns

the value “false” in

both cases!!

Page 34: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Matlab Logical Functions

Function

all(v)

any(v)

all(A)

any(A)

Operation

Returns scalar = 1 if all elements of v have nonzero values, otherwise returns 0

Returns scalar = 1 if any element of v has a nonzero value, otherwise returns 0

Returns a row vector, same number of columns as matrix A, where value 1 indicates column had all nonzero values, 0 otherwise

Returns a row vector, same number of columns as matrix A, where value 1 indicates column had any nonzero value, 0 otherwise

34

Page 35: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Switch StatementTo select one from a set of alternatives

May be used in place of multiple if-else statements

Template:

35

switch <parameter>case <case specification 1>

<code block 1>case <case specification 2>

<code block 2>…case <case specification N>

<code block N>otherwise

<default code block>end

Page 36: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

If-else versus Switchcode = 11;switch codecase 10 disp(‘Turn equipment off’);

case 11 disp(‘Caution – recheck’);

case 13 disp(‘Turn on fan’);

otherwise disp(‘Normal temperature’);

end…

code = 11;

if(code == 10)

disp(‘Turn equipment off’);

elseif(code == 11)

disp(‘Caution – recheck’);

elseif(code == 13)

disp(‘Turn on fan’);

else

disp(‘Normal temperature’);

end…

36

Page 37: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

The Switch StatementFormal Syntax

<case specification> must be a single value or a set enclosed in {…}

Code block may contain any sequence of legal MATLAB code including if statement, switch, or iteration

switch <parameter> case <case spec 1> <code block 1> case <case spec 2> <code block 2> . . case <case spec N> <code block N> otherwise <default code block> end

37

Page 38: Chapter 4 Controlling Execution CSE 1010. 22 Objectives Evaluate logical expressions –Boolean –Relational Change the flow of execution –Diagrams (e.g.,

Example

Write a program that converts a test score into its equivalent letter grade.

score = input(‘Enter score out of 100: ’);score = floor(score/10);

switch(score)

case {10,9} letterGrade = ‘A’; case 8 letterGrade = ‘B’; case 7 letterGrade = ‘C’; case 6 letterGrade = ‘D’; otherwise

letterGrade = ‘F’; end fprintf(‘Your Grade is %c\n’, letterGrade);% Cool! 38