Skip to content

「图形化编程」前导知识-函数

15531808282185

今天我们来了解一个新的概念-函数,你可能已经在数学课上学过,数学意义上的函数指的是从一个集合到另一个集合到映射,反应的是从一个集合如何转化到另一个集合的转化关系,但是这不是编程意义上的函数,从编程的角度来说,一个函数指的是一段代码集合,或者一个子程序,通常由 4 部分组成,分别是

  1. 函数名
  2. 输入参数
  3. 输出参数
  4. 函数体

函数是一个具体算法的封装,可以有0个到多个输入参数,可以有0条(即空函数)到多条程序指令组成的函数体,通常来说,一个函数只有0个(即没有返回值)或一个输出参数(即一个返回值),但是有些编程语言也支持多个输出参数(即多个返回值),比如 python

函数的作用

通常来说,函数的作用有两点

  1. 便于理解
  2. 可重用

有时候程序很长,我们希望把程序拆解成几个短的代码段,每一代码段完成一件事情,这个时候就可以用到函数,给函数起一个有意义的名字,可以帮助我们更容易的理解函数完成了什么工作

函数的另一个作用是重用,假设我们写了一个计算直角三角形斜边长度的算法,对两个数字先算平方,再加和,再算平方根,即
15530941314047
我们只要改变 x 和 y 的值,然后调用函数,就能算不同三角形的斜边长度啦,函数本身是不变的

变量作用域

提到了函数,就不得不提另外一个概念,变量的作用域,变量的作用域指的是一个变量的可见范围,一般来说有两种:

  1. 全局变量
  2. 局部变量

全局变量指的是一个变量是全局可见的,在程序中的任何地方都可以对这个变量进行读写操作
而局部变量则是指只在某个范围内可见的变量,比如一个变量只在一个函数里可见,出了这个函数的函数体,就找不到这个变量了,这就是局部变量

micro:bit 中的函数

在 micro:bit 中,函数模块会略显简陋,即没有输出参数,也没有输入参数,只有参数名和函数体,但是我们可以通过设置变量来模拟输入参数和输出参数,同时所有的变量作用域都是全局的,所以没办法体现局部变量的作用范围,还是通过一个例子来展示函数的定义和调用
函数模块位于 函数 分类下,只有两个模块,创建函数和调用函数
15530948786779

首先我们来定义一个函数,点击 创建一个函数 模块,它会弹出一个窗口,让我们填写函数的名字,这里我们要计算平方根,因此取名 pingfanggen

15531801875528

接着我们需要定义 3 个 变量,2 个用于输入参数,分别是 x 和 y,1 个输出参数 z

15531803437307

接下来我们来实现这个 pingfanggen 函数,我们要做的是

  1. 计算出 x 的平方,即 x * x
  2. 计算出 y 的平方,即 y * y
  3. 把 1 2 步的结果相加
  4. 求第 3 步结果的平方根
  5. 把第 4 步的结果赋值给 变量 z

15531805218726

接着我们来调用这个函数

  1. 当开机时 模块里,先分别设置 x 为 3, y 为 4,
  2. 拖动一个 调用函数 模块到 当开机时 模块里,注意选择 函数名为 pingfanggen
  3. 由于我们把计算结果放到了 变量 z 里,因此可以直接用 显示数字 模块把 z 的值输出到屏幕上

15531807721871

最后的执行结果:
15531808282185

思考题
通过尝试改变 x 和 y 的值,来看看输出的变量 z 的值有何变化

hex 文件可以从这里下载:

下载地址(请右键另存为)

0 0 votes
Article Rating
Tags:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x