友情提示:380元/半年,儿童学编程,就上码丁实验室。
数字逆序输出-取余取整和C语言版本
★★★★★
逆序输出 · 目标
上一次我们使用了字符串指令,将一个数字倒序后输出。现在使用一种比较正规的方式-取余和数学运算,实现数字的逆序输出。同时给出C语言版本,通过对比,看看面向“大人”的C语言和面向“小孩玩耍”的Scratch语言有什么区别。
目标:产生或录入一个几位的数字,例如123456789,要求输出为987654321。
逆序输出 · 面向读者.用时
根据实现方法的难易程度,适用于3-6年级学生,预计用时约60分钟。
方法一· C语言版本
为了更好的对比,我们先给出C语言版本。对于“好玩”的小孩来说,这个C语言的方式,很可能是“灾难性”的。有可能会严重的打击小孩的兴致。虽然我这个小孩什么都想学,让我教他C语言,我也在机器上安装好了C语言的环境,但我还迟迟“不舍得”去教他C语言,怕打击他的积极性。其实心里他还是“好玩”的,停留在“视觉”层面上。
1 · 效果
这是在VS Code里面,C版本的运行效果,就是下面的一行蓝色的字。
没有角色,没有动画,颜色都是单调的,只有字符,这多少有点枯燥。C语言的确适合比较懂事的,比较能安静下来的人。
2· C程序说明
这是真的代码,这也是真实的世界。相比较而言,Scratch似乎属于梦幻中的世界。这也是为什么Scratch能够很吸引“小学生”的缘故。
C语言的变量有严格的数据类型,因此这里将输入的数字定义为整数。然后用一个临时变量存储结果,也是整数。
循环逆序处理数据,理解这段话需要一定的功底。要从数学着手,取最后一位,放在结果中;然后丢掉最后一位,再取丢掉后的最后一位,加到结果中时,之前的结果要乘以10,因为新来的数字是个位,原来结果整体就是10位了。边做边丢掉最后一位,程序非常简练,但理解却需要花功夫。
1)%为取余,一个整数除以10取余,就是得出个位数。所以12345,第一次取出5。第二次取得时候已经把5丢掉了,剩下1234,取最后一位数,得到4。Scratch里面有取余取整的指令,因此这个操作在Scratch中不会有问题。
2)/这是除法,因为是整数,所以除10以后,就把个位上的数字给扔掉了。这很巧妙。Scrach中的变量是没有类型的,所以无法设置为整数,如果除以10,那就变成小数了。因此要结合另外一个指令,将小数位去掉,就是“向下取整”。
方法二· Scratch取余+取整+循环
现在,我们在Sratch中实现一遍和C语言完全一样的功能。这算是正规的一种方法了,在Scratch四级考试中,应该能得98分以上。
1 · 效果
录入,然后报出逆序的数字。可以随意设置背景和角色,这对“小孩”的吸引力会大很多。
中间加入了1秒的等待,所以能够看到系统是先取出9,然后取8,结果是逐渐的,剩余数字会慢慢变少,上一行的最后一个数字被搬到下面第一个数字上去了。真很直观,还有动画效果。
如果我们录入9870000000。系统会转换成789。在之前的字符处理方法中,如果不判断零的话,会输出0000000789。
2 · Scratch实现
初始化,询问录入。
这里是核心程序了。程序和C语言对应。
剩余数字为零之前,一直重复执行。
1)使用取余指令,除以10取出个位数,当然原来的结果要乘以10,新来的数字当做个位。这和C语言几乎完全相同。
2)丢掉最后一位,在C语言中因为变量是整数,因此会自动丢掉。Scratch中没有数据类型限定,因此除以10以后就变成小数了,个位数变成了小数,要用“向下取整”将这个小数位扔掉。除法+向下取整,能够得到C语言整数赋值的功能。
这个Scratch的版本还不算复杂,在这个程序中,在连接“编程逻辑”上,C和Scratch是一样的。因此,使用Scratch工具,一样能够培养和C类似或一样的“编程思维”。
说出运行结果。还不错哦。
总结
我觉得这是一种好方法,可以让小孩体会循环的功能。如果开始的时候不熟练,我们就举例子,123456789。
运行第一次时:结果为9,剩余12345678
运行第二次时:结果为98,剩余1234567。这时候要引导小孩,9和8两个数字都有了,怎么拼成98,就是原来的数字要放在十位上,就是要乘以10.
第三次运行时98X10 + 7
第四次运行时987 X 10 + 6
以此类推,知道这个方式,然后再想办法,转换成循环。掌握了这个能力,编程也就入门了。
微信号:ABO_CRM
2020.08.02 周日
北京
后续…
“数学题”在计算机程序设计中占有非常重要的地位。小孩一定要学会举例,在纸上写出过程,然后尝试转化成计算机语言。多练习,多实践,即可。
自家广告:指导着指导着自己的小孩学习scratch编程,结果我自己写了一本书。本人的Scratch专著《零基础学Scratch 3.0少儿编程》预计将在2020年出版。到时,欢迎购买。如果需要青少年编程和机器人的私教培训陪练,请留言。
转自公众号:
艾博特