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