- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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之间的完全数
您可能关注的文档
最近下载
- 正常新生儿护理演示ppt课件.ppt
- 硬笔楷书教学课件.pptx VIP
- 天津市南开翔宇学校初一新生分班(摸底)数学模拟考试(含答案).pdf VIP
- 第1课 寻找信息科技(教学设计)-2024-2025学年人教版(2024)信息三年级全一册.docx VIP
- 南京电子地图超大版-超清晰-3600-x-5100分辨率.pdf VIP
- 冷轧带钢再结晶退火的感应加热.pdf VIP
- (高清版)B-T 18380.12-2022 电缆和光缆在火焰条件下的燃烧试验 第12部分:单根绝缘电线电缆火焰垂直蔓延试验 1kW预混合型火焰试验方法.pdf VIP
- 大学生竞选班长最新PPT课件.ppt VIP
- 云教版劳动与技术四年级上册2切菜.pptx VIP
- 育婴员(职工组)基础知识模块(模块一).docx VIP
文档评论(0)