第四章 第四节 Scratch3.0过程的嵌套
正如我们前面提到的,过程应当执行单一的、明确定义的任务。但是为了执行多个任务,通常都希望在过程中调用其他过程,这在Scratch中是完全可行的。过程的嵌套提高了程序在结构化和组织上的灵活性。
我们通过画两个有趣的图形为例来学习本节的内容。
首先定义一个画正方形的过程
其次定义一个画多个正方形的过程(调用上面的过程)
最后定义一个旋转正方形的过程(调用上面的过程)
绘制的图形如下
过程的嵌套是不是非常强大呢?
我们再看一个案例。这次仍从Square过程开始,最终绘制一个棋盘。
首先创建绘制一排正方形的过程Row,如下图所示。注意,正方形的个数使用参数count指定。为了让程序简单,我们规定正方形的边长为20,当然也可以将其作为过程Row的第二个参数。
上图右展示了当过程RoW的参数为4的绘制结果,其中调用了四次 Square 20 steps。每绘制一个正方形,角色的位置会向右移动20步,从而为下一次绘制做好准备。在四个正方形全部绘制完后,最后一块积木命令角色回到最初的位置。
若要绘制上图所示的下一排正方形,只需要将角色向下移动20步后调用过程Row即可。因此,重复调用过程Row就能绘制任意行数,如下图所示的过程Checkers。
过程 Checkers有两个参数:行数和列数。当某行绘制完毕后,角色向下移动20步,为绘制下一行做好准备。本节的例子说明了程序划分为更小、更易管理的片段的重要性。对复杂的程序来说,我们可以复用已经编写好并通过测试的过程,甚至在其基础上继续构建过程,而不需要过分担心底层是如何实现的。这样便能将自己的精力放在最需要解决的问题上。