和小家伙一起学编程 006 函数
数学上的函数,记做:
y = f(x)
是伟大的莱布尼茨(G.W.Leibniz)提出的。
在中国,最早由清代数学家李善兰翻译,其著作《代数学》中写到:“凡此变数中函彼变数者,则此为彼之函数”。
计算机中的函数也类似,不过要更宽泛,比如x可以不止一个,称为参数……
函数好像一台家用电器或者别的什么机器,空调、洗衣机、电视,我们可以通过开关、旋钮等控制它,输入数据,它会按照设计的功能执行,返回某种结果。
从另一个角度看,对于整个程序而言,函数又好像机器中的零部件、功能模块,我们把大的复杂的问题分解为更小的问题,每个函数解决一个小问题,这样像搭积木一样我们就搭起了解决大问题的程序,而且,这些小的模块还可以在其他程序中反复使用。
Scratch可以自制积木,它的功能接近于函数。
Scratch 自制积木的例子
我们先做一个“小鸟琴”:


后面三只小鸟的代码也类似,选择不同的音符播放就可以了,这样我们可以像弹琴那样点击小鸟来演奏音乐了。

现在在舞台上添加上图的代码,当我们按下空格键,就可以输入类似“ABCDEACACEE”这样的“乐谱”,输入以后,小鸟琴就会把乐谱演奏出来。
这时,我们可能会想到,我们有了播放不同乐谱的能力,如果我们想在别的Scratch程序中播放某段音乐,比如我们想做一个考验音乐记忆能力的小游戏,我们就可以用这段代码,于是我们可以把这个功能放到一个自制积木里:


Python 函数的例子
哎呀,懒得自己写了,正好推荐一“本”网上的好书:
How to Think Like a Computer Scientist: Learning with Python 3
其中函数一章:
函数式编程
我们说过面向对象的编程,函数式编程(Functional Programming)是另一种很牛的编程思想或者方法,也是我喜爱的,就不多说了,推荐两本正儿八经的的编程学习书吧:

Haskell趣学指南(Learn You a Haskell for Great Good!)
