# Flow Control in Matlab

## Conditionals

It is common in programming to need to use
logical tests. These expressions have *boolean* values;
i.e. they evaluate to either 'true' or 'false'.
In Matlab, 'true' is represented by an integer 1, and 'false'
by 0. Thus, one might examine an expression as follows.

>> K = -1 K = -1 >> K < 0 ans = 1 >> K > 0 ans = 0

One must be able to evaluate complicated logical expressions
for a number of mathematical tasks. Matlab, like all programming
languages, provides a full ensemble of logical operators for that
purpose.

Binary Operator | Meaning |
---|---|

== | Is equal to |

< | Is less than |

> | Is greater than |

<= | Is less than |

>= | Is greater than or equal to |

~= | Is not equal to |

&& | And |

|| | Or |

>> a=-1; b=1; c=0; >> c==0 ans = 1 >> c==a ans = 0 >> a<b ans = 1 >> a>=c ans = 0 >> a<b && a>=c ans = 0 >> a<b || a>=c ans = 1 >> a<b || (a>=c && b<c) ans = 1 >> (a<b || a>=c) && b<c ans = 0

Matlab has the usual compliment of flow control statements, allowing the
usual program looping and decision structures

## for

If you want to perform some operation a specific number of times then you should use a 'for' construction. In Matlab, the for loop has the formfor

*variable*=

*range*

*Put commands to be repeated here*

end

Here is an example that computes the factorial

`fact`of a number

`K`.

fact = 1; for i=2:K fact = fact*i; end

## while

If you need to perform some operation an unknown number of times, until some condition is satisfied, then you should use a 'while' construction. It is worth stressing the difference in usage between this and 'for'. Use a 'for' loop when you know ahead of time how many times you must do something, but use a while loop when you need to do it until some criterion is false.while

*condition is true*

*Put commands to be repeated here*

end

Here is an example in which we find the largest power

`n`of 2 that is less than or equal to a given positive number

`K`.

n = 0; while 2^n <= K n = n+1; end % 2^n is now greater than K, so reduce it. n = n-1;

## if

The 'if' construction is not for repeated operations at all.
Instead, it is simply a way to have your program make decisions.
If some condition is true, then do one set of things; if not
perhaps do something else, or skip the actions.

if *condition is true*

*Put commands to be performed once here*

elseif *different condition is true*

*Put commands to be performed once here*

else

*Put commands to be performed once here*

end

The `else` and `elseif` statements are optional.
If it suits your code, the construction could be as simple as
if *condition* commands; end.

`K < 0`. Here is an 'if' construction to throw an error if

`K`is negative.

if K<0 error('K must be non-negative.') end;

Assignment 6 is posted.

The midterm exam will take place on Friday,
12 October. As always, you are permitted any paper
notes you find useful, but no electronic devices are
allowed. The test is cumulative, but emphasizes
the material covered in the last fours weeks.
A sample exam is
available.

You need to install
Matlab
on your computer by Wednesday.
You do not need Simulink or any particular toolboxes, though
you might find the Symbolic toolbox useful at some time
in the future (not in this class).