在南瓜爸爸前面的几节课中陆陆续续介绍了少儿编程的基本概念,包括什么是编程,编程的基本逻辑,编程的基本要素。上一节课中我们讲到了变量、判断和循环,相信各位爸妈应该对这些内容已经比较了解了,如果不了解的还请翻一翻之前的文章看看哈。
不少朋友有些着急,为什么现在还是没有看到真正的编程呢?什么时候才能看到你讲编程软件啊?
你们以为的南瓜爸爸编程是这样的
实际上南瓜爸爸是这样的
南瓜爸爸心里也着急啊,但是编程的事情还真没有办法急。无论学习什么新的知识,前期建立对知识的体系结构和基本概念总是绕不过去的,南瓜爸爸尽量把入门的内容进行简化,并且去掉了很多不容易理解的部分。还请各位爸妈坚持哦,还有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 当前位置到达边界:那么 向 上 前进 一格 ;并把 超级英雄 前进方向 改为 当前方向的反方向
}
}
找灭霸(钢铁侠)
找灭霸(星爵)
找灭霸(美队)
找灭霸(雷神)
...
各位小朋友举起你们的小手,跟南瓜爸爸一起来:
钢铁侠去找灭霸,
钢铁侠找完星爵找,
星爵找完美队找,
美队找完雷神找
...
感谢收看!
领取专属 10元无门槛券
私享最新 技术干货