南瓜爸爸的亲子编程课 篇五:灭霸再次哭晕在厕所竟然是因为它:函数 | 南瓜爸爸第四课
·南瓜爸爸的亲子编程课 篇一:#原创新人#三分钟给各位爸妈说清楚少儿编程这档子事
·南瓜爸爸的亲子编程课 篇二:不用电脑,一张纸一支笔带孩子入门编程
· 南瓜爸爸的亲子编程课 篇三:不用电脑和手机,一个游戏带着娃儿体验第一次编程
·南瓜爸爸的亲子编程课 篇四:编程中的3颗无限宝石:变量、判断和循环
在南瓜爸爸前面的几节课中陆陆续续介绍了少儿编程的基本概念,包括什么是编程,编程的基本逻辑,编程的基本要素。上一节课中我们讲到了变量、判断和循环,相信各位爸妈应该对这些内容已经比较了解了,如果不了解的还请翻一翻之前的文章看看哈。
不少朋友有些着急,为什么现在还是没有看到真正的编程呢?什么时候才能看到你讲编程软件啊?
你们以为的南瓜爸爸编程是这样的
实际上南瓜爸爸是这样的
南瓜爸爸心里也着急啊,但是编程的事情还真没有办法急。无论学习什么新的知识,前期建立对知识的体系结构和基本概念总是绕不过去的,南瓜爸爸尽量把入门的内容进行简化,并且去掉了很多不容易理解的部分。还请各位爸妈坚持哦,还有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 当前位置到达边界:那么 向 上 前进 一格 ;并把 超级英雄 前进方向 改为 当前方向的反方向
}
}
找灭霸(钢铁侠)
找灭霸(星爵)
找灭霸(美队)
找灭霸(雷神)
...
各位小朋友举起你们的小手,跟南瓜爸爸一起来:
香蜜糊
校验提示文案
缥鎏
校验提示文案
zf0101
校验提示文案
值友6277535144
校验提示文案
小草fms
校验提示文案
一个小小的石头
校验提示文案
一人大二人天三人虎
校验提示文案
钨铀钡氮
校验提示文案
Tony9999
校验提示文案
南瓜爸
校验提示文案
wumorose
校验提示文案
leon1980
校验提示文案
爱幻想
校验提示文案
我的小豆包
校验提示文案
我的小豆包
校验提示文案
爱幻想
校验提示文案
leon1980
校验提示文案
钨铀钡氮
校验提示文案
一人大二人天三人虎
校验提示文案
wumorose
校验提示文案
南瓜爸
校验提示文案
香蜜糊
校验提示文案
一个小小的石头
校验提示文案
小草fms
校验提示文案
值友6277535144
校验提示文案
zf0101
校验提示文案
Tony9999
校验提示文案
缥鎏
校验提示文案