
1.7 MATLAB的程序结构
作为一种程序设计语言,MATLAB与一般高级程序语言一样,为用户提供了丰富的程序结构语言,以实现用户对程序流程的控制。
MATLAB的程序结构主要包括循环控制结构和条件选择结构。
1.7.1 循环控制结构
循环控制语句结构根据设置的条件重复执行指定语句,并按条件退出循环。在MATLAB中,循环控制结构有两种,分别为for循环与while循环。
1.for循环
for循环允许一组命令以固定的和预定的次数重复。for循环的一般形式为:

在for和end之间的program statements按数组中的每一列执行一次。在每次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n)。如果增量默认系统,则默认为1。
【例1-16】设,求
。求函数
在
上的定积分的几何意义就是求曲线
与直线
、
、
围成的曲边梯形的面积。为了求得曲边梯形的面积,先将积分区间
分成
等份,每个区间的宽度为
,对应地将曲边梯形分成了
等份,每一小部分是一个小曲边梯形。近似求出每个小曲边梯形的面积,然后将
个小曲边梯形的面积加起来,就得到了总面积,即定积分的近似值。近似地求每个小曲边梯形的面积的常用方法有矩形法、梯形法及辛普森法则等。

运行程序,输出如下:

2.while循环
与for循环以固定次数求一组命令的值相反,while循环以不定的次数求一组命令的值。while循环的一般形式为:

只要表达式中的所有元素为真,就执行while和end之间的statements。通常,表达式的求值会给出一个标量值,但数组值同样有效。在数组值的情况下,所得数组的所有元素必须都为真。
【例1-17】获得100以内的所有加法表达式,其中加数有两个,它们是1~99之间的数,同时限制第一个加数小于第二个加数。

运行程序,输出如下:

1.7.2 条件选择结构
条件选择结构根据给定的条件的真假选择执行不同的语句。MATLAB用if条件语句和switch条件语句实现条件选择结构。
1.if条件选择结构
if条件语句主要有以下三种调用格式。
(1)最简单的if-else-end语句的格式为:

如果上述表达式中的所有元素均为真,就执行if和end之间的statements语句;如果条件为假,则不执行下面的表达式语句。当表达式包含几个逻辑子表达式时,即使前一个逻辑子表达式决定了表达式的最终逻辑状态,仍要计算所有的逻辑子表达式。
(2)当有两个选择时,if-else-end的结构如下:

此时,如果表达式为真,则执行第一组语句statements1;如果表达式为假,则执行第二组语句statements2。
(3)当有三个或更多的选择时,if-else-end结构采用的形式如下:

在这种选择结构中,当程序执行到某一表达式为真时,执行其后的相关语句,不再检验其他的关系表达式,会直接跳出此选择结构,而且最后的else命令可有可无。
【例1-18】用if条件语句计算x=9时的表达式的值。

运行程序,输出如下:

2.switch条件选择结构
与C语言中的switch分支结构类似,在MATLAB中,switch适用于条件多且比较单一的情况,类似于一个数控的多个开关,其一般的语法格式为:

在以上的语法结构中,expression为一个标量或字符串,MATLAB可以将表达式中的数值依次和各个case命令后的数值进行比较。如果比较结果为假,则MATLAB会自动与下一个数值进行比较,一旦比较结果为真,MATLAB就会执行相应的命令,然后跳出该分支结构。如果所有的比较结果都为假,即表达式的数值和所有的检测值都不相等,则MATLAB会执行otherwise部分的语句。
【例1-19】学生成绩分类:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E,要求输入一个等级并输出其对应分数。

运行程序,在命令窗口中输出:

根据提示,输入对应的等级,如'B',输出的结果为:

注意:在MATLAB中,switch条件选择结构只执行第一个匹配的case对应的语句组,因此不需要break语句。