一、知识点

(一)什么是过程?

程序里有时会有重复的代码。例如,我想画两个三角形,于是写了图7-1所示的这段代码:

074-1

图7-1 画两个三角形的程序(左)及运行结果(右)

运行这段代码的确可以画出两个三角形,不过这段代码太长了,而且有很多重复:画第二个三角形时,又把画第一个三角形的代码重复了一遍,只是简单地改动了几个数字。

那么有没有简洁的方案呢?

有,“过程”就是解决这种问题的简洁方案:我们首先把画一个三角形这段代码抽出来,构成一个模块,这个模块就叫“过程”;然后我们只需要调用这个过程两次就可以了。

什么叫“调用”一个过程呢?调用一个过程就是“copy+paste”,就是把这个过程里面的指令复制一份,然后粘贴过来。好理解吧?如果这个过程中还有参数,会复杂一点,我们一会儿仔细介绍。

(二)在Scratch程序里怎样实现过程?

在Scratch里,过程就是积木块,我们通过“自制积木”创建一个新的过程,具体包括以下3个步骤。

第一步:定义过程

首先点击左侧的“自制积木”,然后点击“制作新的积木”,输入给过程起的名字,还有过程需要的参数。

以画三角形为例,我们给新建的过程起名字叫“画三角形”,然后点击“添加输入项 数字或文本”,为这个过程设置了三个形式参数:边长、顶点x(即顶点的x坐标)和顶点y(即顶点的y坐标)(见图7-2)。

075-1

图7-2 制作新的“画三角形”积木块

第二步:写过程的代码

在写过程代码时,需要注意的是一定要用参数。比如“移动……步”里,我们原来填写的是100,现在得用参数。我们把“定义 画三角形……”那一行里的“边长”拖过来就可以了(见图7-3)。

076-1

图7-3 用“画三角形”积木块(左)实现画两个三角形的程序(右)

第三步:调用过程

这一步就简单了。我们直接两次使用这个“画三角形”积木,就画出两个三角形了。你看,这样代码是不是简洁多了?

(三)调用一个过程时到底发生了什么?

我一开始对“调用一个积木块”时到底发生了什么很糊涂。包老师讲“调用过程就是复制过程的代码,再粘贴到调用过程的地方”,我就明白了。

不过我们刚刚定义的“画三角形”这个过程有参数,还得执行一次“参数替换”。具体地说,我们得区分两种参数:

  • 形式参数:是定义积木块时,积木块名后括号中的变量名。
  • 实际参数:是调用积木块时,积木块名后括号中的表达式。

以“画三角形”程序为例子。左边是积木块“画三角形”的定义,有三个形式参数,分别是“边长”“顶点x”“顶点y”。在这个积木块内部,这三个形式参数用起来就像普通变量一样。

右边主程序里两次调用“画三角形”这个积木块。第一次调用时实际参数分别是100、0、0,相当于把“画三角形”这个积木块里面的指令复制一份过来,然后把里面的形式参数“边长”替换成实际参数100,把形式参数“顶点x”替换成实际参数0,把形式参数“顶点y”替换成实际参数0。

你试试看,复制、粘贴、参数替换,经过这三步之后,主程序是不是就变成了图7-1里的代码了呢?一模一样啊!