机器人卡雷尔.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机器人卡雷尔.doc

机器人卡雷尔学习C语言 新疆农业大学计算机与信息工程学院 张太红,陈燕红编著,2013年7月 斯坦福大学计算机科学系 埃里克·罗伯茨著(Java版),2005年9月 目 录 第一章 机器人卡雷尔简介 1 1.1 什么是卡雷尔? 1 1.2 卡雷尔的世界 2 1.3 卡雷尔能做什么? 2 1.4 卡雷尔及面向过程的编程范式 3 1.5 实践经历的重要性 3 1.6 编写及运行卡雷尔程序 4 第二章 卡雷尔编程 11 2.1 解决更有趣的问题 13 2.2 定义新函数 14 2.3 问题分解 18 2.4 选择正确的分解 20 第三章 卡雷尔控制语句 22 3.1 条件语句 22 3.2 迭代语句 24 3.3 解决普适问题 26 第四章 逐步求精 30 4.1 逐步求精练习 30 4.2 自顶向下设计的基本原则 31 4.3 精练第一个子问题 31 4.4 下级级别子问题的编码 32 4.5 事前条件和事后条件 33 4.6 收尾工作 34 第五章 算法 36 5.1 解决一个迷宫问题 36 5.2 锥块数量翻倍问题 37 第六章 超级卡雷尔(SuperKarel) 40 6.1 右转(turnRight)和掉头(turnAround)函数 40 6.2 使用颜色 40 6.3 随机行为 40 6.4 逻辑操作 41 附录A 卡雷尔速查表 42 第一章 机器人卡雷尔简介   上世纪70年代,斯坦福大学的毕业生里奇·帕蒂思(Rich Pattis)认为如果学生能在一个简单的环境中学习程序设计的基本思想,而不是纠缠于大多数编程语言的复杂特性将会有助于程序设计基本原理的教学。受麻省理工数学家西摩·佩伯特(Seymour Papert)主持的 LOGO(一种类似于LISP的程序设计语言)项目成功的启发,里奇·帕蒂思设计了一个启蒙式编程环境。该环境中有一个机器人,学生在此编程环境中指导这个机器人去解决一些简单问题,为了纪念捷克剧作家卡雷尔·恰佩克Karel Capek,他1923的剧作《罗森的通用机器人》(Rossum’s Universal Robots)创造了robot这个英语词汇),该机器人名叫卡雷尔(Karel)。卡雷尔机器人项目曾经相当成功,该项目在美国各大学用于计算机科学导论的教学,以至于里奇·帕蒂思的配套教材售出10多万套。一届又一届的CS106A(程序设计方法学课程)学生通过挑战卡雷尔的性能学会了计算机程序工作的机理。好景不长,上世纪90年代中期,我们使用的卡雷尔机器人模拟器停止工作了。当然我们很快得到了可以在西提斯解释器(Thetis interpreter,一种C语言解释执行器)中运行的卡雷尔版本。但是,2004年CS106A课程从C语言转向Java语言,卡雷尔再次停摆。三个学期之后,卡雷尔的空白由尼克·帕兰特(Nick Parlante)的Binky world填补了。重新设计实现的卡雷尔即兼容Java也兼容Eclipse开发环境,这意味着学生从学习Java课程一开始就可以练习使用Eclipse编辑器和调试器。2013年,新疆农业大学的张太红教授实现了C语言版的卡雷尔,并完全兼容了尼克·帕兰特的Java版卡雷尔的游戏世界(Worlds)。 1.1 什么是卡雷尔? 卡雷尔是生活在一个简单世界里的简单机器人,通过向卡雷尔发出一组命令,你可以指挥卡雷尔在它的世界里执行一定的任务,编制这些命令的过程叫做程序设计。初始情况下,卡雷尔只能理解很少的几条预设命令,程序设计的重要任务就是教会卡雷尔更多的新命令以扩展它的能力。在你编程指挥卡雷尔去完成某一任务时,你得准确书写必须的命令以便卡雷尔机器人能正确理解你的意图。尤其要注意的是,你所编写的程序必须符合由卡雷尔预设命令及卡雷尔程序设计语言共同组成的句法规则。卡雷尔程序设计语言和C语言非常相似,两者很容易转换,卡雷尔程序与C程序有着很多相同的结构和基本要素,最大的区别是卡雷尔程序设计语言非常小巧(这里指的是很少的命令和规则),因此可以在个把小时内学会整个卡雷尔程序设计语言。我们的C语言课程就是这样做的,到时你会知道卡雷尔能做的所有事情并且掌握把它们编写为程序的方法,尽管很容易掌握这些细节,你会发现解决某些特定问题依然是极富挑战性的。相比之下,程序设计语言的规则是次要的,而解决问题的方法和能力才是程序设计要义。像C这样的强大编程语言,有着面面俱到的细节,如果我们把注意力放在学习C语言的这些细节问题上,就会只见树木不见森林,结果是学不到真正解决问题的本领。有了卡雷尔,你可以一开始就把精力集中在寻找解决问题的方法上来,卡雷尔鼓励想象力和创造力,与卡雷尔同行,你会感到其乐无穷。 1.2 卡雷尔的世界   卡雷尔的世界由东西走向的街和南北走向的道组

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档