• matlab初学第四课•Layton大讲堂之 matlab简单的判断流程控制


    什么是流程控制

      相信我们会对以下图片很熟,没错!就是我们衡水金卷时常能看到的玩意——程序框图,程序框图也叫流程框图,其目的是为了能让程序按照你设置的一些条件运行。

      说得很空,我们来举个例子:有一天小鬼头想去领养猫猫,可她却没有时间,她决定让她的男朋友帮忙,她不知道猫猫店的猫猫有什么,她决定给她男朋友发出命令,颜色来说,如果有橘色就要橘色。体重来说,要轻一点的不要肥肥的,最好在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就不加了

     

      

        

        

  • 相关阅读:
    SpringBoot全局日志管理(AOP)
    SpringBoot集成Shiro
    MybatisPlus使用介绍
    SpringBoot集成MybatisPlus
    SpringBoot集成多数据源
    SpringBoot事务管理
    ETL 工具和 BI 工具
    oracle中行转列操作
    Oracle基本数据类型总结
    LINUX中lrzsz软件的使用
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/12505286.html
Copyright © 2020-2023  润新知