软件工程导论报告.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文档。上传文档
查看更多
软件工程导论报告

一、卡雷尔机器人收集报纸 1题目描述:这是一个简单的情景问题,假设卡雷尔机器人住在如下中央正方形区域内: 卡雷尔位于房间的西北角,他需要拿回放在房间门口的报纸(灰色的方块)。然后回到最初位置。 2题目分析:此问题是典型的卡雷尔机器人题目,我们可以假设自己就是机器人,首先,要明确自己身处的环境——一个房间内,房子的大小不一定是固定的,但是报纸就在门口。其次,要明确自己的目的——拿到报纸。接下来是应该怎么实现这个目标?可以分成三步: (移动到报纸的位置 (捡起报纸 (返回原来的位置 然后,把每一步具体的细节实现,就可以解决问题了。 3题目实现:以下是每一步的具体程序代码, (private void goToNewspaper() { while(frontIsClear()) { move(); } if(frontIsBlocked()) { turnRight(); } while(leftIsBlocked()) { move(); if(leftIsClear()) turnLeft(); move(); } } (pickbeeper(); (private void goBack() { turnAround(); while(frontIsClear()) { move(); } if(frontIsBlocked()) { turnRight(); } move(); while(frontIsClear()) { move(); } if(frontIsBlocked()) { turnRight(); } } 4题目总结:学习卡雷尔机器人的典型题目对初学编程的人掌握基本编程思想有很好的效果。我们可以在简单的环境中摆脱编程语言复杂的特性。我觉得这是一道非常典型的体现了“自上而下”思想的题目。它的每一步都很清晰,每一步都只实现一个目的。从整体上分析问题,不用拘泥在细节里。 卡雷尔机器人修补石柱 1题目描述:卡雷尔机器人需要补全支撑拱门的石柱(菱形方块),如下图所示: 卡雷尔需遵循以下规则: 卡雷尔的初始位置位于第一列、第一行,面向东,携带无限的支撑石; 每隔三列有一个支撑柱,分别位于第一、五、九和十三列,以此类推; 最后一个支撑柱右侧紧贴一堵墙,本题中,墙壁紧贴第十三列右侧,但无论有多少组支撑柱,你的程序都应该能正确运行; 每组支撑柱顶端是墙体,但卡雷尔不知道每个支撑柱是否只有5块石头,也不知道是否所有的支撑住都等高; 有些支撑柱中的石头并未完全缺损,你的程序不能在已有石头的位置再次置放。 2题目分析:根据题目中的要求可总结出,完成此题需要注意:石柱不等高,数目不确定,不能在未破损的地方重复放置等问题。分析此问题时还是需要分步实现。 (修复一根柱子并返回 (向前走四步 (修复一根柱子面向北 3题目实现:以下是具体每一步的程序代码: (/* 修复一整根柱子并返回 * 前置条件:处于一根柱子底部,面向东 * 后置条件:同上 */ public void fixAndBack(){ turnLeft(); fixLine(); moveBack(); turnLeft(); } (// 移动四步 public void moveFourSteps(){ move(); move(); move(); move(); } (/* 修复一根柱子面向北 * 前置条件:柱子底部,面向北 * 后置条件:柱子顶部,面向北 */ public void fixLine(){ while(frontIsClear()){ if(noBeepersPresent()){ putBeeper(); } move(); } if(noBeepersPresent()){ putBeeper(); } } /* 回到柱子底部 * 前置条件:位于柱子顶端面向北 * 后置条件:位于柱子低端面向南 */ public void moveBack(){ turnAround(); while(frontIsClear()){ move(); } } 4题目总结:下图是执行后的效果截图 做完此题,你或许会发现把经历放在如何解决问题而不是编程语言的语法细节上是多么重要。我们往往注意不在细节上出问题,却并不能得到解决问题的方法,这是一个学会抽离的机会。从细节中抽离,得到更好的算法。 二、显示出1~9999之间的完全数

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档