近日,各大高校陆续发布2017年自主招生简章。
(不要这么严肃好不好?好吧。。。)
其中清华大学招生领导小组给出的招生申请条件第一项就是:
“1.研究创作类:在科技发明、研究实践、文学创作等方面具有突出表现的学生。”
北京大学(引用2016年的内容)给出的申请条件第一项也是:
“1、有发明创造或参加科技类、人文社科类竞赛全国决赛或国际比赛获得优异成绩者;”
其他高校也是遥相呼应啊,比如中国第一所近代大学天津大学(北洋大学堂的前身)在今年3月27日给出的自主招生简章里就明确规定报名条件是:
“(一)高中阶段参加全国中学生学科奥林匹克竞赛(数学、物理、化学、信息学)、青少年科技创新大赛(青少年创新项目)等竞赛,获得省级赛区一等奖(含)以上;
(二)高中阶段获得全国中小学生创新作文大赛高中组全国决赛特等奖;
(三)高中阶段以第一发明人身份获得国家授权发明专利;
(四)在学科特长或创新潜质方面有突出才能或极大潜力(要求自附详细材料说明)。”
由此可以看出清华北大最先重视的就是有研究和创新能力的高中生,而天津大学作为传统工科强校,提出的四个报名条件里有三条是和创新,研究相关的能力,比如科技创新,发明,创新潜质。
这些能力并不虚,而是可以通过申请人的简历一目了然地看出来。
作为一个在理工科学习和研究将近10年的博士生,我看到一份简历,就能大概知道对方的水平在什么层次,是门外汉,新手,刚入门,还是老司机,额,错了,是老师傅。
因为简历可以反映申请人到底有没有做项目的经历,申请人的思想、喜好、以及目前所拥有的创新能力。因为创新能力可以后天培养,所以简历里还基本反映了申请人对研究的喜爱和努力程度。
那些在高校里做了几十年研究的老教授们呢?他们比我见过更多的学生,带过更多的研究生,基本上一眼就可以把这个孩子的潜力看得八九不离十。所以没有实力的申请人必然会被淘汰,而那些越早接触科研的学生,就会越有优势。
我在这里也提醒大家,如果想让自己的孩子在未来有一个好的出路,就算不申请名校的自主招生项目,也要尽早培养孩子的好奇心,和对科学研究的兴趣。因为孩子未来能解决多大的问题,直接决定孩子未来人生的高度。
关于这些我们未来再仔细探讨。
千里之行,始于足下。
我们要让孩子从培养兴趣和打好编程基础开始,学习CodeMonkey这个编程游戏里相关的编程知识。
今天我们继续学习“函数”王国的最后5关:第81-85关。
第81关

本关一开始,猴博士告诉咱,不要担心,这一关我们只需要改一点就可以通关啦。
来看看这一关发生了什么事情:

我们看到,小老鼠和要捡的火柴之间搁着一座木桥,它需要经过木桥,捡起火柴,然后往回走,再次经过木桥,从而把火柴放在火柴堆上。
这是右侧代码框里已有的代码:

我先解释下这些代码:
第1-3行:定义goto函数,这个函数在我们之前的教程里已经有大量用处,这里不再解释。
第4,5行:注释行,告诉我们下面的crossBridgeTo这个函数需要被修复。
第6-8行:定义crossBridgeTo函数,函数的作用对象被定义为p,这个函数的作用是让小老鼠先走到木桥,再走到函数指向的对象p。所以第7行应该改为“goto bridge”。
第9行:注释行,说明第10-13行的代码没有问题。。
第10行:把crossBridgeTo函数作用于match,即火柴。
第11行:让小老鼠捡起火柴。
第12行:把crossBridgeTo函数作用于pile,即火柴堆。
第13行:让小老鼠放下火柴。
修改后的代码可以是这样:

还等什么?点击运行,看看效果吧!

通关!

第82关

这是第82关!

在左侧的画面里,小老鼠和火柴堆在小河下方,而三根火柴在小河上方,小河上有一座木桥。
这一关与上一关的差别是,这一关里小老鼠需要去捡三根火柴,而上一关小老鼠的工作量只有一根火柴。
有了之前学过的for循环,别说三根,就算给我1亿根,我也能让小老鼠捡完。
我们先看看右侧的代码框。

第1-3行:定义goto函数。
第4行:注释行,说明第5-7行的代码没有问题。
第5-7行:定义crossBridgeTo函数,即先走到木桥,再走到函数的对象v。
第8-11行:注释行,告诉我们通过crossBridgeTo函数,要让小老鼠带着对象z走到火柴堆。
第12行:开始定义collectThruBridge函数,对象用“z”代替。
第13行:注释行,需要修改,从而定义collectThruBridge函数。
第14行:注释行。
第15,16行:对于小河对面的每一根火柴,都用collectThruBridge函数作用于它从而把所有火柴都捡回到火柴堆里。
下面是我给出的一个解决方案:

大家重点看第14-17行,因为collectThruBridge这个函数的目的是让小老鼠经过木桥,走到某根火柴,捡起它,回到木桥,走到火柴堆,放下捡来的火柴。
所以我的解决方案是:
第14行:经过木桥走到某根火柴那里。
第15行:捡起火柴。
第16行:经过木桥走到火柴堆那里。
第17行:放下火柴。
点击运行,看看效果吧(只放了一部分效果)。

