zoukankan      html  css  js  c++  java
  • 程序流程控制1

    在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。

    1)顺序控制
    2)分支控制
    3)循环控制

    顺序控制介绍:

    程序从上到下逐行地执行,中间没有任何判断和跳转。


    顺序控制举例和注意事项:

    Golang中定义变量时采用合法的前向引用。如:

    func main() {
      var num1 int = 10   //声明了num1
      var num2 int = num1 + 20    //使用num1
      fmt.Println(num2)
    }

    错误形式:

    func main() {

      var num2 int = num1 + 20   //使用了num1
      var num1 int = 10   //声明num1 (X 错误的)
      fmt.Println(num2)
    }

    分支控制if-else 介绍:

    让程序有选择的执行,分支控制有三种:

      1)单分支
      2)双分支
      3)多分支


    单分支控制:

    基本语法:

    if 条件表达式{
      执行代码块
    }

    说明:当条件表达式为true时,就会执行{} 的代码。
    注意{}是必须有的,就算你只写一行代码。

    案例说明:

    请大家看个案例[ifDemo.go]:
    编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行为负责!”

    func main() {

      //分析
      //1.年龄 ==》 var age int
      //2.从控制台接收一个输入 fmt.Scanln(&age)
      //3.if判断

      var age int
      fmt.Println("请输入年龄:")
      fmt.Scanln(&age)
      if age > 18 {
        fmt.Println("你年龄大于18岁")
      }

    }

    单分支对应的流程图:

    细节说明:

    Go的if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其它地方就不起作用了【举例说明】

    func main() {
      //golang支持在if中,直接定义一个变量,比如下面的方式。
      if age := 20; age > 18 {
        fmt.Println("你的年龄大于18,要对自己的行为负责!")
      }
    }

    双分支控制:

    基本语法:

    if 条件表达式 {
      执行代码块
    }else {
      执行代码块2
    }


    说明:当条件表大会成立,即执行代码块1,否则执行代码块2。 {}也是必须有的。

    案例演示:

    编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你的年龄大于18岁,要对自己的行为负责!”。否则,输出“你的年龄不大这次放过你了。”

    func main() {
      var age int
      fmt.Println("请输入年龄:")
      fmt.Scanln(&age)
      if age > 18 {
        fmt.Println("你年龄大于18岁")
      } else {
        fmt.Println("你的年龄不大于18岁")
      }
    }

    双分支对应的流程图:

    对双分支的总结:

    1、从上图看 条件表达式就是 age > 18
    2、执行代码块1 ===》fmt.Println("你的年龄大于18")..
    3、执行代码块2 ===》fmt.Println("你的年龄不大于18")..
    4、强调一下 双分支只会执行其中的一个分支。

    练习题:
    1)编写程序,声明2个int32型变量并赋值。判断两数之和,如果大于等于50,打印“hello world!”

    func main() {
      var n1 int32 = 10
      var n2 int32 = 50
      if n1 + n2 >= 50 {
        fmt.Println("hello world!")

      }
    }


    2)编写程序,声明2个float64型变量并赋值。判断第一个数大于10.0,且第二个数小于20.0,打印两数之和

    func main() {
      var x float64 = 11.0
      var y float64 = 17.0
      if x > 10.0 && y < 20.0 {
        fmt.Println(x + y)
      }
    }


    3)【选作】定义两个int32,判断二者的和,是否能被3又能被5整除,打印提示信息
    func main() {
      var x int32 = 10
      var y int32 = 5
      if (x + y) % 3 == 0 && (x + y) % 5 == 0 {
        fmt.Println("能被3又能被5整除")
      }
    }


    4)判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除;(2)能被400整除

    func main() {
      var year int = 2020
      if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 {
        fmt.Printf("%v是闰年", year)
      }
    }

    多分支控制:

    基本语法:
    if 条件表达式 {
      执行代码块1
    } else if 条件表达式2 {
      执行代码块2
    }

    ......

    else {
      执行代码块n
    }

    案例演示1:

    岳晓鹏参加Golang考试,它和父亲岳不群达成承诺:

    如果:
    成绩为100分时,奖励一辆BMW;
    成绩为(80,99]时,奖励一台iphone7puls;
    当成绩为[60,80]时,奖励一个iPad;
    其它时,什么奖励也没有。
    请从键盘输入岳晓鹏的期末成绩,并加以判断

    func main() {
      var score int
      fmt.Println("请输入成绩:")
      fmt.Scanln(&score)

      if (score < 0 || score > 100) {
        fmt.Println("您输入错误,请输入0-100之间的数字")
      } else if score == 100 {
        fmt.Println("奖励一辆BMW")
      } else if score > 80 && score <= 99 {
        fmt.Println("奖励一台iphone7plus")
      } else if score >= 60 && score <= 80 {
        fmt.Println("奖励一个 iPad")
      } else {
        fmt.Println("什么都不奖励")
      }
    }

    嵌套分支:

    在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。

    基本语法:

    if 条件表达式 {
      if 条件表达式 {
      } else {
      }
    }


    案例1:

    参加百米运动会,如果用时8秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】,输入成绩和性别,进行判断,1分钟思考思路。
    float64 second | string gender

    func main() {
      //分析思路
      //1. 定义一个变量,来接收跑步使用秒数,float64
      //2. 定一个变量,来接收性别string
      //3. 因为判断是嵌套的判断,因此我们会使用嵌套分支

      var second float64
      fmt.Println("请输入秒数:")
      fmt.Scanln(&second)

      if second <= 8 {
        //进入决赛
        var gender string
        fmt.Println("请输入性别:")
        fmt.Scanln(&gender)
        if gender == "男" {
          fmt.Println("进入决赛的男子组")
        } else {
          fmt.Println("进入决赛的女子组")
        }
      } else {
        fmt.Println("你被淘汰了!!!")
      }
    }

    案例2:

    出票系统:根据淡旺季的月份和年龄,打印票价

    4_10 旺季:
        成人 (18-60) : 60
        儿童 (<18) : 半价
        老人 (>69) : 1/3

    淡季:
        成人:40
        其他:20


    func main() {

      //分析思路
      //1.month age 的两个变量 byte
      //2.使用嵌套分支

      var month byte
      var age byte
      fmt.Println("请输入游玩月份")
      fmt.Scanln(&month)
      fmt.Println("请输入您的年龄:")
      fmt.Scanln(&age)

      if month >= 4 && month <= 10 {
        if age > 60 {
          fmt.Printf("%v月,您是老人,您的票价是1/3", month)
        } else if age >= 18 {
          fmt.Printf("%v月,您是成年人,是正常的票价", month)
        } else {
          fmt.Printf("%v月,您是儿童,票价是半价", month)
        }
      } else {
        if age >= 18 && age < 60 {
          fmt.Println("淡季,成人票价是40元")
        } else {
          fmt.Println("淡季,老人和儿童票价是20元")
        }
      }
    }

  • 相关阅读:
    ElasticSearch实战系列一: ElasticSearch集群+Kinaba安装教程
    SpringBoot事物Transaction实战讲解教程
    SpringBoot整合Swagger和Actuator
    SpringBoot项目实现文件上传和邮件发送
    SpringBoot优雅的全局异常处理
    SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理
    SpringBoot整合Redis使用Restful风格实现CRUD功能
    SpringCloud学习系列之六 ----- 路由网关Zuul基础使用教程
    SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
    SpringCloud学习系列之四-----配置中心(Config)使用详解
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11343087.html
Copyright © 2011-2022 走看看