【76-85关】基础课程-函数农场【下】
在本课中,我们将继续练习阅读和编写函数,并将学习程序调试(debug)。
学习目标:
1、检查函数
2、程序调试
3、阅读编写代码
4、在for循环中调用函数
5、函数之间互相调用
6、函数中使用for循环
知识讲解:
Debug:哈佛的一位女数学家格蕾丝·莫雷·赫伯,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,赫伯诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。从而debug意为程序除错的意思。
如何阅读程序?如下图所示:
阅读程序并不是从第一行开始,而是要寻找主程序部分开始阅读,而其他定义函数部分只是主程序中需要用到时才调用。只有这样你才能理解整体的思路与所调用函数的功能,这对于后面闯关来说很重要,只有理解了每一步操作才能准确的去调试或者定义对应的函数。
实战练习:
第76关: 这一关已经定义好了函数,并且通过函数调用老鼠已经成功取回了第一根火柴matches[0](数组的用法,你还记得吗?)下面有一句提示“#Add your code to get matches[1]:”添加代码取回第二根火柴。只需要参考取回第一根火柴的代码稍作修改即可。
第77关:这一关有多根火柴,我们应该一下子就想到用for循环来挨个拾取。
再来看右侧代码,已经给出了正确的for循环代码,需要修复goto()函数,只要能够清楚这个函数所要实现的功能,检查函数内每一步操作进行修改即可过关。
第78关:这一关需要修复函数goto()我们已经使用过很多次了,后面通过调用函数,分别传入不同的参数,前往小桥和火柴,最后完善代码让老鼠前往火柴堆,并放下火柴。本关是依旧是对函数的理解,重点是函数调用传入参数的使用。
第79关:本关已经给出了正确的for循环的代码,通过阅读代码我们我们要自己来实现goto()函数,即可以通过传入参数来实现让老鼠到达指定的对象(小桥、火柴m、火柴堆)。
第80关:这一关我们需要定义一个全新的函数collect(),这个函数需要完成什么功能,通过阅读for循环代码可以明确collect m是通过传入参数m(火柴对象),完成每一根火柴的收集。
思路:收集一跟火柴要有哪些操作?
1﹜ 面向火柴对象
2﹜ 移动到对象
3﹜ 拾取
4﹜ 面向火柴堆
5﹜ 移动到火柴堆
6﹜ 放下火柴
因此只需在collect函数中完成上述操作即可。
第81关:本关其实与上一关是一样的,因此用上一关的代码是没有问题的,不过本关我们有一个新要求就是要使用两个函数,我们观察一下上一关的collect()函数,其中有两个操作移动到火柴与移动到火柴堆是可以通过定义一个goto()函数,然后直接调用来进行优化的。我们再来看本关右侧代码,已经定义好了goto()函数,只需要在collect()函数中能够正确调用即可顺利过关。
第82关:这一关要求我们能够完整的写出一个goto()函数,对于这个函数我们已经很熟悉了,主要是锻炼大家的动手能力,掌握定义函数的语法。
第83关:这一关我们遇到一个新的函数gotoAll()这个函数有一个参数,这个参数是一个数组,然后在函数里用for循环遍历这个数组,调用goto函数依次抵达数组中的每一个对象。
第84关:本关我们又要定义一个新的函数,getAndReturn()这个函数要完成的功能已经提示了:走到 r 附近,拿起 r,再返回它原来的位置。r是什么?看调用这个函数传入的参数m即火柴。因此getAndReturn()要完成的操作就是:前往火柴;拾取火柴;回到乌龟身上;按照这个思路完成这个函数即可过关。
第85关:这一关要完成任务需要让三只乌龟一起前进,然后老鼠去拾取火柴放到火柴堆,然后三只乌龟再同时后退,老鼠去拾取火柴,再放回火柴堆。现在需要做的就是完成allTurtlesStep()函数,这个函数应该让所有turtles 前进 d (d是数字参数)。所有乌龟前进,自然会想到用for循环,让每一个对象移动d即可。
答案:
本站内容未经许可,禁止任何网站及个人进行转载。