Upload
joshua-melton
View
235
Download
3
Embed Size (px)
Citation preview
Chapter 4 Controlling Execution
CSE 1010
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
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
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…
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
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
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
8
Relational Operators
< strictly less than
< = less than or equal to
> strictly greater than
> = greater than or equal to
= = equal to
~ = not equal to
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
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
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.
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
13
Example 1
A = 4;B = 8;C == (A && B > 2)ans = 1
C == ((A && B) > 2)ans = 0
Explanation
Explanation
Let’s try that …
A = 4;
B = 8;
C = true;
A^2 = = B && C
Ans ?
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.
17
Example 2
A = 4;B = 8;C = 1 % True
A ^ 2 == B && C
ans = ? % Can you explain? % Note: ans = 0!
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!
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!
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
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
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
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
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
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
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
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
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
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
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
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!
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!
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!!
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
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
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
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
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