通过本讲您将学到Blockly的以下知识点:
(可使用达奇或达达机器人完成,以下都简称“达达”)
程序、指令和序列的概念,还有录制并播放声音的功能,并实现九九表的第一个版本。
从本节课开始,我们将逐步实现一个能自动计算并让达达说出九九乘法表的项目。那么什么是九九表呢?九九表是用来计算两个(个位)数相乘的公式,是一切乘法运算的基础,中国的小学一年学生就能熟练背诵九九乘法表。其口诀如下:
九九表是中国发明的,经考古发现:在春秋战国时代就已经有了九九表的使用。后来东传入高丽、日本,经过丝绸之路西传印度、波斯,继而流行全世界。九九表是古代中国对世界文化的一项重要的贡献。九九表最早是倒着念的,从九九八十一开始,最后是一一得一。故称为九九表。从13世纪开始才改为从一一得一开始最后是九九八十一。
在正规的程序设计语言中,编写一个九九表的程序其实很简单。用一个双循环即可实现,计算结果打印在屏上。在达达中实现九九表与其它语言相比最大的不同在于:参与乘法的两个数和结果是用声音念出来的。就是要把数字用声音读出来。相信这么酷的呈现方式就是用其它语言来实现也不是一件轻松的事儿。
达奇和达达本身能录制10个自定义声音片段,因此需要先录制1-10这10个基本的数字,比如25就用2、10和5这三个数的读音来组合。这些组合的变化,再加上Blockly语言本身的一些限制,如最多只能使用5个变量等,无形中大大增加了实现九九表的难度。
所以,在Blockly中实现语音读出九九表的程序是十分具有挑战性的,特别是当学习者是10岁之前的小读者并且接近零基础编程。如果你能坚持学习完本课程,当你运行着自己写出的九九表程序并且帮助更小年龄的学生来背九九表时,你的感觉一定是很棒的!
现在,让我们一起踏上这具有挑战性和趣味性的编程之旅吧!
首先让我们来实现一个让达达说出数字1-10的功能。
【案例1-1】录制数字1-10,并让达达按1-10的次序说出这些数
步骤1、启动Blockly app。
步骤2、打开达奇或达达机器人,并让ipad连接上达达。
步骤3、以下步骤将你说的声音"1"录制并保存到到达达机器人中。
3.1-按下图的图标序号,依次点击“声音”、“我的声音”
3-2选择录制的声音片段#1
达奇或达达都提供了最多能录制10个自定义声音的功能。以下将使用第一个声音片段保存您说的:1
3-3按下图的所示点击1
3-4按下图所示,点击麦克风按钮,正式开始录音。
录制声音时,请说:1
步骤4、请拖出10个”我的声音“,分别录制1-10的数字并按1-10的次序排列好。
我的声音#1:1、我的声音#2:2、我的声音#3:3、我的声音#4:4、我的声音#5:5
我的声音#6:6、我的声音#7:7、我的声音#8:8、我的声音#9:9、我的声音#10:10
看看你写好的程序与以下代码是否相同?
运行以上程序,达达会按指令排列的先后次序,用你录制的声音依次说出数字1~10。
现在让我们来明确以下三个概念:指令、序列和程序。
1、指令:
指令能完成一个特定的任务或功能,指令是计算机语言中最基本的操作。在Blockly语言中,我的声音#1就是一个指令。以上程序共使用了11个指令,包括”开始指令“。
2、序列:
指令执行的次序与指令编写的次序相同。一个序列可以包含多个指令。序列是程序最基本、最常用的结构。
3、程序:
先说说生活中的程序,下图是一个“学生早起上学”的程序,也可以称为早起上学的流程。
第一个操作:太阳升起
第二个操作:起床
第三个操作:刷牙
第四个操作:洗脸
第五个操作:梳头
第六个操作:吃早餐
第七个操作:与父母道别
第八个操作:上学
程序包含两个要素:操作和执行次序。如果其中一个要素出现了问题,那么程序就会出现问题。例如把第5个操作(梳头)放在第2个操作(起床)之前,那么早起上学的程序就是错误的。如果第3个操作(刷牙)漏掉了,那么这个早起上学的程序也是错误的。如果吃饭的操作出现了问题,例如,吃饭时被食物噎着了。那么,早起上学的程序也不能继续执行了。
所以,程序要想正确执行从而达到预期的目标,每个操作和操作的次序都要正确。再说说计算机程序的概念,计算机的程序就是自动完成某个任务,并且由多个指令按一定次序执行。
程序有两个要素:指令和执行次序。这里的指令就是生活中的操作。
序列和程序的关系:序列是程序最基本的一种结构。
【案例1-2】编程,让达达念出九九表
解题思路:
以下是念出一一得一的一组指令
等待达达按钮1指令的作用:等待按下顶部按钮1,才执行下一个指令。
该指令还有一个目的:表示人将乘法计算的结果1用按钮1来表示。
提示:
1、 程序中的“等待达达按钮1”注意不要误设置为“等待达奇按钮1”,以下指令是错误的,而且很容易犯这个错误。
2、程序在执行时,人只需要按一次达达按钮1,就会执行完以上四个等待达达按钮1的指令。
3、由于达达的10个录音片段已被10个数字占满,所以,无法再录制新的声音,如:得。那么在程序运行时,凡是乘法结果没有超过10的结果,例如一一后面应该加上“得”,这个“得”就只能由人来说了。在达达说完一一后,人先说“得“,然后按下达达的按钮1,达达会念出下一个数字:一,形成”一一得一“的效果。
以下是一一得一到一五得五的程序:
可能有的读者会说:“Vic老师原来你的九九表程序这么烂啊?程序要是这么写下去该多长啊?你使编程称为一种痛苦!”
有这种想法的读者一定是具有一定的编程能力的。这种想法也是可能理解的。不过这是九九表的第一个版本,对于那些尚未掌握循环、变量等知识的读者来说,目前也只能接受这个版本的程序。以后九九表程序会不断地升级,随着新的知识的掌握,程序会越来越简短和优化。
作业
请读读者在以上程序的基础上添加一六得六至一九得九的程序。并添加二二得四至二九一十八的程序。
总结
本节课介绍了开设本专题的目的:用一个案例和12节课让大家快速入门Blockly编程,并掌握所有编程语言都必有的序列、分支、循环、函数、变量、事件等知识。
本节课介绍了编程的三个基本概念,程序、序列和指令,这些都是以后经常要接触到的基础知识,同时带领大家为达达录制了10个数字,并写出了九九表的第一个版本。
下节课,我们将学习循环的知识,并用循环来优化九九表程序。
最后,我们为写程序的过程录制了视频,大家也可以参考:
领取专属 10元无门槛券
私享最新 技术干货