3.2 代码画家——次数明确的循环
在第2章里我们已经学习了在Scratch中如何使用画笔来画直线,其中所有的程序都是用顺序来实现的,那么现在一起来看下循环如何帮我们把程序写得很简洁。
我们来看那个三条连续横线的程序。还记得要求吗?
背景:白色背景
角色:画笔(pencil)
玩法要求:
当单击绿旗后,画笔一次画出三条直线,每条直线长100步,三条直线间隔20步。
还记得我们用顺序是怎么实现的步骤吗?
1)设定画笔粗细。
2)落笔,移动100步,抬笔,移动20步。
3)落笔,移动100步,抬笔,移动20步。
4)落笔,移动100步,抬笔。
图3-4是画出的结果以及用顺序实现的程序。发现了什么特点吗?
图3-4 三条横线及程序
如果把程序像图3-5这样切开,两个橙色方框里的程序是一模一样的。蓝色方框里的程序段与橙色方框里的程序段只差了一个“移动20步”,如果我们加上这个积木块,对画出的图形有影响吗?
图3-5 切开程序
试一试
分别在Scratch里写下上面的两段程序,画出的结果相同吗?
画出的图形是一样的!那么最后添加了“移动20步”的命令之后,三段程序的积木块是完全一样的,意味着这段程序被执行了三次!那么想到怎么修改程序了吗?
答对了!我们可以用循环来实现它。程序会变得简短了很多(见图3-6)。
图3-6 使用循环后的程序
注意
这里面也提示了一个很重要的问题,循环里面的内容执行完最后一个命令后会返回到循环的第一个命令继续执行。
现在,让我们一起看一下2.4.3节中的伸缩棒如何画(见图3-7)。
问题描述如下。
背景:白色背景
角色:画笔(pencil)
玩法要求:
当单击绿旗后,画笔一次画出三条直线,每条直线长100步,第一条直线宽度是3,第二条直线宽度是6,第三条直线宽度是9。
图3-7 伸缩棒
可以采用上面的方法,先用顺序的方法完成任务,然后再分析程序中重复的部分,改用循环实现。
这里,我们介绍另外一种直接从题目上分析的方法。
题目中,第一句话是3条直线,那就意味着我们考虑使用循环,次数是3,依此可以确定循环的一个重要内容——循环次数。
第二句话是每条直线长100步,这句话告诉我们落笔后对每条直线来说移动的长度是相同的,是可以在循环里面执行的。
第三句话是第一条直线宽度是3,第二条直线宽度是6,第三条直线宽度是9。这三个数不同,有些麻烦。这时候,我们需要找规律了——每条线比之前的粗细增加了3。这样又变成重复增加某一个固定的数值了,所以我们需要的是在循环中让线的粗细增加一个固定的数值——3。
试一试
根据上面的分析,用循环完成这个程序。
伸缩棒的完整程序如图3-8所示。
图3-8 伸缩棒的程序