程序控制结构.docx
- 文档编号:24280420
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:12
- 大小:40.85KB
程序控制结构.docx
《程序控制结构.docx》由会员分享,可在线阅读,更多相关《程序控制结构.docx(12页珍藏版)》请在冰豆网上搜索。
程序控制结构
实验五
第3章MATLAB程序设计
第二节程序控制结构
程序控制结构有三种:
顺序结构、选择结构、循环结构.任何复杂的程序都可以由这三种基本结构构成.Matlab提供了实现控制结构的语句,利用这些语句可以编写解决实际问题的程序.
一、顺序结构
顺序结构是指按照程序中语句的排列顺序从上到下依次执行,直到程序的最后一个语句如例1的qiu文件和例2的dd1文件.这是最简单的一种程序结构.一般涉及数据的输入、计算或处理、数据的输出等内容.
1.数据的输入
通过input命令来接收从终端输入的内容,它也可以显示文本和提示.
命令集14输入命令
input(out,in)在屏幕上显示出字符串out的文本并等待终端的输入.如果变量in是's',则输入的内容以字符串的形式进行保存,通常MATLAB在保存前要尽可能地求出表达式的值.如果使用格式控制符号如'\n',字符串out可以是若干行.
2.数据的输出
可以通过简单地输入变量的名字来显示数字矩阵或者字符串向量的内容,结果将显示出变量的名字和内容.
另一种显示变量的值就是使用命令disp.使用它只显示出变量的内容,这是有用的,特别是在字符串的应用中.
命令集15显示命令
disp(A)显示矩阵A的内容,如果A是字符串,则显示出它的文本.
二、循环结构
循环结构是按照给定的条件,重复执行指定的语句.Matlab用于实现循环结构的语句有for—end语句和while—end语句.
1.for—end语句
for-end语句的格式为:
for循环变量=表达式1:
表达式2:
表达式3
循环体语句
end
其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值.步长为1时,表达式2可以省略.
循环语句应用时应注意:
●循环语句可以嵌套使用;
●不能在for—end循环体内改变循环变量的值;
●为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免for—end循环的使用,如例8;
●如果预先就知道循环的次数,则可以采用for—end循环;否则,如果预先无法确定循环的次数,则可以使用while—end循环.
2.while—end循环
while-end语句的一般格式为:
while(条件)
循环体语句
end
其执行过程为:
若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环.
■例1使用while-end结构计算1+2+3+…+100.
s=0;
i=1;
whilei<=100
s=s+i;
i=i+1;
end
s
s=0;
fori=1:
100
s=s+i;
end
s
解:
■例2计算Matlab中eps值(exp1.m)
num=0;EPS=1;
while(1+EPS)>1
EPS=EPS/2;
num=num+1;
end
EPS,num
解:
三、选择结构
选择结构是根据给定的条件成立或不成立,分别执行不同的语句.Matlab用于实现选择结构的语句有
条件语句:
if–end和开关语句:
switch-end.
1.单分支结构if—end语句2.双分支结构if—else—end语句
if-end语句的格式为:
if-else-end语句的格式为:
if条件表达式
语句组
end
if条件表达式
语句组1
else
语句组2
end
3.多分支结构if—elseif—else—end语句
if—elseif—else—end语句的格式为:
if条件表达式1
语句组1
elseif条件表达式2
语句组2
......
elseif条件表达式m
语句组m
else
语句组
end
■例3求函数
,输入x值,输出y值.
functiony=fuhao(x)
ifx<0
y=-1;
elseifx==0
y=0;
else
y=1;
end
解:
■例4一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数.输出全部水仙花数.
解:
程序如下
A=[];
form=100:
999
m1=fix(m/100);%求m的百位数字
m2=rem(fix(m/10),10);%求m的十位数字
m3=rem(m,10);%求m的个位数字
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
A=[A,m];
end
end
disp(A)
运行结果:
153370371407
4.switch-end语句
根据表达式的不同取值,分别执行不同的语句.其格式如下:
switch表达式
case值1
语句组1
case值2
语句组2
......
case值m
语句组m
otherwise
语句组n
end
■关于switch-end语句的几点注解:
●Matlab首先计算表达式的值,然后将它依次与各个case指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出switch-end结构
●如果所有的比较结果都为假,则执行otherwise后面的语句组,然后跳出switch-end结构
●otherwise指令可以不出现
●switch后面的表达式的值可以是一个标量或字符串
●case指令后的检测值超过一个时,应用{}括起来
method=input('请输入方法名:
')
switchmethod
case{'linear','bilinear'}
disp('Methodislinear')
case'cubic'
disp('Methodiscubic')
case'nearest'
disp('Methodisnearest')
otherwise
disp('Unknownmethod.')
end
■例5阅读程序
■例6用switch-end语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’.
functionsctole(score)
grade=fix(score/10);
switchgrade
case{10,9}
grade='A'
case8
grade='B'
case7
grade='C'
case6
grade='D'
otherwise
grade='E'
end
四、其他流程控制语句
●break语句
●continue语句
●return语句
●try语句
●echo命令
●keyboard命令
●pause命令
1.break和continue语句
与循环结构相关的语句还有break语句和continue语句.它们一般与if语句配合使用.
break语句用于终止循环的执行.当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句后的下一语句.
continue语句控制跳过循环体中的某些语句.当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环.
■例7求[100,200]之间第一个能被21整除的整数.
forn=100:
200
ifrem(n,21)~=0
continue
end
break
end
n
forn=100:
200
ifrem(n,21)==0
break
end
end
n
2.try语句
语句格式为:
try
语句组1
catch
语句组2
end
try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2.这种试探性执行语句是其他高级语言所没有的.
■例8矩阵乘法运算要求两矩阵的维数相容,否则会出
错.先求两矩阵的乘积,若出错,则自动转去求两
矩阵的点乘.
functionC=rc(A,B)%A,B为矩阵
try
C=A*B;
catch
C=A.*B;
end
lasterr%显示出错原因
3.请求键盘输入命令keyboard
暂停运行程序并处于等待键盘输入状态(便于调试及程序运行中修改变量),键入“return”程序继续运行.如
functiony=f(x)
keyboard
y=(5*x-6)/((x-3)*(x-3)+2);
>>f
K>>x=4;
K>>return
ans=
4.6667
>>y=f(4)
K>>return
y=
4.6667
运行如下:
4.echo命令(在命令窗口,程序调用前使用)
一般情况下,M文件执行时,文件中的命令不会显示在命令窗口.echo命令可使文件命令在执行时可见.这对程序的调试及演示很有用.对命令文件和函数文件,echo的作用稍微有些不同.
●对命令文件,其格式如下:
echoon打开命令文件的回应命令
echooff关闭回应命令
●对函数文件,其格式如下:
echofileon使指定的file文件的命令在执行中被显示出来
echofileoff关闭指定文件的命令在执行中的回应
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序控制 结构