本节介绍MATLAB的另外两种循环结构,即For Each…Next结构和Do循环结构。[大谦MATLAB,dqmatlab点com]
判断结构-switch/case结构
当判断结构中的条件根据表达式值的不同可有多个选项时,使用switch/case结构。该结构的通用格式为:
switch switch 判断条件
case case 条件1,
执行语句1;
case case条件2,
执行语句2;
case case 条件3,
执行语句3;
…..
otherwise
执行语句n;
end
其中,判断条件给出开关条件,当某个条件与之匹配时,就执行其后的语句,如果没有条件与之匹配,就执行otherwise后面的语句。在执行过程中,只有一个case命令被执行,当执行完命令后,程序就跳出分支结构,执行end下面的语句。
在表3-4中列出了switch/case语句与if/end语句之间的区别。
表3-4 switch/case语句和if/elseif语句之间的区别
| switch/case语句 | if/end语句 |
|---|---|
| 更好读 | 更难读 |
| 可以比较不同长度的字符串 | 需要strcmp函数比较不同长度的字符串 |
| 只测试相等性 | 测试相等性或不等性 |
根据method的取值显示不同的内容的代码如下。值为"linear"时显示“方法为线性插值方法。”值为"cubic"时,显示“方法为三次插值方法。”
>> method='linear';
>> switch method
case 'linear'
disp('方法为线性插值方法。')
case 'cubic'
disp('方法为三次插值方法。')
end
输出结果为:
方法为线性插值方法。
可以用switch语句测试一种以上的情况,下面的例子在case语句中用元胞数组测试一个linear方法或bilinear方法。
>> switch method
case {'linear', 'bilinear'}
disp('方法为线性或双线性方法。')
…
end
下面代码中如果result等于52,则只有第一个disp语句运行。虽然第二个case也符合要求,但它不会运行。
>> result=52;
>> switch(result)
case 52
disp('结果为52')
case {52,78}
disp('结果为52或78')
end
输出结果为:
结果为52
其他命令和语句
前面各节介绍了MATLAB和Python中常见的语法结构,除了它们以外还有一些比较特殊的命令和语句,用于实现跳出、跳转、终止和占位等操作,本节对它们进行介绍。
MATLAB中的其他命令和语句
MATLAB中的其他命令和语句包括continue, break和return等。
continue命令经常与for或while语句一起使用,其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断。
break命令也经常与for或while等语句一起使用,其作用是终止本次循环,跳出最内层的循环。使用break命令可以不必等到循环自然结束,而是根据条件退出循环。
return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。这个语句经常用于函数的末尾,以正常结束函数的运行。
break,continue和return命令比较容易混淆,表3-5对它们进行了比较详细的比较。
表3-5 break,continue和return命令的区别
| 命 令 | 用 在 何 处 | 描 述 |
|---|---|---|
| break | for 或while循环 | 它出现时,退出循环,在嵌套的循环中,进入相邻的外层循环 |
| continue | for或while循环 | 在本循环中跳过剩余的语句,进入本循环的下一次迭代 |
| return | 任意位置 | 它出现时,立即退出函数,进入函数的调用函数中 |
Python中的其他命令和语句
Python中的其他命令和语句包括break, continue和pass等。
break语句
break语句用在while循环或for循环中,在必要的时候终止和跳出循环。
下面用for循环对给定的数据区间进行累加求和,要求累加和的大小不能超过100,也就是说,此时用break语句终止和跳出循环。
在Python IDLE Shell窗口输入:
>>> sum=0
>>> num=0
>>> for num in range(100):
old_sum=sum
sum+=num
if sum>100:break #累加和大于100时跳出循环
>>> print(num-1) #数字
>>> print(old_sum) #小于100的累加和
回车,显示:
13
91
也可以在while循环中使用break语句跳出循环。用while循环改写上面的程序。在Python IDLE Shell窗口输入:
>>> sum=0
>>> n=0
>>> while(n<=100):
old_sum=sum
sum+=n
if sum>100:break #累加和大于100时跳出循环
n+=1
>>> print(n-1)
>>> print(old_sum)
回车,得到相同的计算结果。
continue语句
continue语句跟break语句的作用类似,都是用在循环中,用于跳出循环。不同的是,break语句是跳出整个循环,continue语句则是跳出本轮循环。
下面的for循环输出0-4区间内的整数,但是不输出3。在Python IDLE Shell窗口输入:
for i in range(5):
if i==3:continue
print(i)
回车,显示:
0
1
2
4
可见,数据3没有输出。
pass语句
pass语句是占位语句,它不做任何事情,用于保持程序结构的完整性。在判断结构中,判断条件满足时,如果什么也不执行,会出错,即在文件或命令行执行下面的语句:
if a>1: #什么也不做
会出错。此时用pass语句放在冒号后面,虽然还是什么也不做,但保证了语法上的完整性,不会出错了。即
if a>1:pass #什么也不做
另外,在自定义函数时,如果定义一个空函数,也会出错。此时函数体放一个pass语句,就不会出错了。