通关!

第83关

第83关,猴博士提醒我们,像islands,rafts之类的物体也可以作为函数的参数来使用。
其实这里的表述不是特别严谨,所谓函数的参数,应该改为函数的对象更为合适一些。
我们来看看这一关的画风是怎样的。

在左边的画面框里,我们看到老鼠需要先走过6个小岛,即islands,走到火柴那里,然后捡起火柴,再经过6个木筏,即rafts,最后把火柴放在火柴堆上。
在右边的代码框里,我们看到已经给出的函数是这样的:

第1-3行:定义goto函数。
第4行:注释行,告诉我们在第5-8行里有问题,我们需要解决这个问题,才能让小老鼠完成我们的目的。
第5-8行:定义gotoAll函数,这是因为goto函数只能一次做一个操作,比如goto岛a,那么只能走到岛a,走到岛a之后就不再行动了。但是这里一共有6个岛,除第一个岛之外,小老鼠需要走过5个岛。为了简单起见,就用gotoAll来执行这样的操作:让小老鼠走过所有的对象。那么我们看到,第7,8行有点重复第2,3行的内容,其实用一句“goto s”就可以代替了。
第9行:注释行,说明下面几行需要被修复。
第10行:让小老鼠经过所有的岛。
第11行:空行,这里小老鼠需要执行捡起火柴的操作,所以需要写上一句grab()。
第12行:让小老鼠经过所有的木筏。
第13行:空行,这里小老鼠需要执行放下火柴的操作,所以需要写上一句drop()。
我给出的代码如下:

我们可以点击试试,看看效果!

通关!

第84关

这一关我们需要借用乌龟来让小老鼠在小河上移动起来。
这难度比前几关要难一点,因为前几关的木桥是不能移动的。

在左侧的画面框里,小老鼠在乌龟的背上,需要上去捡起火柴,然后返回到乌龟上,此时的乌龟可以被视为前几关里的木桥,小老鼠接着把捡到的火柴放在火柴堆上。然后乌龟此时移动起来,让小老鼠可以去捡其它几根火柴,此时乌龟的功能比前几关的木桥更强大,相应地,我们也需要写相关代码来操控乌龟。
以下是系统给出的代码:

第1-3行:定义goto函数。
第4-6行:注释行,告诉我们需要做什么。
第7-10行:定义getAndReturn函数,对象为r。顾名思义,这里的r应该是火柴,我们需要走向r,捡起r,然后返回到出发的位置。
第11,12行:注释行,我们可以改动来延续第7-10行要完成的任务。
第13行:注释行。
第14-19行:for循环,让小老鼠把火柴m捡起并返回,走到火柴堆,放下火柴,走到乌龟背上,乌龟向左走8步。
我给出的解决方案如下:

在第11,12行里,我让小老鼠捡起火柴,并且往回走d步。
这下子,getAndReturn函数就完成了让小老鼠“面向火柴”(turnTo r),“定义d为小老鼠与火柴之间的距离”(d=distanceTo r),“走d步”(step d),“捡起火柴”(grab()),“往回走d步”(step -d)的操作。
点击运行,看看效果吧!因为持续时间过长,我只放了一部分效果,以后运行时间越来越长的时候,我会把过程分成几个动图来显示。

过关!

第85关

猴博士告诉我们,我们可以把函数的参数设为数字。
整体界面如下:

在左侧的画面框里,我们看到小老鼠在最上方,三个乌龟分别趴在三条河里,这里我们需要让三个乌龟动起来,从而让小老鼠过河。
来看看已有的代码:

第1-3行:定义goto函数,对象为t。
第4-8行:定义collect函数,对象为m,即让小老鼠收集m:走向m,捡起m,走向火柴堆,放下m。这里的m应该是火柴。
第9,10行:注释行,让下面的第11-13行代码(allTurtlesStep函数)执行“让所有乌龟前进d步”的指令。
第11-13行:完成allTurtlesStep函数。
第14行:注释行。
第15-18行:“所有乌龟前进10步”(第15行),“小老鼠收集火柴0”(第16行),
“所有乌龟后退10步”(第17行),“小老鼠收集火柴1”(第18行)。
我给出的代码是这样的:

第11-13行要完成allTurtlesStep函数,所以我用一个for循环,让每一只乌龟都前进d步。
点击运行,看看效果!
这是小老鼠收集火柴0的过程:

这是小老鼠收集火柴1的过程:

通关!

是不是很开心?
在这5关里,我们闯过了“函数”王国里的最后5关。这一共15关(第71-85关)的“函数”王国,让我们学会了如何定义函数来完成某些需要重复执行,先后执行的操作。这些函数的功能还是很强大的。
在接下来的15关里,我们将要学习如何利用“直到”(until)来完成一些不知道要循环多少次的循环指令。

希望大家喜欢!
网友评论
turnTo r
为什么还要用turnTo r
还加了d=distance r
我感觉就是多余的 直接用了
goto r
grab()
goto turtle
因为给出的新内容我根本还理解不了,用旧内容反而更简洁,也许也是凑巧才不会错误。
不过都很感谢你的攻略,很细致,很好!!我要是个女的就嫁给你
我觉得嫁人还是要擦亮眼睛的。