专题三MATLAB程序流程控制
文章目录
一、顺序结构程序
1、脚本文件和函数文件
- 脚本文件:可以在命令行窗口直接执行的文件,也叫命令文件。
- 函数文件:定义一个函数,不能直接执行,而必须以函数调用的方式来调用它。
2、文件的建立
(1)用命令按钮创建
(2)用edit命令创建
(3)例子
脚本文件
- 建立脚本文件f1.m
- 在命令行窗口运行脚本文件
函数文件: - 建立函数文件f1.m
- 在命令行窗口调用函数文件
3、顺序结构
(1)数据的输入
A=input()
(2)数据的输出
disp(输出项)
(3) 程序的暂停
pause(延迟秒数),若省略秒数,则直接暂停程序,指导用户按下任意键之后才会继续。
若强行中止程序的运行可以用Ctrl+C。
(4)例子
有一线段AB,A的坐标为(1,1) ,B的坐标为(4.5,4.5),求AB的长度及黄金分割点C的长度。
二、用if语句实现选择结构
1、单分支if语句
- 语句格式:
if 条件
语句组
end - 当条件结果为标量时,非零表示条件成立,零表示条件不成立。
- 当条件结果为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立。
例如:[1,2;0,4]表示条件时,条件不成立;[12;3,4]表示条件时,条件成立。
2、双分支if语句
- 语句格式:
if 条件
语句组1
else
语句组2
end - 例子:输入一个整数,若为奇数则输出其平方根,否则输出其立方根
3、多分支if语句
- 语句格式:
if 条件1
语句组1
elseif 条件2
语句组2
……
elseif 条件m
语句组m
else
语句组n
end - 例子:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符,则输出其对应数的平方,若为其他字符则原样输出。
三、用switch语句实现选择结构
1、语句格式
switch 表达式
case 结果表1
语句组1
case 结果表2
语句组2
……
case 结果表m
语句组m
otherwise
语句组n
end
- switch表达式应该是一个其值可以列举的表达式
- case结果表为switch表达式的取值,当取值有多个时,用单元数据表示
例子1
输入一个英文单词,判断它是否以元音字母开头
四、用for语句实现循环结构
1、for语句
- 语句格式:
for 循环变量=表达式1:表达式2:表达式3
循环体语句
end
(表达式1为初值,表达式2为步长,表达式3为终值) - for语句针对向量的每一个元素执行一次循环体。
- 退出循环之后,循环变量的值就是向量中最后的元素值。
- 当向量为空时,循环体一次也不执行。
2、例子:求圆周率Π
(1)利用无穷级数展开式求Π的近似值
用向量求和的方式实现程序:
(2)利用定积分的近似值求Π的近似值
(3)利用蒙特卡洛法求Π的近似值
3、for语句更一般的格式
for 循环变量=矩阵表达式
循环体语句
end
执行过程中,是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直到各列元素处理完毕。
例如:
for [1,2,3,4] 执行4次
for [1;2;3;4] 执行1次
五、用while语句实现循环结构
1、语句格式
while 条件
循环体语句
end
(while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,用for语句更方便)
- 例子:从键盘输入若干个数,当输入0时候结束,求这些数的和,以及平均数
2、break语句和continue语句
break语句用来跳出循环体,结束整个循环。
continue语句用来结束本次循环,接着进行下一次是否执行循环的判断。
例:求[100,200]之间第一个能被21整除的整数
3、循环的嵌套
例:用筛选法求出某自然数范围内的全部素数
六、函数文件的定义与调用
1、函数文件的基本结构
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
(当有多个形参时,形参之间用逗号分隔,组成形参表。当输出形参表多于一个时,应该用方括号括起来,构成一个输出矩阵)
2、函数调用
- 调用格式
[输出实参表]=函数名(输入实参表)
(在调用函数时,函数输入输出参数称为实参。)
例子:编写函数文件,求半径为r的圆的面积和周长
3、匿名函数
基本格式
- 函数句柄变量=@(匿名函数输入参数)匿名函数表达式
- 函数句柄变量=@函数名
(函数名为内部函数或者自定义函数)
4、例子
七、函数的递归调用
1、函数的嵌套调用
在函数的定义中调用其他的函数,即函数的嵌套调用。
2、函数的递归调用
若函数调用它自身,则称为函数的递归调用。如:
function f=fact(n)
……
fact(n-1)
……
(1)直接递归调用
(2)间接递归调用
(3)例1:利用函数的递归调用,求n!
(2)验证斐波那契数列的性质
八、函数参数与变量的作用域
1、函数参数的可调性
nargin——输入实参的个数
nargout——输出实参的个数
例子:
2、全局变量和局部变量
- 局部变量:在程序中只在特定过程或函数中可以访问的变量
- 全局变量:作用域是整个MATLAB 工作空间,全程有效,所有的函数都可以对它进行存取和修改。
定义格式:global 变量名