流程控制

程序控制语句决定程序运行时的走向,其中包括条件控制、循环控制、错误控制和终止运行控制等。[大谦MATLAB,dqmatlab点com]

条件控制

条件控制使得程序可以有选择地运行程序块。当条件可以用“是”或“否”来回答时,使用if语句;当条件根据表达式值的不同可有多个选项时,使用switch和case语句。

1.if/elseif语句

最简单的if/elseif语句如下所示:

code.matlab
if expression
    statements;
end

其中expression为逻辑表达式,statements为一行或多行语句。如果表达式中的值为真,就执行if与end语句之间的代码,否则跳过。如果有两个选项,则使用下面的if/elseif语句:

code.matlab
if expression
  statements;
else
  statements;
end

expression为逻辑表达式,statements为一行或多行语句。当有多个选择时,可以使用类似if/elseif语句。

2.switch/case语句

该语句的通用格式为:

code.matlab
switch switch-expression
case case-expression1,
  statements1;
case case-expression2,
  statements2;
case case-expression3,
  statements3;
…..
otherwise
  statements;
end

其中,switch-expression给出开关条件,当有case-expressionN与之匹配时,就执行其后的语句statementsN,如果没有case-expressionN与之匹配,就执行otherwise后面的语句。在执行过程中,只有一个case命令被执行,当执行完命令后,程序就跳出分支结构,执行end下面的语句。

在表3-4中列出了switch/case语句与if/elseif语句之间的区别。

表3-4 switch/case语句和if/elseif语句之间的区别

switch/case语句 if/elseif语句
更好读 更难读
可以比较不同长度的字符串 需要strcmp函数比较不同长度的字符串
只测试相等性 测试相等性或不等性

注意:在C语言和MATLAB语言中都有switch/case语句,但二者有所不同:在MATLAB的case语句中,可以指定字符串的值,而在C语言中不能。

【例3-4】

根据method的取值显示不同的内容的代码如下。值为linear时显示“方法为线性方法。”值为cubic时,显示“方法为三次方法。”

code.matlab
switch(method)
  case 'linear'
    disp('方法为线性方法。')
  case 'cubic'
    disp('方法为三次方法。')
end

可以用switch语句测试一种以上的情况,下面的例子在case语句中用单元数组测试一个linear方法或bilinear方法。

code.matlab
switch(method)
  case{'linear', 'bilinear'}
    disp('方法为线性或双线性方法。')
    …
end

在C语言中,如果在每个case块中不用break语句终止,则代码的运行会进入下一个case块。但在MATLAB语言中不会出现这种情况,而只会运行一个case块。在case块中使用break语句,不仅不必要,而且非法,会产生警告。

【例3-5】如果result等于52,则只有第一个disp语句运行。虽然第二个case也符合要求,但它不会运行。

code.matlab
switch(result)
   case 52
    disp('结果为52')
  case {52,78}
    disp('结果为52或78')
end

循环控制

使用循环控制语句,可以重复执行代码块。for语句用于执行指定次数的情况;while语句适合于循环一直执行,直到满足条件为止的情况;而continue和break语句对退出循环给予更多的控制。

1.for循环

for循环允许一组命令以固定的和预定的次数重复执行,for循环的一般形式如下:

code.matlab
for v=expression
  statements;
end

其中expression为表达式,statements为一行或多行语句。

2.while循环

while循环以不定的次数来求一组命令的值。while循环的一般形式如下:

code.matlab
while expression
  statements;
end

只要表达式expression中的元素为真,就执行while和end语句之间的命令行statements。

3.continue命令

continue命令经常与for或while语句一起使用,其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断。

4.break命令

break命令也经常与for或while等语句一起使用,其作用是终止本次循环,跳出最内层的循环。使用break命令可以不必等到循环自然结束,而是根据条件退出循环。

错误控制

Try...catch语句可以进行错误捕获,它把有可能引起异常的语句放在try控制块中,这样当try控制块中statement语句引起异常时,catch控制块就可以捕获它,并针对不同的错误类型,进行不同的处理。Try...catch命令的语法格式为:

code.matlab
try,
   statement,
   ...,
   statement,
catch,
   statement,
   ...,
   statement,
end

程序终止控制

return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。这个语句经常用于函数的末尾,以正常结束函数的运行。

Break,continue和return函数比较容易混淆,表3-5对它们进行了比较详细的比较。

表3-5 break,continue和return函数的区别

函 数 用 在 何 处 描 述
break for 或while循环 它出现时,退出循环,在嵌套的循环中,进入相邻的外层循环
continue for或while循环 在本循环中跳过剩余的语句,进入本循环的下一次迭代
return 任意位置 它出现时,立即退出函数,进入函数的调用函数中