matlab课件--第4讲-条件语句和循环语句.ppt
Matlab Matlab 软件实习软件实习软件实习软件实习第四讲第四讲第四讲第四讲条件语句和循环语句条件语句和循环语句条件语句和循环语句条件语句和循环语句Matlab Matlab 软件实习软件实习软件实习软件实习一、单条件语句一、单条件语句格式格式1:if if 逻辑表达式逻辑表达式逻辑表达式逻辑表达式 程序语句组程序语句组程序语句组程序语句组 endendif语句计算所跟的逻辑表达式的值语句计算所跟的逻辑表达式的值,若值为真就做下面若值为真就做下面的程序语句组的程序语句组,若值为假就跳到若值为假就跳到end后继续做程序后继续做程序.条条 件件 语语 句句Matlab Matlab 软件实习软件实习软件实习软件实习例例例例1:1:当从键盘输入自变量当从键盘输入自变量x的值的值,由分段函数由分段函数给出给出y值值.x=input(x=)if x0 y=x*sin(x)end y=x2+exp(x)程程序序如如下下%屏幕提示屏幕提示屏幕提示屏幕提示x x,由键盘输入值赋给由键盘输入值赋给由键盘输入值赋给由键盘输入值赋给x xMatlab Matlab 软件实习软件实习软件实习软件实习格式格式2:if if 逻辑表达式逻辑表达式逻辑表达式逻辑表达式 程序语句组程序语句组程序语句组程序语句组1 1 else else 程序语句组程序语句组程序语句组程序语句组2 2 end endif语句计算所跟的逻辑表达式的值语句计算所跟的逻辑表达式的值,若值为真就做下面若值为真就做下面的程序语句组的程序语句组1,然后就跳到然后就跳到end后继续做程序后继续做程序.否则否则,值值为假为假,就做就做else后的程序语句组后的程序语句组2,然后再接着做然后再接着做end后的后的程序程序.Matlab Matlab 软件实习软件实习软件实习软件实习 例例例例2 2:计算分段函数的值计算分段函数的值.程序如下:程序如下:x=input(请输入请输入x的值的值:);if xA(3)&A(1)+A(3)A(2)&A(2)+A(3)A(1)p=(A(1)+A(2)+A(3)/2;s=sqrt(p*(p-A(1)*(p-A(2)*(p-A(3);disp(s);else disp(不能构成一个三角形。不能构成一个三角形。)end运行:运行:请输入三角形的三条边:请输入三角形的三条边:4 5 6 9.9216Matlab Matlab 软件实习软件实习软件实习软件实习二、多条件语句二、多条件语句 if 条件条件1 程序语句组程序语句组1 elseif 条件条件2 程序语句组程序语句组2 elseif 条件条件m 语句组语句组m else 语句组语句组n end语句用于实现多分支选择结构语句用于实现多分支选择结构语句用于实现多分支选择结构语句用于实现多分支选择结构Matlab Matlab 软件实习软件实习软件实习软件实习例例例例4 4:当从键盘输入自变量:当从键盘输入自变量x的值的值,由分段函数由分段函数给出给出y的值的值.程序如下程序如下程序如下程序如下:x=input(请输入请输入x的值的值:);if x0 y=1;elseif x0 y=0;else y1;end x,yMatlab Matlab 软件实习软件实习软件实习软件实习 switch语句语句 switch语句根据表达式的取值不同语句根据表达式的取值不同,分别执行不同分别执行不同的语句的语句,其语句格式为其语句格式为:switch switch 表达式表达式表达式表达式 case case 表达式表达式表达式表达式1 1 语句组语句组语句组语句组1 1 case case 表达式表达式表达式表达式2 2 语句组语句组语句组语句组2 2 case case 表达式表达式表达式表达式mm 语句组语句组语句组语句组mm otherwise otherwise 语句组语句组语句组语句组n n end endMatlab Matlab 软件实习软件实习软件实习软件实习 当表达式的值等于表达式当表达式的值等于表达式1的值时的值时,执行语句组执行语句组1,当表达式的值等于表达式当表达式的值等于表达式2的值时的值时,执行语句组执行语句组2,当表达式的值等于表达式,当表达式的值等于表达式m的值时的值时,执行语句执行语句组组m,当表达式的值不等于当表达式的值不等于case所列的表达式的值所列的表达式的值时时,执行语句组执行语句组n.当任意一个分支的语句执行完后当任意一个分支的语句执行完后,直接执行直接执行switch语句的下一句语句的下一句.Matlab Matlab 软件实习软件实习软件实习软件实习例例例例5 5:某商场对顾客所购买的商品实行打折销售,标某商场对顾客所购买的商品实行打折销售,标准如下准如下(商品价格用商品价格用price来表示来表示):price200 没有折扣没有折扣 200price500 3%折扣折扣 500price1000 5%折扣折扣 1000price2500 8%折扣折扣 2500price5000 10%折扣折扣 5000price 14%折扣折扣输入所售商品的价格输入所售商品的价格,求其实际销售价格求其实际销售价格.Matlab Matlab 软件实习软件实习软件实习软件实习 程序如下:程序如下:程序如下:程序如下:price=input(请输入商品价格请输入商品价格);switch fix(price/100)case 0,1%价格小于价格小于价格小于价格小于200200 rate=0;case 2,3,4%价格大于等于价格大于等于价格大于等于价格大于等于200200但小于但小于但小于但小于500500 rate=3/100;case num2cell(5:9)%价格大于等于价格大于等于价格大于等于价格大于等于500500但小于但小于但小于但小于10001000 rate=5/100;case num2cell(10:24)%价格大于等于价格大于等于价格大于等于价格大于等于10001000但小于但小于但小于但小于25002500 rate=8/100;case num2cell(25:49)%价格大于等于价格大于等于价格大于等于价格大于等于25002500但小于但小于但小于但小于50005000 rate=10/100;otherwise%价格大于等于价格大于等于价格大于等于价格大于等于50005000 rate=14/100;endprice=price*(1-rate)%输出商品实际销售价格输出商品实际销售价格输出商品实际销售价格输出商品实际销售价格Matlab Matlab 软件实习软件实习软件实习软件实习try语句语句语句格式为:语句格式为:try 语句组语句组1catch 语句组语句组2end try语句先试探性执行语句组语句先试探性执行语句组1,如果语句组如果语句组1在执行过程中出现错误在执行过程中出现错误,则将错误信息赋给则将错误信息赋给保留的保留的lasterr变量变量,并转去执行语句组并转去执行语句组2.Matlab Matlab 软件实习软件实习软件实习软件实习例例例例6 6:矩阵乘法运算要求两矩阵的维数相容矩阵乘法运算要求两矩阵的维数相容,否则会出否则会出错错.先求两矩阵的乘积先求两矩阵的乘积,若出错若出错,则自动转去求两矩则自动转去求两矩阵的点乘阵的点乘.程序如下:程序如下:程序如下:程序如下:A=1,2,3;4,5,6;B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;end Clasterr%显示出错原因显示出错原因Matlab Matlab 软件实习软件实习软件实习软件实习循循 环环 语语 句句1.for-end循环循环格式格式:for for 循环变量循环变量循环变量循环变量=初值初值初值初值:步长步长步长步长:终值终值终值终值 循环体语句组循环体语句组循环体语句组循环体语句组 end end 注注 步长为步长为1时时,可省略可省略.Matlab Matlab 软件实习软件实习软件实习软件实习例例例例7 7:编程生编程生成一个成一个6阶矩阶矩阵阵,使其主对使其主对角线相邻上角线相邻上元素皆为元素皆为1,与与主对角线相主对角线相邻元素皆为邻元素皆为2,其余元素皆其余元素皆为为0.程序如下程序如下:for i=1:6 for j=1:6 if i=j A(i,j)=1;elseif abs(i-j)=1 A(I,j)=2;else A(I,j)=0;end end end AMatlab Matlab 软件实习软件实习软件实习软件实习关于关于关于关于For For 循环的说明:循环的说明:循环的说明:循环的说明:1.For 1.For 循环不能用循环不能用循环不能用循环不能用For For 循环内重新赋值循环变量循环内重新赋值循环变量循环内重新赋值循环变量循环内重新赋值循环变量n n 来终来终来终来终止止止止.for n=1:10 x(n)=sin(n*pi/10);n=10;end xx=Columns 1 through 70.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090Columns 8 through 100.5878 0.3090 0.0000Matlab Matlab 软件实习软件实习软件实习软件实习2.2.语句语句语句语句1:10 1:10 是一个标准的是一个标准的是一个标准的是一个标准的MATLAB MATLAB 数组创建语句数组创建语句数组创建语句数组创建语句.在在在在For For 循环内接受任何有效的循环内接受任何有效的循环内接受任何有效的循环内接受任何有效的MATLAB MATLAB 数组数组数组数组.data=3 9 45 6;7 16-1 5data=3 9 45 67 16-1 5for n=datax=n(1)-n(2)endx=-4x=-7x=46x=1Matlab Matlab 软件实习软件实习软件实习软件实习3.For 3.For 循环可按需要嵌套循环可按需要嵌套循环可按需要嵌套循环可按需要嵌套.例:利用例:利用for循环求循环求1!+2!+3!+5!的值!的值 sum=0;for i=1:5 pdr=1;for k=1:i pdr=pdr*k;end sum=sum+pdr;endMatlab Matlab 软件实习软件实习软件实习软件实习4.4.为了得到最大的速度为了得到最大的速度为了得到最大的速度为了得到最大的速度,在在在在For For 循环被执行之前循环被执行之前循环被执行之前循环被执行之前,应预先应预先应预先应预先分配数组分配数组分配数组分配数组.x=zeros(1,10);for n=1:10 x(n)=sin(n*pi/10);endMatlab Matlab 软件实习软件实习软件实习软件实习for语句更一般的格式为:语句更一般的格式为:for 循环变量循环变量=矩阵表达式矩阵表达式 循环体语句循环体语句 end 执行过程是依次将矩阵的各列元执行过程是依次将矩阵的各列元素赋给循环变量素赋给循环变量,然后执行循环体然后执行循环体语句语句,直至各列元素处理完毕直至各列元素处理完毕.Matlab Matlab 软件实习软件实习软件实习软件实习 例例8:写出下列程序的执行结果。写出下列程序的执行结果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a s=s+k;end disp(s);Matlab Matlab 软件实习软件实习软件实习软件实习2.while-end循环循环一般格式一般格式:while while 逻辑表达式逻辑表达式逻辑表达式逻辑表达式 循环体语句组循环体语句组循环体语句组循环体语句组 end end 表达式一般是由逻辑运算和关系运算以及一般运算表达式一般是由逻辑运算和关系运算以及一般运算组成的组成的,以判断循环的进行和停止以判断循环的进行和停止;只要表达式的值只要表达式的值非非0,继续循环继续循环;直到表达式值为直到表达式值为0,循环停止循环停止.Matlab Matlab 软件实习软件实习软件实习软件实习例例例例9 9:用:用while循环求循环求1100间整数的和间整数的和 sum=0;i=1;while isum=5050例例10:求自然数前:求自然数前n项项和和,项数项数n由键盘输入由键盘输入.Matlab Matlab 软件实习软件实习软件实习软件实习3 3breakbreak语句和语句和语句和语句和continuecontinue语句语句语句语句 与循环结构相关的语句还有与循环结构相关的语句还有break语句和语句和continue语句语句.它们一般与它们一般与if语句配合使用语句配合使用.breakbreak语句语句语句语句用于终止循环的执行用于终止循环的执行.当在循环体内执行当在循环体内执行到该语句时到该语句时,程序将跳出循环程序将跳出循环,继续执行循环语句的继续执行循环语句的下一语句下一语句.continuecontinue语句语句语句语句控制跳过循环体中的某些语句控制跳过循环体中的某些语句.当在循当在循环体内执行到该语句时环体内执行到该语句时,程序将跳过循环体中所有程序将跳过循环体中所有剩下的语句剩下的语句,继续下一次循环继续下一次循环.Matlab Matlab 软件实习软件实习软件实习软件实习例例11:求求100,200之间第一个能被之间第一个能被21整除的整数整除的整数.程序如下:程序如下:for n=100:200 if rem(n,21)=0 continue end break end nMatlab Matlab 软件实习软件实习软件实习软件实习 循环的嵌套循环的嵌套如果一个循环结构的循环体又包括一个循如果一个循环结构的循环体又包括一个循环结构环结构,就称为循环的嵌套就称为循环的嵌套,或称为多重循环或称为多重循环结构结构.多多重重循循环环的的嵌嵌套套层层数数可可以以是是任任意意的的,可可以以按按照照嵌嵌套套层层数数,分分别别叫叫做做二二重重循循环环、三三重重循循环环等等.处处于于内内部部的的循循环环叫叫作作内内循循环环,处处于于外外部部的的循循环环叫作外循环叫作外循环.Matlab Matlab 软件实习软件实习软件实习软件实习例例例例1212:若一个数等于它的各个真因子之和若一个数等于它的各个真因子之和,则称该数则称该数为完数为完数,如如6=1+2+3,所以所以6是完数是完数.求求1,500之间的全之间的全部完数部完数.for m=1:500 s=0;for k=1:m/2 if rem(m,k)=0 s=s+k;end end if m=s disp(m);end end