1、MATLAB 程序设计流程控制语句,2,流程控制,顺序结构 判断语句(ifelseend) 分支语句 循环语句 其他流程控制函数,3,函数流程控制顺序结构,顺序结构是最简单的程序结构,系统在编译程序时,按照程序的物理位置顺序执行。这种程序容易编制,但是结构单一,能够实现的功能有限。r=1; % the radius of the columeh=1; % the hight of the columes=2*r*pi*h + 2*pi*r2; % calculate the surface areav=pi*r2*h; % calculate the volumedisp(The surfac
2、e area of the colume is:),disp(s);disp(The volume of the colume is:),disp(v);,4,函数流程控制判断语句,ifend 此时的程序结构如下: if 表达式执行代码块 end这是最简单的判断语句,只有一个判断语句,其中的表达式为逻辑表达式,当表达式为真时,执行相应的语句,否则,直接跳到下一段语句。其工作流程如图所示注意: 语句中的end是决不可少的,没有它,在逻辑表达式为0时,就找不到继续执行程序的入口。,5,函数流程控制判断语句,例子:判断输入的两个参数是否都大于0,是则返回“a and b are both large
3、r than 0”,否则不返回,程序最后返回“Done”。a=input(a=);b=input(b=);if a 0 ,6,函数流程控制判断语句,ifelseend 当程序有两个选择时,可以选择 ifelseend 结构, 此时程序结构为: if 表达式执行代码块1 else执行代码块2 end当判断表达式为真时,执行代码块1,否则执行代码块2。,7,函数流程控制判断语句,例子1:判断输入的两个参数是否都大于0,是则返回“a and b are both larger than 0”,如果不全大于0,则显示“a and b are not both larger than 0” 。a=inp
4、ut(a=);b=input(b=);if a 0 end,8,函数流程控制判断语句,例子2:计算分段函数的值程序如下:x=input(请输入x的值:);if x=0y= (x+sqrt(pi)/exp(2);elsey=log(x+sqrt(1+x*x)/2;end,9,函数流程控制判断语句,ifelseifelseend 上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个选择时,可以采用elseif 语句,结构为: if 表达式1执行代码块1 elseif 表达式2执行代码块2 elseif else执行代码块 end其中可以包含任意多个 elseif 语句。,10,函数流程控制
5、判断语句,例1:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。,11,函数流程控制判断语句,程序:c=input(请输入一个字符,s);if c=A end,12,函数流程控制判断语句,例2:判断输入学生成绩的所属等级:60以下不合格,60-89中等,90以上优秀。 n=input(input the score:) if n=0 & n=60 & n=90 &n100 A=优秀 elseA=输入错误 end,13,函数流程控制分支语句,上一节中的 ifelseifelseend 语句可以适用于
6、多种选择的流程控制,此时对 else之外的每一个选择语句设置一个表达式,表达式为真时则执行该模块。MATLAB 中的另一种多选择语句为分支语句。分支语句的结构为: switch 分支语句case 条件语句执行代码块case 条件语句1, 条件语句2, 条件语句3, .执行代码块otherwise执行代码块 end,14,函数流程控制分支语句,其中的分支语句为一个变量,可以是数值变量或者字符串变量,如果该变量的值与某一条件相符,则执行相应的语句,否则,执行 otherwise 后面的语句。在每一个条件中,可以包含一个条件语句,可以包含多个条件,当包含多个条件时,将条件以单元数组的形式表示。例1:
7、任意底对数的实现,15,函数流程控制分支语句,a=input(输入底); b=input(输入取对数的值); switch acase exp(1)y = log(b);case 2y = log2(b);case 10y = log10(b);otherwisey = log(b)/log(a); end,16,函数流程控制分支语句,例2:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price200 没有折扣200price500 3%折扣500price1000 5%折扣1000price2500 8%折扣2500price5000 10%折扣5000pr
8、ice 14%折扣 输入所售商品的价格,求其实际销售价格。,17,函数流程控制分支语句,price=input(请输入商品价格); switch fix(price/100) case 0,1 %价格小于200rate=0;case 2,3,4 %价格大于等于200但小于500rate=3/100;case num2cell(5:9) %价格大于等于500但小于1000rate=5/100;case num2cell(10:24) %价格大于等于1000但小于2500rate=8/100;case num2cell(25:49) %价格大于等于2500但小于5000rate=10/100;ot
9、herwise %价格大于等于5000rate=14/100; end price=price*(1-rate) %输出商品实际销售价格,18,函数流程控制循环语句for语句,for语句调用的基本格式如下:for index=初值:增量:终值语句组Aend功能:把语句组A(亦称为循环体)反复执行N次。循环次数N为:N1+(终值-初值)/增量在每次执行时程序中的index的值按“增量”增加for语句的循环次数是预先指定的。,19,函数流程控制循环语句for语句,例1:用循环求解 1+2+.+99+100s=0;for i=1:100 s=s+i;end 例2:计算 s=0;for i=1:100
10、00 s=s+1/2(i+2);end,20,函数流程控制循环语句for语句,for 语句的嵌套如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构 例子:建立一个10阶数组,数组中的每一个元素A(i, j)满足A(i, j)=1/(i+j-1).for i=1:10for j=1:10A(i, j)=1/(i+j-1);endend,21,函数流程控制循环语句for语句,注意:当有一个等效的数组方法来解给定的问题时,应避免用for循环。 例如:对例1:用循环求解 1+2+.+99+100 这一问题s=sum(1:100);对例2:i=1:10000 s=sum(1
11、/2.(i+2);,22,函数流程控制循环语句while语句,while 语句用于将相同的代码块执行多次,但是次数并不预先指定,当 while 的条件表达式为真时,执行代码块,直到条件表达式为假。while 语句的结构为:while 表达式执行代码块end,23,函数流程控制循环语句while语句,例:用循环求解最小的m,使其满足s=0; m=0;while (s=10000)m=m+1; s=s+m; end,24,函数流程控制练习题,1. 编写程序计算其中x的值为从-10到10之间,以0.5为步长。要求用循环语句实现。2. 重新编写程序,实现1题的功能,但不采用循环语句。,25,函数流程控制练习题1,t = 0; for x = -10: 0.5: 10t = t + 1;if x 0y(t) = -x3 + 5;elsey(t) = x3 + 5;end end,26,函数流程控制练习题2,x = -10: 0.5: 10; y= zeros(1,length(x); x0 = find(x0); y(x0)=-x(x0).3 + 5; y(x0(end)+1:end)=x(x0(end)+1:end).3 + 5;,