# channelflow.org

### Site Tools

gibson:teaching:fall-2014:math445:lecture8-diary

# Math 445 lecture diary: if-elseif-else

Today we'll look at slightly more complex functions, with

• multiple arguments
• multiple return values
• `if-elseif-else` statements
• `switch` statements

### Multiple arguments and return values

The declaration of a function `f` with multiple arguments and multiple return values has general form

`function [rtn1, rtn2, rtn3, ...] = f(arg1, arg2, arg3, ...)`

### if-elseif-else statement

The general form of an `if-elseif-else` statement is

```if condition1
action1
elseif condition2
action2
elseif condition3
action3
else
action4
end```

though of course you can have as many `elseif` statements as you like.

### Example: if-elseif-else and multiple args and return val

Write a Matlab function `temp2kcf` converts a temperature `t` in any one of the three units Kelvin, Celsius, or Farenheit, and returns the temperature in all three units. The function should have two arguments, the temperature `t` and a character `units` which specifies the units as either K, C, or F and three return values, `tK, tC, tF`.

Here's a decent solution to the problem using an `if-elseif-else` statement.

```function [tK, tC, tF] = temp2kcf(t, units);
% convert temperature t in units 'C', 'F', or 'K' to all three of those units

% convert input temp to Kelvin
if units == 'F'
tK = 5/9*t + 255.37;
elseif units == 'C'
tK = t + 273.15;
elseif units == 'K'
tK = t;
else
fprintf('error: unknown units %c, returning absolute zero\n', units);
tK = 0;
end

% convert Kelvin to output temps
tC = tK - 273.15;
tF = 9/5*tC + 32;

end```

### switch statement

The above problem is actually better done with a switch statement. Switch statements perform conditional execution based on the value of a variable or an expression. The general form is

```switch expression
case value1
action1
case value2
action2
case value3
action3
otherwise
action4
end```

Here's a solution to the problem using a `switch` statement.

```function [tK, tC, tF] = temp2kcf(t, units);
% convert temperature t in units 'C', 'F', or 'K' to all three of those units

% convert input temp to Kelvin
switch units
case 'F'
tK = 5/9*(t-32) + 273.15;
case 'C'
tK = t + 273.15;
case 'K'
tK = t;
otherwise
fprintf('error: unknown units %c, returning absolute zero\n', units);
tK = 0;
end

% convert Kelvin to output temps
tC = tK - 273.15;
tF = 9/5*tC + 32;

end```