今天我们进入“函数”王国,学习函数的作用。
什么是函数?
函数就是一个黑箱子,你给函数一个输入,函数就会给出一个输出。
![](https://img.haomeiwen.com/i2210978/db446d272a5d0c53.png)
举一些例子吧,我们人就是很多函数的组成。
我们看到父母和爱人,就会满心欢喜。
我们听到孩子的声音,心就会瞬间融化。
我们闻到美味的食物,就会暴露出吃货本性。
等等等等。
是什么在控制着我们的反应?
是我们身体里的函数。
我们身体里的函数控制着我们去完成一个个基本独立的动作。
就像在编程里,我们用函数去控制角色完成任务一样。
所以,你明白了吗?
函数就是这么简单,而又狂拽炫酷X炸天。。。
开始我们的闯关吧!
![](https://img.haomeiwen.com/i2210978/c7a862e2354e961b.gif)
黑猩猩用炸弹把猴子必经的河流上木桥给炸断了,猴子找到了朋友老鼠,老鼠答应帮助猴子重新搭起一座桥。
第71关
在这一关里,我们需要用火柴搭起一座桥,让猴子顺利度过河流。
合作伙伴是可爱的小老鼠们。
![](https://img.haomeiwen.com/i2210978/18012faff68956dc.png)
这是第71关的界面。
![](https://img.haomeiwen.com/i2210978/439eeb8e795ee226.png)
我们要训练老鼠,让老鼠走到中间的火柴,用嘴叼起火柴,送到左边的火柴堆上。
下面是代码界面的代码。
![](https://img.haomeiwen.com/i2210978/99b60a0339350e06.png)
每一行的代码的意思是:
第1行:让小老鼠走到火柴;
第2行:让小老鼠叼起火柴,grab()是一个系统自带的函数,完成抓取(grab)的动作;
第3行:让小老鼠走3步;
第4行:让小老鼠放下火柴,drop()是一个系统自带的函数,完成放下(drop)的动作。
分析代码和界面,我们发现,第3行代码让小老鼠走3步是不可能让小老鼠走到左边的火柴堆的。
我们可以用代码:step distanceTo pile来代替step 3.
改进后的代码如下:
![](https://img.haomeiwen.com/i2210978/eceae59e866c1f87.png)
点击运行,看看效果喽~
![](https://img.haomeiwen.com/i2210978/766e2987b5086fa8.gif)
![](https://img.haomeiwen.com/i2210978/e0430bc3a690defa.png)
第72关
运输更多的火柴,其实就是一个一个地运输。还记得我们在前面15关里学到的for循环吗?
![](https://img.haomeiwen.com/i2210978/022a5f97a62d1430.png)
我们看看界面:
![](https://img.haomeiwen.com/i2210978/454e7c09aaa68d60.png)
这一关,其实就是增加了一点难度,就是老鼠,火柴,火柴堆不在同一条直线上,所以唯一会动的老鼠需要调整方向。
会用到的关键词是turnTo。
代码区域的代码如下:
![](https://img.haomeiwen.com/i2210978/da2530a5d4d678f6.png)
第1行:转向火柴(match);
第2行:走向灌木丛(bush,就是美国前总统布什的姓);
第4行:抓取火柴;
第6行:转向火柴堆;
第7行:走向火柴堆;
分析一下,这段代码其实没有完成任务:老鼠抓取火柴并放到火柴堆上。
所以补充完全后的代码如下:
![](https://img.haomeiwen.com/i2210978/293ca5a3dda40eb9.png)
第6行:放下。
是不是很简单?
点击运行,看看效果吧~
![](https://img.haomeiwen.com/i2210978/69d413bfe27729c2.gif)
![](https://img.haomeiwen.com/i2210978/037ac04b1c0d1a73.png)
第73关
这一关会有很多火柴,我们需要老鼠一根一根地捡起来。
![](https://img.haomeiwen.com/i2210978/a60b15b901672189.png)
看看我们面临的场景。
![](https://img.haomeiwen.com/i2210978/5bee30316776df77.png)
左边动画界面上方有3根火柴,老鼠需要把这三根火柴一根一根地放到左下方的火柴堆上。
右边的代码框里,部分代码已经给出。
![](https://img.haomeiwen.com/i2210978/aeeffde6f4658fbb.png)
第1,2,8行是注释行,在写代码的时候,我们一定要写出清晰的注释,来解释我们的代码是用来做什么的,这样子方便自己以后查阅,也方便别人使用我们的代码。这一点一定不要省略,方便别人就是方便自己。
第4-7行是一个for循环,让小老鼠对每个火柴都做这样的动作:面向火柴,走向火柴,抓取火柴。
这显然是不够的,我们还需要老鼠再抓取火柴之后,面向火柴堆,走向火柴堆,放下火柴。
所以我们可以对代码做如下改进:
![](https://img.haomeiwen.com/i2210978/f8f9fbf4a8b84dbc.png)
点击运行,看看效果吧!
![](https://img.haomeiwen.com/i2210978/abd7d6067628900d.gif)
![](https://img.haomeiwen.com/i2210978/2e8f3f0ae94dc34a.png)
第74关
这一关,我们可以学习如何定义一个函数。
![](https://img.haomeiwen.com/i2210978/2055345961e36848.png)
我们看看这一关的界面:
![](https://img.haomeiwen.com/i2210978/fe7926684f552f57.png)
在左边,还是老鼠,火柴,火柴堆组成一个三角形。
在右边,代码是这样写的:
![](https://img.haomeiwen.com/i2210978/a6ebb31983e0b229.png)
在第2-4行里,我们看到如何定义goto函数。
第2行:goto = (t)的含义是goto这个函数的输入是t这个对象;
第3,4行是goto函数的输出:先面向t(turnTo t),然后走向t(step distanceTo t);
所以2-4行的代码就是把面向,走向两个操作放在一起去执行。
第7行,就是调用这个goto函数了,goto match的意思是面向并走向火柴(match)。
第8行,就是面向并走向火柴堆(pile)。
如果只是让小老鼠面向并且走向火柴,火柴堆,还是没有执行叼起火柴,放下火柴的操作。
所以我们改进代码如下:
![](https://img.haomeiwen.com/i2210978/cc7c992d4229de96.png)
点击运行,效果如下:
![](https://img.haomeiwen.com/i2210978/67e68d4f92e983c7.gif)
![](https://img.haomeiwen.com/i2210978/22c4030ff16ae05f.png)
闯关成功!
第75关
是不是觉得函数让我们的代码变得简单了很多?
原先小老鼠要先面向火柴,在走向火柴,如果忘记其中一个操作,代码就会运行不畅。因此,我们总是担心会漏写了其中一个操作。
现在好了,只需要把这两个操作打包在一起,写进一个函数里,就可以让我们在后面的代码里省却了这份担心。
![](https://img.haomeiwen.com/i2210978/f0bbb2106a83180d.png)
看看今天最后一关的界面:
![](https://img.haomeiwen.com/i2210978/d9c74597894c022b.png)
老鼠要把火柴叼起来并且放在火柴堆上,但是现在火柴在河对面,所以老鼠需要先走到木桥上。
我们看看代码框里已经给出的代码:
![](https://img.haomeiwen.com/i2210978/e91d1db7ec5bd9b1.png)
依然是提前定义好了goto函数,goto t就是先面向t再走向t。
小老鼠要完成“把火柴叼起来并且放在火柴堆上”这个任务,需要先goto木桥,然后goto火柴,叼起火柴,接着goto木桥,最后goto火柴堆,放下火柴。
这样一个过程可以用下面这段代码实现:
![](https://img.haomeiwen.com/i2210978/0081c8982c3dfc41.png)
点击运行,看看有没有写错什么。
![](https://img.haomeiwen.com/i2210978/52d3ac4f30cb47ce.gif)
成功!
![](https://img.haomeiwen.com/i2210978/c92cf2fdc84f46f1.png)
是不是觉得函数很简单呢?
总结:
Q: 为什么需要函数?
A: 我们经常需要先后执行一些操作,而且这些操作可能需要在不同的地方反复执行,这些操作(比如面向,走向)是具有先后顺序和规律的,如果写一段函数来体现这样的顺序和规律,就可以用一句简单的代码一次性完成这些操作,使得我们的代码更加简洁易懂。
Q:什么是函数?
A:函数是一个黑盒子,这个黑盒子是由我们自己设计的,我们清晰地知道这个函数的作用是什么,给什么输入,就可以得到什么输出。
Q:为什么孩子需要学习函数?
A:函数代表的是一种思维方式,即把很多操作按照顺序依次执行的顺序。这个思维方式体现在生活的方方面面,通过学习和编写函数,可以让孩子有逻辑地进行思维,说话,以及做事。
希望可以帮助到大家的孩子学习编程!
周末愉快!
网友评论