案例1:制作一条小路
设计思路,我们采用一个六棱柱,并将其压扁后,按照一定的规律排成一条直线,形成一条小路。
思路一:创建一个六棱柱对象,并采用复制对象和移动的方法得到一条小路。(面向对象的方法,参考第九节)
思路二:使用顺序法,将每个六棱柱的尺寸设计好,并且移动到位。(结构化程序设计,顺序结构。)
思路三:循环变量法。每次告诉计算机操作同样的循环语句内的操作。(结构化程序设计,循环结构。)
这里给出思路三的程序步骤。
1、创建循环变量,系统默认会创建循环变量i,但是如果循环继续增多的话,可能会有更多的循环变量,变量名由系统给定,比如k、m等等。这里我们采用系统给定的k。
2、添加一个六棱柱,并且在Z轴方向上压缩0.2倍,并且每次沿着X反方向移动20的整数倍数值。
3、从1到5但不包括5,每次增加1,一共有1、2、3、4这四个数值,也就是循环体执行了四次,最后得到4个沿着X反方向平铺的六棱柱小路。
程序效果如下:
点击工具栏上的播放按钮查看运行效果。
一条小路参考链接:https://www.tinkercad.com/things/0GF46rA8VWe
【尝试】
如果我们将循环变量i从0到5每次增加1的话,运行效果会有什么不同呢?
假如我们要修一条彩虹路我们可以用什么方法来实现?
同样的类型,如果要生成一排栅栏,我们应该如何设计呢?
是算好了位置,用顺序结构一个个的写出积木块需要移动的距离,还是利用循环结构一次性的利用循环变量来生成呢?
答案是肯定的,如果只有几个或者为数不多的栅栏,那么可能效率差不多,但是如果一长排的栅栏,那么还是利用循环结构效率会更高。
【动手】
在搜索引擎中输入关键字面向对象的程序设计,看看我们能得到什么帮助?
请看下面的拓展思考题。
单击工具栏上的播放按钮查看运行效果。
一排栅栏参考链接:https://www.tinkercad.com/things/5KTs4hpJLyD
案例2:制作一个桌子。
一般普通的方桌子,方形的桌洞,两条腿,支撑在地面上,如此简单的描述,你会如何设计这个3D模型呢?
如果我们给定了一个尺寸,将来如果每次改动都要将所有代码里面的尺寸都要更改一次,那不是很麻烦吗?
于是我们今天来学习一种新的方法——变量替换法。我们用变量来代替曾经出现在W、L、H等尺寸的地方。开来一起看看有什么不同吧!
操作步骤:
1、定义一个变量,我们从左边的数学类别中拖曳一个创建变量积木块到工作区,在积木块的右侧,有个小的下拉菜单,打开以后重新命名自己的变量,这里定义了4个变量分别是长度、宽度、高度和厚度。
2、在左侧的形状类别中,拖曳一个立方体积木块到工作区,然后在W、L、和H处,分别从左侧的数学类别中拖出刚才定义的长度、宽度和高度到其参数处,释放鼠标,得到如下图所示的程序。
3、同样根据自己的构思,使用立方体来构建桌子的腿的结构。最终效果如上图所示。
桌子参考链接:https://www.tinkercad.com/things/66gUs1W1ijh
【拓展练习】调用系统的随机函数,在地上生成一些随机的小花,小花用星形代替。
点击工具栏上的播放按钮查看效果。
小花参考链接:https://www.tinkercad.com/things/3R3xeRzbl4p
总结:
本节复习了,循环变量、一般变量以及随机数的概念和应用,熟悉这些方法对我们的编程很有帮助。
本节内容复习了结构化程序设计中的顺序结构、循环结构和创建对象,而根据程序设计的需要添加对象副本的方法,应用在不同的新对象中,这是面向对象的程序设计思路。
不同的设计思路有不同的程序代码块,各有优劣。
本节内容几乎都可以一题多解,随着编程内容的深入,我们编程的思路越来越开阔了。建议所有学习者能够根据自己的能力将几种思路的程序都设计出来,方便对比和参照学习。
注:完成全部内容时长约60分钟,要求每个学习者都能够完成这个基本练习。
说明:此学习资料中的积木中文翻译源自于TINKERCAD,可能将来发生变动,以TINKERCAD最新版翻译为准。