《第6章程序设计.ppt》由会员分享,可在线阅读,更多相关《第6章程序设计.ppt(28页珍藏版)》请在优知文库上搜索。
1、第6章 程序设计 6.1 关系运算和逻辑运算 6.2. 顺序语句 6.3 循环语句 6.4 条件语句 6.5 试探结构 6.6 流控制命令 6.7 综合实例 6.1 关系运算和逻辑运算2.1.1 常量 6.1.1 关系操作运算关系操作运算是用关系操作符来实现,它可用来比较两个标量,或两个同样关系操作运算是用关系操作符来实现,它可用来比较两个标量,或两个同样大小的数组,或一个数组和一个标量(实际是数组中的每一个元素与标量比大小的数组,或一个数组和一个标量(实际是数组中的每一个元素与标量比较),比较结果产生较),比较结果产生0(逻辑假,(逻辑假,false)或者)或者1(逻辑真,(逻辑真,ture
2、)。)。格式格式 a op b % a和和b是算术表达式、变量、字符串等,是算术表达式、变量、字符串等,op是一是一 种关系运算符种关系运算符首页首页比较关系运算符及含义比较关系运算符及含义关系运算符含义关系运算符含义关系运算符含义=大于或等于大于=不等于A=1: 9, B=10-A, r0=(A A=1: 9, B=9: -1: 1A =1 2 3 4 5 6 7 8 9B =9 8 7 6 5 4 3 2 1 L1=A3&B L2=A3|B L3= xor(A3,B L4=AL4 =0 0 0 0 0 0 0 0 06.1.3 运算优先级首页首页当多个运算符和变量写成一个MATLAB表达式
3、时,运算符的优先次序必须明确。通常所有的运算符,算术运算符优先级最高,关系运算符次之,逻辑操作符的优先级最低。具体优先级次序在表6-3中依从上到下的顺序由高到低排序。同一行的各运算符具有相同的优先级,其运算符法则是在表达式中从左到右依次进行运算。表表6-3 各种运算符优先级排序各种运算符优先级排序优先级运算符最高()小括号转置 . 数组乘方 矩阵乘方逻辑非(not,).* 点乘 ./点除 乘法 除法加减法冒号关系操作符(=,=,=,=)逻辑与(and,&)最低逻辑或、逻辑异或(or,xor,|)首页首页6.2. 顺序语句格式 expression %执行表达式命令,显示表达式值variable
4、=expression %将表达式赋值给变量variable 【例6-3】利用顺序结构编写绘制函数 的图形。yxsin2xsyms x %1先定义符号变量xy=x*sin(2*x) %2写出函数ezplot(y,0,4*pi) %3画简易图grid on %4加格线ylabel(y) %5给纵轴加标签y024681012-10-50510 xx sin(2 x)y6.3.1 for循环1for 语句的简单形式格式 for variable=expression statements end说明 每当循环变量variable取expression中的一个值时,就执行循环体statements一次
5、,直到取完expression中的值。expression常用数组形成表示。首页首页6.3 循环语句【例6-4】编写求100!的程序,利用公式k!=(k-1)!k。s=1;for k=1:100s=s*k;ends运行结果如下:s =9.3326e+157首页首页【例【例6-5】编写利用数组指定循环变量的值,并计算各取值的三次】编写利用数组指定循环变量的值,并计算各取值的三次方的程序。方的程序。A= 1 3 5 7 9; %给定循环变量取值数组给定循环变量取值数组B=zeros(size(x); %给给B预先分配存储空间预先分配存储空间k=0;for x=A %依次取依次取A中的元素中的元素
6、k=k+1; B(k)=x.3; %计算计算A每个元素的三次方每个元素的三次方endC=A; B %显示显示A,及与,及与A对应的值对应的值B运行结果如下:运行结果如下:C =1 3 5 7 91 27 125 343 729运行结果如下:B =1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9 注:使用循环结构,在循环指令之前尽量对数组进行预定义,分配存储空间大小。首页首页2多重嵌套的for循环【例6-6】多重嵌套的for循环举例。A=5;B=zer
7、os(A,A) ; %给B预先分配存储空间for m=1:A for n=1:A B(m,n)=1/(m+n-1); %计算输入的两个值的和,再减一的倒数 endendformat rat %有理分式显示6.3.2 while 循环 首页首页格式格式 while expression statements end说明说明 while语句可不定次数地重复执行语句可不定次数地重复执行statements。当。当expression为逻辑真或非零值时,就重复执行为逻辑真或非零值时,就重复执行statements。因此,。因此,expression的值应该受到的值应该受到statements的影响,否
8、则这种循环无法结束。通常表达的影响,否则这种循环无法结束。通常表达式给出的是一个标量值,但也可以是数组或者矩阵,如果是后者,则式给出的是一个标量值,但也可以是数组或者矩阵,如果是后者,则要求所有的元素都必须为真。要求所有的元素都必须为真。【例6-7】 2012年1月我国银行存款年利率为3.5%,若将10万元钱于当月存入银行,问多长时间会连本带利翻一番(假定利率保持不变)?利用公式:M=M0(1+r),其中M0为本金,r为年利率,M为一年后的连本带利。m=10; %初始值k=0;while m20; %翻一番 m=m*(1+3.5/100) k=k+1end运行结果如下:(只写出最后两项)m =
9、19.8979k =20m =20.5943k =21故需要故需要21年后才能连本带利翻一番。年后才能连本带利翻一番。首页首页上面的程序每次循环显示的结果都是上面的程序每次循环显示的结果都是k和和m,若调用的话,不太方便,为此,若调用的话,不太方便,为此给出用向量的形式显示其结果的程序:给出用向量的形式显示其结果的程序:m(1)=10;k=1;while m(k)20 m(k+1)=m(k)*(1+3.5/100); k=k+1;endk,m运行结果如下:k = 22m = 10.0000 10.3500 10.7122 11.0872 11.4752 11.8769 12.2926 12.7
10、228 13.1681 13.6290 14.1060 14.5997 15.1107 15.6396 16.1869 16.7535 17.3399 17.9468 18.5749 19.2250 19.8979 20.5943由于第一年存款本金作为序号1,故序号k = 22,也表明第21年后才能连本带利翻一番,与上述结果一致。首页首页1if-end结构格式 if expression statements end说明 当表达式expression的值为逻辑真或非零值时,执行语句组statements。expression通常由关系操作符、逻辑运算符、算术运算符等构成,statements可
11、以是多个语句。6.4 条件语句6.4.1 if-else-end结构例如,判断当a为偶数时,显示a是偶数,并计算a/2;否则不作任何处理。If rem(a,2)=0disp(a is even)b=a/2;end首页首页2if-else-end结构格式 if expression statements1 else statements2 end说明 当expression为逻辑真或非零值时,执行statements1;否则执行statements2。 首页首页3有多个条件式的if-else-end结构格式格式 if expression1 statements1 elseif expressi
12、on2 statements2 else statements3 end说明说明 当当expression1为逻辑真或非零值时,执行为逻辑真或非零值时,执行statements1;当;当expression1为逻辑假或零值,且为逻辑假或零值,且expression2为逻辑真或非零值时,执行为逻辑真或非零值时,执行statements2;当;当expression1和和expression2均为逻辑假或零值时,执行均为逻辑假或零值时,执行statements3。【例6-9】利用if结构判断输入的数值。n=input(请输入一个数n:)if n mtimesInner matrix dimensi
13、ons must agree.6.6 流控制命令6.6.1 continue命令continue命令的作用是结束本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断,它用在for或while循环结构体内,并和if语句合用来强制终止循环。【例6-12】编写程序:显示1到10中的奇数。for i=1:10 if rem(i,2)=0 continue else disp(i) endend显示的结果为:1 3 5 7 96.6.2 break命令break命令的作用是终止本次循环,跳出最内层循环,即命令的作用是终止本次循环,跳出最内层循环,即不必等到循环的结束而是根据条件退出循
14、环,它用在不必等到循环的结束而是根据条件退出循环,它用在for或或while循环结构体内,并和循环结构体内,并和if语句合用来强制终止循环。语句合用来强制终止循环。【例【例6-13】已知,求】已知,求y不超过不超过6的最大的最大n的值,的值,以及以及n对应的对应的y值。值。y=0;k=1;while k x=1/k; y=y+x; if y6 break; end k=k+1;endn=k-1y=y-x首页首页运行结果如下:运行结果如下: n =226y =6.0000需要注意的是,当break 命令碰到空行时,将退出while循环。6.6.3 return命令 return命令可使正在运行的
15、函数正常退出,并返回调用它的函数继续运命令可使正在运行的函数正常退出,并返回调用它的函数继续运行。经常用于函数的末尾作为正常结束函数的运行,当然也可用在某条件满行。经常用于函数的末尾作为正常结束函数的运行,当然也可用在某条件满足时强行结束执行该函数。足时强行结束执行该函数。首页首页6.6.4 error和warning命令格式 error(message) warning(message)说明 error命令是用来指示出错信息并终止当前函数的运行,warning命令用来指示警告信息后程序仍继续运行。6.6.5 input命令格式格式 x=input(n) %在屏幕上显示提示信息在屏幕上显示提示
16、信息n,等待用户的输入,等待用户的输入(可以可以 是一个数或一个代数式是一个数或一个代数式),并将输入值,并将输入值(或运算后的或运算后的 值)赋给变量值)赋给变量xy=input(n,s) %返回的字符串作为文本变量而不是作为变量名或者返回的字符串作为文本变量而不是作为变量名或者 数值数值说明说明 在提示信息字符串中,在提示信息字符串中,n表示换行,表示换行,表示一个反斜杠表示一个反斜杠。首页首页例如: x=input(请输入运算式:)请输入运算式:7+8*9x = 79 y=input(请输入字符串式:,s)请输入字符串式:abcy = abc6.6.6 keyboard命令命令keyboard被放置在M文件中,将停止文件的执行并将控制权交给键盘。通过在提示符前显示K来表示一种特殊状态。如在某个位置加入keyboard 命令,则执行到这句话时,MATLAB 的命令窗口将显示如下代码:K如果要恢复正常的指示符(),只需在(K)之后输入return即可。6.6.7 pause命令格式pause %停止M文件的执行,按任意键继续pause(n) %中止执行程序n秒后继续,n是任意实数pa