程序控制语句决定程序运行时的走向,其中包括条件控制、循环控制、错误控制和终止运行控制等。[大谦MATLAB,dqmatlab点com]
条件控制
条件控制使得程序可以有选择地运行程序块。当条件可以用“是”或“否”来回答时,使用if语句;当条件根据表达式值的不同可有多个选项时,使用switch和case语句。
1.if/elseif语句
最简单的if/elseif语句如下所示:
if expression
statements;
end
其中expression为逻辑表达式,statements为一行或多行语句。如果表达式中的值为真,就执行if与end语句之间的代码,否则跳过。如果有两个选项,则使用下面的if/elseif语句:
if expression
statements;
else
statements;
end
expression为逻辑表达式,statements为一行或多行语句。当有多个选择时,可以使用类似if/elseif语句。
2.switch/case语句
该语句的通用格式为:
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时,显示“方法为三次方法。”
switch(method)
case 'linear'
disp('方法为线性方法。')
case 'cubic'
disp('方法为三次方法。')
end
可以用switch语句测试一种以上的情况,下面的例子在case语句中用单元数组测试一个linear方法或bilinear方法。
switch(method)
case{'linear', 'bilinear'}
disp('方法为线性或双线性方法。')
…
end
在C语言中,如果在每个case块中不用break语句终止,则代码的运行会进入下一个case块。但在MATLAB语言中不会出现这种情况,而只会运行一个case块。在case块中使用break语句,不仅不必要,而且非法,会产生警告。
【例3-5】如果result等于52,则只有第一个disp语句运行。虽然第二个case也符合要求,但它不会运行。
switch(result)
case 52
disp('结果为52')
case {52,78}
disp('结果为52或78')
end
循环控制
使用循环控制语句,可以重复执行代码块。for语句用于执行指定次数的情况;while语句适合于循环一直执行,直到满足条件为止的情况;而continue和break语句对退出循环给予更多的控制。
1.for循环
for循环允许一组命令以固定的和预定的次数重复执行,for循环的一般形式如下:
for v=expression
statements;
end
其中expression为表达式,statements为一行或多行语句。
2.while循环
while循环以不定的次数来求一组命令的值。while循环的一般形式如下:
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命令的语法格式为:
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 | 任意位置 | 它出现时,立即退出函数,进入函数的调用函数中 |