karel能力拓展训练.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
karel能力拓展训练

引言 卡雷尔是一个生活在非常简单的世界中的非常简单的机器人。在它的世界中,你可以通过给卡雷尔一组命令,直接让卡雷尔执行某些任务。 卡雷尔的世界被定义为水平的街(东西方向),垂直的道(南北方向),街和道的交点被称为街角。卡雷尔只能定位在街角,而且只能面对四个标准罗盘方向(北,南,东,西)。一个简单的卡雷尔世界显示如下,卡雷尔目前位于第一大街和第一大道相交的街角,面朝东边。 在上图中,我们还可以看到卡雷尔世界中其他的几件东西。卡雷尔前面的物体是个蜂鸣器,只有当卡雷尔和蜂鸣器位于同一个街角上的时候,卡雷尔才能感知这个蜂鸣器。图中的实线是墙壁,墙是卡雷尔世界的屏障,卡雷尔不能穿过墙壁,而只能在墙的周边行走。卡雷尔的世界总是被作为边界的墙包围起来,但是,随着卡雷尔需要解决不同的具体问题,卡雷尔的世界也有不同的尺寸。 概述 2.1背景介绍 2.1.1Karel介绍 在二十世纪七十年代,一位名字叫 Rich Pattis的斯坦福研究生觉得,在编程基础的教学中,如果学生可以在某种简单的环境中,摆脱大多数编程语言复杂的特性,学习基本的编程思想,可以取得更好的效果。麻省理工 Seymour Papert’s LOGO计划的成功,启发了灵感,Rich 设计了一个入门编程环境,(这个编程环境)让学生教一个机器人来解决简单的问题。这个机器人名字叫卡雷尔。因为捷克剧作家 KarelCapek 在 1923年公演了 R.U.R (Rossum’s Universal Robots)后,为英语带来了机器人这个英语单词--Robot。机器人卡雷尔相当成功。 卡雷尔被用于全国的计算机科学入门课程,到了 Rich 的教科书畅销超过 10万份的地步。许多学习 CS106A的学生,通过设计卡雷尔的行为,学会了如何让程序工作在 20世纪 90年代中期,我们曾经使用的机器人卡雷尔模拟器停止工作了。但是,我们很快就得到了一个 Thetis编译的卡雷尔升级版供那时使用。但是,一年以前,CS106A课程转向到 Java,卡雷尔再次从课堂上消失了。虽然在过去的三个季度,由于卡雷尔的离去产生的空白,已经完全被 Nick Parlante的 Binky world 填了但现在是带卡雷尔回来的时候了。新完工的卡雷尔设计得完全兼容 Java和 Eclipse编程环境,这就意味着,你将在这门课程的开始,就可以练习使用 Eclipse的编辑器和调试器。 卡雷尔是一个生活在非常简单的世界中的非常简单的机器人。在它的世界中,你可以通过给卡雷尔一组命令,直接让卡雷尔执行某些任务。指定这些命令的过程称为编程。最初,卡雷尔只明白极少数预定义的命令,但编程(学习)过程的一个重要内容,就是教卡雷尔可以扩展它的能力的新命令。当你谋划让卡雷尔执行某项任务的时候,你必需用非常精确的方式写出这些必需的命令,以便这 个机器人能够正确的理解你交待它做的事情。(另外)特别(注意的)是,你写的程序必须遵守语法规则,它规定了什么样的命令和语言形式是合法的。二者合在一起,预定义的命令和语法规则(一起)定义了卡雷尔编程语言。卡雷尔编程语言被设计的尽可能类似于 Java语言,这样便于顺利过渡到(Java)这门你将时刻使用的语言上。卡雷尔程序具有和 Java程序相同的结构,也涉及到相同的基本元素。最关键的区别是,卡雷尔的编程语言非常的小,从这个意义上讲,只具有非常少的命令和规则。它非常容易,例如,教授卡雷尔语言只需要几个小时,这也正是我们在 CS106A中做的。在(课程)结束的时候,你将知道卡雷尔能做的一切事情,以及如何在一个程序中实现它。这些细节是容易掌握的。即便此,你会发现,(需要)解决的问题可能是极其具挑战性的。解决问题是编程的本质;在这一学习过程中,对规则的关注是次要的。在复杂的语言里,如 Java,有许多的细节,这些细节往往成为学习的课程的重点。当这种情况发生时,对解决问题的更关键的东西,往往会在得到一片混乱中失去。通过从卡雷尔入手开始学习,你可以在一开始的时候,就把精力集中在解决问题上面。 2.1.2Karel语言 当卡雷尔出厂的时候,它只能响应非常小的命令集: move() 要求卡雷尔向前推进一步。当一堵墙挡在卡雷尔面前的时候,卡雷尔不能响应 move()这个命令。 turnLeft() 要求卡雷尔向左转 90度(逆时针转动)。 pickBeeper() 要求卡雷尔捡起街角上的蜂鸣器,把这个蜂鸣器放到它的蜂鸣器收藏包里,这个包可容纳无限多的蜂鸣器。除非这个蜂鸣器恰好在卡雷尔所在的街角上,卡雷尔不能响应这个 pickBeeper()命令。 putBeeper() 要求卡雷尔从蜂鸣器收藏包里拿出一个蜂鸣器,放在卡雷尔所在的街角上。除非卡雷尔的蜂鸣器收藏包里有蜂鸣器,卡雷尔不能响应这个 putBeeper

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档