,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,3,章,MATLAB,程序设计,1,本章目标,掌握,MATLAB,的几种基本控制转移语句,学会使用,M,文件进行编程,具备对复杂问题的编程求解能力,2,主要内容,3.1,程序设计概述,3.2 MATLAB程序结构,3.3 M文件,3,3.1,程序设计概述,MATLAB,是第四代编程语言,程序简洁,可读性很强,调试容易,编程效率高,易移植和维护,通过编程可求解复杂性更高或特殊的问题,4,3.2 MATLAB,程序结构,按照程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合来实现,:,顺序结构,:程序按程序语句或模块在执行流中的顺序逐个执行。,选择结构,:程序按设定的条件实现程序执行流的多路分支。,循环结构,:程序按给定的条件重复地执行指定的程序段或模块。,5,3.2.1,顺序结构,程序,模块,1,程序模块,2,MATLAB,中实现顺序结构的方法非常简单:,只需将程序语句顺序排列即可,6,3.2.2,选择结构,在,MATLAB,中,选择结构由两种语句结构实现:,if,语句,switch,语句,条件,程序模块1,成立,不成立,程序模块2,3.2.2,选择结构,7,if,语句,if,表达式,程序模块,1,else,程序模块,2,end,8,if,语句的两种变形,(1),单分支,if,语句:只有一个分支的选择结构,if,表达式,程序模块,end,(2),多分支,if,语句:超过,2,个的选择,if,表达式,1,程序模块,1,elseif,表达式,2,程序模块,2,elseif,表达式,n,程序模块,n,else,程序模块,n+1,end,9,例:将百分制的学生成绩转换为五级制的成绩输出,clear,n=input(,输入,n=);,if n=90,r=A,elseif n=80,r=B,elseif n=70,r=C,elseif n=60,r=D,else,r=E,end,运行结果:,输入,n=87,r=,B,10,2.switch,语句,switch,表达式,case,数值,1,程序模块,1,;,case,数值,2,程序模块,2,;,otherwise,程序模块,n,end,11,例:将百分制的学生成绩转换为五级制的成绩输出使用,switch,语句,clear,n=input(,输入,n=);,switch fix(n/10),case 10,9,r=A,case 8,r=B,case 7,r=C,case 6,r=D,otherwise,r=E,end,运行结果:,输入,n=65,r=,D,12,3.2.3,循环结构,在,MATLAB,中,循环结构可以由两种语句结构实现:,for,语句循环结构,while,语句循环结构,程序模块,不成立,成立,条件,3.2.2,选择结构,13,1,for,语句循环结构,for,循环变量起始值:步长:终止值,循环体,end,14,例:使用,for,结构计算,1+2+3+100,clear,sum=0;,for i=1:100,sum=sum+i;,end,sum,运行结果:,sum=,5050,15,2,while,语句循环结构,while,表达式,循环体,end,16,例:使用,while,结构计算,1+2+3+100,clear,sum=0;i=0;,while i100,i=i+1;,sum=sum+i;,end,sum,运行结果:,sum=,5050,17,3.3 M,文件,MATLAB,工作模式,命令行方式。,程序文件驱动模式,MATLAB,文本编辑器,18,3.3.1,命令文件,又称为脚本文件,是一串指令的集合。,用户只需键入该命令文件的文件名,系统就会自动逐行执行该文件中的各条语句。,适用于小规模运算。,19,3.3.2,函数文件,函数文件基本格式:,function ,输出形参列表,=,函数名(输入形参列表),注释说明语句段,程序语句段,20,扩展阅读,3.4其他流程控制语句,1.break,语句,2.continue,语句,3.return,语句,4.try,语句,5.echo,命令,6.input,命令,7.keyboard,命令,8.pause,命令,3.5函数与变量参数传递,3.5.1,子函数与私有函数,3.5.2,变量作用域,3.5.3,函数的参数传递,21,上机指导,3.6 M文件的调试,3.7 M文件性能分析与优化,3.7.1 M,文件性能分析,3.7.2 M,文件性能优化,22,应用举例,求,1,!,+2,!,+3,!,+5,!的值,clear,sum=0;,for i=1:5,pdr=1;,for k=1:i,pdr=pdr*k;,end,sum=sum+pdr;,end,sum,运行结果:,sum=,1,53,23,应用举例,鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头,36,个,脚,100,个,求笼内关了多少只兔子和多少只鸡?,clear,chicken=1;,while 1,if rem(100-chicken*2,4)=0&(chicken+(100-chicken*2)/4)=36,break;,end,chicken=chicken+1;,end,chicken,rabbit=(100-2*chicken)/4,运行结果:,chicken=,22,rabbit=,14,24,应用举例,25,学好计算机的唯一途径是,你的编程能力与你在计算机上投入的时间成,结束语,上机练习,正比,26,