震惊!灭霸再次哭晕在厕所竟然是因为它:函数

在南瓜爸爸前面的几节课中陆陆续续介绍了少儿编程的基本概念,包括什么是编程,编程的基本逻辑,编程的基本要素。上一节课中我们讲到了变量、判断和循环,相信各位爸妈应该对这些内容已经比较了解了,如果不了解的还请翻一翻之前的文章看看哈。

不少朋友有些着急,为什么现在还是没有看到真正的编程呢?什么时候才能看到你讲编程软件啊?

你们以为的南瓜爸爸编程是这样的

实际上南瓜爸爸是这样的

南瓜爸爸心里也着急啊,但是编程的事情还真没有办法急。无论学习什么新的知识,前期建立对知识的体系结构和基本概念总是绕不过去的,南瓜爸爸尽量把入门的内容进行简化,并且去掉了很多不容易理解的部分。还请各位爸妈坚持哦,还有2-3节课我们入门的部分就会结束,将会进入真正的实践阶段了。各位爸妈最想看到哪些编程软件、编程语言的介绍也可以留言给我噢。

开始之前

今天介绍的是编程中另一个非常基本的概念:函数。可以说每一个真正的编程语言中都有函数,掌握函数的编写将会让程序代码更加容易理解,并且很容易进行修改和扩展。

好了,下面进入今天的主题。

什么是函数?

数学里的函数

说到函数(英文:function)相信各位爸妈门一定比较熟悉,毕竟我们在数学课程上都学过,一个典型的数学里的函数是这样的:

f(x) = ax+b

其中 x 是变量,f(x)是针对变量x的函数,ax+b 是函数的主体,其中a、b为常数(可以是任意数字)。

y=f(x),给变量x任何一个值,必定会得到一个对应的值y。

编程里的函数

编程里的函数定义南瓜爸爸认为更加宽泛一些,我们换个角度来看数学里的函数:

把x看作是一个输入,y看作是一个输出,f(x)为函数。

把f(x)比喻成一个盒子,从盒子的左侧丢进去一个x的值,盒子把x进行加工,加工的方法就是 ax+b,右边蹦出来一个值,就是y,也就是函数的输出。

所以在这个栗子里

假设一个数学函数 f(x)=2x+1

我们给定x一个值2,会得到f(x)的值5

我们用编程的角度去看这个函数

给变量x一个输入值 2, 函数会输出一个值 5

怎么样?

函数是不是像一个实现特殊功能的工具箱

放进去一个 2 ,制作出一个 5

南瓜爸爸用编程中的函数演示一下

function line(x)

{

return 2x+1

}

function 后面的名字 line(x) 就是函数名,其中 x 就是我们说的输入啦,{ } 中间的内容就是函数的功能,最后有个return,就是把函数最终处理的结果“返回”出去。

推而广之,函数不仅可以把一个数值作为输入,它可以将某个特殊的对象作为输入,同样的,它不仅能够进行加减乘除等数值方面的计算,它还能对对象进行更加丰富的操作,比如移动对象、判断对象是否符合某个条件、获取对象某个时刻的状态等等。

另外,对于一个函数在实际过程中不止可以可以输入一个变量,可以是多个,同样一个或多个输入可以输出一个值,也可以输出多个值

比如,2个输入的情况:

function move(x,y)

{

return 2x+3y+1

}

在这节课程当中南瓜爸爸还是以输出一个值的情况进行介绍,不然小朋友都要懵啦!

为什么需要函数?

南瓜爸爸之前介绍过,编程就是编写代码,我们一行一行把指令写出来不就可以完成任务了,那为什么需要函数呢?因为呀,它有个极其特殊的特点

函数可以重复使用

再来个栗子,我们在编写的指令里面会不时不时需要判断当前x的值,如果它小于5,我们需要发出警报,并把x值加上5;如果它大于15,也需要发出警报,并把x值减去5,那么看起来是这样的:

变量 x 的值是 8

x值加了3

if x 小于 5 : 发出警报;x的值加上5

if x 大于 15: 发出警报;x的值减去5

x值加了6

if x 小于 5 : 发出警报;x的值加上5

if x 大于 15: 发出警报;x的值减去5

x值减去12

if x 小于 5 : 发出警报;x的值加上5

if x 大于 15: 发出警报;x的值减去5

...

上面的代码是不是看起来特别啰嗦?如果哪天我们需要在x小于5的时候增加6而不是5,那岂不是要把所有包含这句的代码全部修改一遍?天呀,想一想就是灾难!

好了,现在我们搬出百宝箱函数,改造一下上面的代码,首先定义一个alarm(x)的函数

function alarm(x)

{

if x 小于 5 : 发出警报;x的值加上5

if x 大于 15: 发出警报;x的值减去5

}

接着,代码就变成了

变量 x 的值是 8

x值加了3

alarm(x)

x值加了6

ialarm(x)

x值减去12

alarm(x)

...

各位爸妈是不是发现代码很好理解了!是不是再也不怕报警的规则发生变化了,我们可以想怎么改就怎么改,只要改函数里的代码就可以了!

这样很直观理解为什么要使用函数了吧。

好了,这次我们还是要在上节课的基础上进一步对程序进行优化,还记得上节课的内容吗?钢铁侠寻找灭霸夺回无限宝石,再次摆上任务图:

再把上节课最后的代码摆上

把钢铁侠前进的方向设置为一个变量

钢铁侠前进方向 是 右

while 没有找到 灭霸

{

在 钢铁侠前进方向 上前进一格

if 这一格是 灭霸 : 完成任务,停止

if 当前位置到达边界:那么 向 上 前进 一格 ;并把 钢铁侠前进方向 改为当前方向的反方向

}

这次,南瓜爸爸担心钢铁侠找不到灭霸,准备多找几个超级英雄们去找一找,这样就一定能找到灭霸啦。跟着南瓜爸爸又一次踏上寻找灭霸的征程!为什么说“又”呢?好了,灭霸不哭。

我们这样改进

function 找灭霸(超级英雄)

{

把 超级英雄 前进的方向设置为一个变量

超级英雄 前进方向 是 右

while 没有找到 灭霸

{

在 钢铁侠前进方向 上前进一格

if 这一格是 灭霸 : 完成任务,return 灭霸

if 当前位置到达边界:那么 向 上 前进 一格 ;并把 超级英雄 前进方向 改为 当前方向的反方向

}

}

找灭霸(钢铁侠)

找灭霸(星爵)

找灭霸(美队)

找灭霸(雷神)

...

各位小朋友举起你们的小手,跟南瓜爸爸一起来:

钢铁侠去找灭霸,

钢铁侠找完星爵找,

星爵找完美队找,

美队找完雷神找

...

感谢收看!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180527G129CW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券