conditionals, part 2

Post on 23-Feb-2016

53 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Conditionals, part 2. the switch statement. General Concepts of Conditionals (revisit). You may want to execute some part of code under certain circumstances only You may want to skip some part of a code You may want to repeat a section of code until a new circumstance happens - PowerPoint PPT Presentation

TRANSCRIPT

1

Conditionals, part 2

1. the switch statement

General Concepts of Conditionals (revisit)

• You may want to execute some part of code under certain circumstances only

• You may want to skip some part of a code

• You may want to repeat a section of code until a new circumstance happens

• You may want to repeat a section of code for a certain number of times

2

Write a section of code that will assign the number of days in a given month to a variable

Thirty days hath September,April, June, and November.All the rest have thirty-one,Excepting February alone,And that has twenty-eight days clear,And twenty-nine in each leap year

if-elseif-else Review

3

Write a section of code that will assign the number of days in a given month to a variable

MATLAB code:

if-elseif-else Review

%Request user to enter the month number (Jan=1, Aug=8)month = input(‘Enter the month number: ‘);

%if months are jan,mar,may,jul,aug,oct,decif month==1 || month==3 || month==5 || month==7 || …

month==8 || month==10 || month==12nb_days = 31;

elseif month == 2 %Februarynb_days = 29; % for leap years…

else %every other monthsnb_days = 30;

end 4

%if months are jan,mar,may,jul,aug,oct,decif month==1 || month==3 || month==5 || month==7 || …

month==8 || month==10 || month==12nb_days = 31;

elseif month == 2 %Februarynb_days = 29; % for leap years…

else %every other monthsnb_days = 30;

end

What are some characteristics of this code segment?

What are its limitations?

if-elseif-else Review

5

6

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.

General Template

switch parametercase specification 1

<code block 1>....case specification n

<code block n>otherwise

<default block>end

7

if <condition 1>

<code block 1>

elseif <condition 2> <code block 2>..elseif <condition n> <code block n>else <default block>end

There is no limit to the number of cases.

switch Example 1: Multiple Cases

Instead we use…switch month

case {1,3,5,7,8,10,12} %31-day monthsdays = 31;case 2days = 29; %leap year to be coded..case {4,6,9,11} %30-day monthsdays = 30; otherwisefprintf(‘Invalid Entry.\n’);

end

8

Let us modify the calendar example from an if to a switch

if month==1 || month== 3 || month== 5 || …month== 7 || month== 8 || month== 10 || month== 12

Big advantage: reduces long OR statements of equality

9

Simulated “Run”

%assume month is 4

switch monthcase {1,3,5,7,8,10,12} %31-days months

days = 31;case 2

days = 29; %leap year to be coded..case {4,6,9,11} %30-days months

days = 30; otherwise

fprintf(‘Invalid Entry.\n’);end

switch Example 2: strings

10

switch statements can also be used to evaluate stringsmonth = input(‘Enter the month: ‘, ‘s’)

switch monthcase {‘Jan’,‘March’,‘May’,‘July’... } %31-days -days = 31;case ‘Feb’

days = 29; %leap year to be coded..case {‘April’, ’June’,’Sept’,’Nov’} %30-days

days = 30; otherwise

fprintf(‘Invalid Entry.\n’);end

switch - Menu’s

• Several programs request the user to select an item from a menu:

11

switch Example 3: Menu Options

%ask user what he’d like to domenu_choice = input(‘Select Item 1 to 4: ’);

%direct code to proper actionswitch menu_choice

case 1fprintf(‘You have selected 1.\n’)

case 2fprintf(‘You have selected a number 2.\n’)

case 3fprintf(‘You have selected a number 3.\n’)

case 4fprintf(‘You have selected a number 4.\n’)

otherwisefprintf(‘Invalid Entry.\n’);

end

12

if versus switch

• As general ideas:

13

if switch

Combination of || statements that check equalityExample:

if x==1 || x==2 || x==3 || x==4 Yes √ preferred

Inequalities (<, <=, >=, >) Yes Impossible

Conditions with &&: x == 2 && x == 7 Yes Impossible

Conditions that check multiple variablesSuch as: if x==4 && y==7 √ preferred Impossible

Menus ok… √ preferred

14

Nesting Conditionals

1. “Nested” statements

Nested statements

15

“Nesting” means to encase one type of statement inside another.

For example: Nested if statements

length = input(‘Length (m), please: ’);if length > 0

diameter = input(‘Diameter (m), please: ’);if diameter > 0

volume = pi * (diameter / 2)^2 * length;end

end

Note that each if statement has its own end marker.

% assume user will enter -2 for length and % -5 for diameter

length = input(‘Length (m), please: ’);if length > 0

diameter = input(‘Diameter (m), please: ’);if diameter > 0

volume = pi * (diameter / 2)^2 * length;end

end

Nested statement – Example 1

16

Nested statement – Example

17

length = input(‘Length (m), please: ’);diameter = input(‘Diameter (m), please: ’);if length > 0 && diameter > 0

volume = pi * (diameter / 2)^2 * length;fprintf(‘Volume = %.3f m^3\n’,volume);

else<error message>

end……

• How is this code different?

Asks for both inputs without checking

Nested Statements

The if, elseif, else, and end keywords each mark the beginning and end of the code under its control.

18

The elseif and else 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 switchend % positive length

Nested statements: Practice 1

x = x + y - z;if x>0 && z<0 || y<0

y = 0;else

switch xcase 2

fprintf(‘x is now 2’)case 5

fprintf(‘x is now 5’)otherwise

fprintf(‘ERROR somewhere’)end

end

19

• What is the result?

Nested statements: Practice 2

x = x + y - z;if x>0 && z<0 || y<0

y = 0;else

switch xcase 2

fprintf(‘x is now 2’)case 5

fprintf(‘x is now 5’)otherwise

fprintf(‘ERROR somewhere’)end

end

20

• What is the result?

-

What is wrong with this code?

x = x + y – z; if x>0 && z<0 || y<0y = 0; elseswitch x

case 2fprintf(‘x is now 2’)

case 5fprintf(‘x is now 5’)otherwise

fprintf(‘ERROR somewhere’)endend

……….

21

Pay attention to indentation!

• Switch statements allow you to evaluate multiple cases of same parameter– The cases can have unlimited values, but they must be equivalencies

• Switch statements are well suited for menu selection– and string comparisons

• Nesting can be used to skip code that requires additional conditional statements

• Any MATLAB code can be nested inside of if statements, switch statements, or loops (while, for)

Key Ideas

22

top related