什么是流程控制
相信我们会对以下图片很熟,没错!就是我们衡水金卷时常能看到的玩意——程序框图,程序框图也叫流程框图,其目的是为了能让程序按照你设置的一些条件运行。
说得很空,我们来举个例子:有一天小鬼头想去领养猫猫,可她却没有时间,她决定让她的男朋友帮忙,她不知道猫猫店的猫猫有什么,她决定给她男朋友发出命令,颜色来说,如果有橘色就要橘色。体重来说,要轻一点的不要肥肥的,最好在10斤以内。屁股来说要大一点。那么这段命令就是一段流程控制了,黄帅锅可以根据收到的命令进行判断,执行领养猫这一操作。
那怎么对程序进行流程控制呢
那就要用程序的语言了,matlab的话就是这些:
if...else...end
先来看if和else,if就相当于我们中文的如果,格式是if(xxx),程序会对xxx进行判断,然后会对判断结果进行操作。
具体流程:
我们来看具体例子,我们定义一个变量x=5,一个y=5,然后我们设计一个程序,判断x是不是小于10,是就让x+5,不是就让y+5.
很清楚得看到在if条件语句程序判断x的值小于10,执行了下面那条y=y+5,而没有执行else下面的x=x+5,输出的结果x是5,y是10。(surprise)
if...elseif...elseif...else...end
这个语句其实本质上就是if语句,if相当于中文的如果,else if相当于不行的话这样行不行,原谅我说得有点飘。打个比方,小鬼头又想去买猫猫了,这次她想这样判断猫猫,先看颜色,颜色是橘色就直接买,不是橘色就看体重,少于九斤就直接买,没有小于九斤的屁股肥才买,如果都不满足,就不买。
写成伪程序就是:
if(是橘猫吗?) 买。 else if(体重小于九斤吗) 买它 else if(屁股肥吗) 买! else 不买! end
那再matlab要怎么写呢,我们设y=0,想设计一个程序判断x的值,如过大于10就让y+1,小于10但大于5就让y+2,小于5但大于3就让y+3
可以看到结果,x不大于10,所以不执行y=y+2,x不大于5,也不执行y=y+2,直到判断x大于3是真,所以执行y=y+3,然后跳到end了。
switch语句
格式:case后面一定要跟常量
switch 表达式
case 数值1
程序模块1
case 数值2
程序模块2
case 数值3
程序模块3
......
otherwise
程序模块 n
end
switch作为英文单词有很多意思,主要是切换和选择两个意思,再程序控制中switch更接近选择。怎么用呢?我们又来打比方了,小鬼头在5中的时候,经常会因为不知道吃什么而烦恼,于是她想根据中午学校饭堂卖什么吃的来选择甜点,中午吃鸡扒饭就买龟苓膏,中午次排骨就买双皮奶,中午次烤肉就买肥宅,如果中午不次鸡扒饭也不次排骨也不次烤肉,小鬼头就去买哈根达斯。
伪代码:
设x为中午午饭 switch x case 鸡扒饭 买龟苓膏 case排骨 买双皮奶 case 烤肉 买肥宅 otherwise 买哈根达斯 end
那我们来看看一个实际问题,假设小明考了90分,倘若学校规定90分为优秀,80分为良好,除此以外什么也不是,我们用switch语句来给小明做判定
可以看到switch判断x==90,小明最终是优秀,我们回到刚刚说的case后面跟的是常量,你只能判断x是不是一个数,而不能判断它和数的关系,例如x大于90吗?这种判定是不能用switch的,所以一般来说switch的应用比if...else来的要少。
循环控制
什么是循环控制呢,循环控制简单来说就是控制你写的一段代码在有限次次数内执行。
我们看上图,从上方黑点开始,先判断条件condition,若为真就执行循环代码,若为假就结束,为真执行循环代码后继续判断,直到有一次为假就结束循环。
循环在生活中的逻辑肥肠容易理解,例如小鬼头说:”我今天不抽到6星不睡觉“。那么这里的逻辑就是,判断自己抽没抽到6星,抽不到就继续抽,抽到了就睡觉。
循环在程序中的好处就是能用简单的代码使循环体被执行很多次,避免了程序员写很多代码的困难。
for循环
格式:
for 循环变量=表达式1:表达式2:表达式3
循环体
end
其中表达式1为循环变量初值,表达式2为每次递增的步长省略时为1,表达式3为循环变量终值。
其逻辑意义就是判断现在的循环变量到达3没有,没到达就执行循环体循环,变量再按照表达式2递增,到了就结束循环。
例如我们想输出1到5这5个数字,当然我们可以在matlab打这5个数字实现,那100呢?1000呢?这就需要用循环了。
我们的目的是计算1到5的和,所以我们需要1到5这5个数字,所以我们可以控制循环变量初始值为1,终止值为5。
再比如我们想计算1到5的和,我们用一个变量sum存我们的答案
同理我们可以计算1到100的和,1到100的积
我们再来看一道例题,计算1/n2的和其中n从1到100。
我们还是用sum代表答案。
再来我们看看其他的基本操作,例如和if else搭配。
我们如果想计算1到10的偶数有多少个。
其中mod(a,b)代表a/b的余数,例如mod(5,3)=2。
mod(i,2)==0代表此时的i/2的余数与0相等。
还有要注意的地方就是if也要搭配end使用,所以一共会有两个end
while循环
while循环的逻辑和for是一样的,只是格式不同,for用循环变量判断循环的起止条件。
while循环用程序写的表达式判断。
格式:while(表达式)
循环体
end
首先判断表达式是否为真,为真就执行循环体,再判断,直到为假结束循环
我们可以用while控制一些我们不知道会循环多少次的程序流程。
例如我想计算1+2+3+...一直加下去直到和>=100就不加了