学习目标
分析问题特点,将一个具体的问题进行分解,形成多个有联系的小问题,然后针对每个小问题设计方案并进行实施,最后组合所有小问题的解决方案,从而解决整个问题。
课程准备
自顶向下分析法:充分理解问题是解决任何编程问题的第一步。理解之后,我们可以做出一个大致的解决方案,然后将其划分为多个主要任务。程序分解的结果因人而异,一般没有正误之分,但在经验的帮助下,可以更好地理解“主要任务”的含义。通过细分大致的解决方案,至少可以保证程序的整体逻辑是正确的。
案例:构建脚本描画如图一所示的房子。
图一
分析过程
对该房屋图像进行任务分解,可以看到该房屋由屋顶、墙面和门组成,所以得到如图二所示的分解图。分解任务时,可以从如下角度考虑主要任务。
1. 把这个房子图形看成由直线组成,所以,一个主要任务是描画每一条直线。
2. 把这个房子的图形看成由六个独立的形状组成:墙面1、墙面2、两个门、一个三角形和一个平行四边形。描画每个形状也是一个主要任务。
3. 既然两个门是相同的,就可以定义任务画一个门,然后执行这个任务两次。
4. 把房顶的三角形和平行四边形看成一个单位,描画房顶是一个主要任务。
5. 把墙面1和这个墙面的门看成一个单位,描画这个墙面也是一个主要任务。
当然还可以有其他的任务分解方式。总的来说,自顶向下分析就是把某个任务划分为更小、更易管理的片段。只需要依次关注各个片段并逐一解决。如果发现某些片段有相似之处,尝试归纳并使用通用的解决方法。
图二
通过以上分析,利用Scratch编程对应的分解内容如下:
1. 描画侧面一,角色停留在点A面向右。
2. 水平移动1个单元,描画第一个门,角色停留在点B面向右。
3. 水平移动2个单元,描画侧面二,角色停留在点C面向右。
4. 水平移动4个单元,描画第二个门,角色停留在点D面向右。
5. 反向移动7个单元,然后向上移动5个单元,角色停留在点E面向右。
6. 描画屋顶。首先描画三角形,然后移至点F,最终描画平行四边形。
基于程序分解的结果,我们可以构建以下6个程序来解决对应的6个主要任务(通过自定义模块实现) :
图三 墙面1
图四 墙面2
图五 门
图六 房顶侧面三角形
图七 房顶平行四边形
图八 房顶
最后,将解决所有主要任务的程序组合起来,完成整体的描画,如图九所示。
图九 主程序
中小学生编程相关咨询或课程信息,请关注本公众号留言。
领取专属 10元无门槛券
私享最新 技术干货