end - EGR115.com

Download Report

Transcript end - EGR115.com

Conditionals, part 2
1.
switch statement
2.
“Nested” statements
1
2. switch statement

Allows for evaluation of multiple cases of the same parameter

The switch statement is looking for the parameter to have an
exact match to one of the cases. (No a<x && x<=b)

One case specification may have multiple values enclosed in
braces( {…}).

The default case catches any values of the parameter other
than the specified cases.

The default case should trap bad parameter values.
2
General Template
switch parameter
case specification1
<code block>
.
.
There is no limit to the
.
number of cases.
case specification n
<code block n>
otherwise
<execute a default block>
end
3
switch case: 1st Example

Let us review one of the previous example…
switch month
case {1,3,5,7,8,10,12} %31 days months
days = 31;
case 2
days = 29; %leap year to be coded..
case {4,5,9,11} %30 days months
days = 30;
otherwise
disp(‘Invalid Entry.’)
end
4
switch case: 1st Example

Let us review one of the previous example…
switch month
case {1,3,5,7,8,10,12} %31 days months
days = 31;
case 2
days = 29; %leap year to be coded..
case {4,5,9,11} %30 days months
days = 30;
otherwise
disp(‘Invalid Entry.’)
end
Big advantage:
reduces long OR
statements of equality
MUCH BETTER THAN
if month==1 || month== 3 || month== 5 || …
month== 7 || month== 8 || month== 10 || month== 12
5
switch case: 2nd Example
%ask user what he’d like to do
menu_choice = input(‘Menu… (blablabla) 1 to 4: ’);
%direct code to proper action
switch menu_choice
case 1
disp(‘You have selected 1.’)
case {2,3,4}
disp(‘You have selected a number from 2-4’)
otherwise
disp(‘Invalid Entry’)
end
6
if versus. switch

As general ideas:
if
Combination of or statements that check
equality
Example:
if x==1 || x==2 || x==3 || x==4
Ewwww…
Inequalities (<, <=, =>, >)
Conditions that check multiple variables
Such as:
if x==4 && y==7
Yes
√
switch
√
preferred
IMPOSSIBLE
preferred
ok
Menus
ok
√
preferred
Conditions with &&
Yes
IMPOSSIBLE
7
3. Nested statements

“Nesting” means to encase one type of statement inside
another.
For example: Nested IF statements
if length > 0
diameter = input('Diameter, please: ');
if diameter > 0
volume = pi * (diameter / 2)^2 * length;
end
end
8
3. Nested statements

“Nesting” means to encase one type of statement inside
another.
For example: Nested IF statements
if length > 0
diameter = input('Diameter, please: ');
if diameter > 0
volume = pi * (diameter / 2)^2 * length;
end
end
Note that each if statement has its own end marker.
9
3. Nested statements

“Nesting” means to encase one type of statement inside
another.
For example: Nested IF statements
if length > 0
diameter = input('Diameter, please: ');
if diameter > 0
volume = pi * (diameter / 2)^2 * length;
end
end
Note that each if statement has its own end marker.
10
3. Nested statements

“Nesting” means to encase one type of statement inside
another.
For example: Nested IF statements
if length > 0
diameter = input('Diameter, please: ');
if diameter > 0
volume = pi * (diameter / 2)^2 * length;
end
end
Note that each if statement has its own end marker.
11
Nesting, cont.

The if, elseif, else, and end keywords each mark
the beginning and end of the code under its control.

The elseif and else clauses of an if statement are
optional. But you must include an end for every if
statement – it marks the end of the code being executed
conditionally.

It can be helpful to comment lines with end keywords so
that it is clear which statement is being terminated:
end % of switch
Nesting, cont.

Nesting can also mean using dissimilar statements – like
nesting a switch within an if statement:
if date > 20100101 %greater than January 1st 2010
switch month
case {‘Dec’, ‘Jan’, ‘Feb’}
disp(‘Winter’);
case {‘Mar’, ‘Apr’, ‘May’}
disp(‘Spring’);
case {‘Jun’, ‘Jul’, ‘Aug’}
disp(‘Summer’);
case {‘Sep’, ‘Oct’, ‘Nov’}
disp(‘Autumn’);
end % of switch
else
disp(‘Date is too early’)
end % of if date
Nesting, cont.

In fact, you can “nest” any MATLAB code you want
inside of if statements, switch statements, or even…
Loops!
Wrapping Up

switch statements only check EQUALITY


So you'll never ever see any relational operators (> < <= >=..)
If you do: you ARE definitely doing something wrong.



They tremendously reduce if statements that check ==
with || statements.
The are very easy to use with numbers AND strings


TRUST US.
We have not yet presented strings and if statements, since it is
harder.
Nested if/switch are entirely feasible. Make sure the end
keywords are correctly placed. Ctrl+A+I will remind you
what MATLAB sees.
15