友情提示:380元/半年,儿童学编程,就上码丁实验室。
数字逆序输出
★★★★★
逆序输出 · 目标
对一个数字或字符串进行逆序输出,是编程中非常常见问题。在C中,在Python如此,在Scratch中也如此。
目标:产生或录入一个几位的数字,例如12345,要求输出为54321。
看起来,这很简单。对于初步接触“数学”编程的人来说,还是要花点功夫的。实现的方法也有很多,不同的人做出来的结果肯能是完全不同的。这里,我们探讨了几种方法,例如把数字当做字符串处理,使用循环,也可以使用数学算算式。同时这里还列出了一种C语言的方法(下一篇)。我们能够看到C和Scratch的不同特点。上一篇我们学习了简单的数列加总,和逆序输出相同,都属于编程中的“数学”问题。在考试中,数学问题估计能占一半。
逆序输出 · 面向读者
根据实现方法的难易程度,适用于2-6年级学生,预计用时字20分钟到90分钟。
逆序输出 · 用时
本文第一种方法,很简单明了,把数字当成字符串处理,是小孩独自完成的。用时在30分钟以内。
第二种方法,是经过指导,使用了循环,预计用时40分钟。
第三种方法:需要使用到数学运算,当做数字来处理,用时需要根据小孩的理解能力来确定,预计要用60分钟。(下一篇)
第四种方法:就是第三种方法的C语言版本,视学生基础,要准备好1个小时。虽然代码只有几行,有些大人也可能看不懂。(下一篇)
方法一· 字符串取值
和C/Python不同,Scratch的变量定义是不分类型的。定义变量时并不能指定为整数、浮点数或者字符。因此我们将用户录入或产生的数字,直接当做字符串处理,取出第几位,然后拼接起来即可。对于数字的处理,一般都不会太长,例如规定是4位数,或者2-5位数字。因此,甚至都可以不用循环。不使用循环、递归的操作对小孩来说是最容易理解的。
1 · 效果
系统自动产生一个数字,然后逆序输出。
2· 设置角色和背景
小孩对背景、角色设置已经“炉火纯青”了,很快就能搭出一个场景出来。时间都花在图片上了,虽然我认为这没有多少意义。学会了在百度上搜索各种美图,然后直接用角色当做背景。每个程序都是颜色亮丽丰富的。题目要求使用白色背景,保留小猫咪角儿,因为是练习,所以基本上都会加上一些“颜色”。
3 · 定义变量
这里只使用了两个变量,原来的随机数和逆序处理后的数字。
4 · 2/3/4位数字的逆序处理
一上来就产生随机数,连变量初始化都没做,这可不大好。
直接判断数字的位数,产生的随机数是数字,但完全可以当字符串处理。因此这里直接取出了字符数。如果等于2,只要先取出第二个字符,然后取出第一个字符,然后连接起来。字符串连接的方法,小孩已经掌握了。
如果这个数字是三个字符,那就依次取3,2,1的字符,并且连接,一行就搞定了。
如果这个数字是四个字符,那就依次取4,3,2,1的字符,并且连接,一行就搞定了,虽然这个连接很长很长。
其实到这里,已经可以发现规律了,处理方法相同,完全可以使用循环。当然题目规定了2-4位数,因此直接使用判断也能实现出来。
说出原数字。
说出逆序数字。
总结
这种方法似乎比较“笨”,但应该是最容易理解的一种方法。没有使用循环,没有使用数学算式。只要会获取某一位的数字,然后使用连接,就能逆序输出。在Scratch四级考试中,这种方法得个80分以上应该是没问题的。
那么问题来了,如果来个1-10位的数字,那这种方法显然是不合适的。
方法二· 字符串+循环
这种方法和第一种方法类似,只是加上了循环,因此其实可以处理任意位数的逆序输出,程序也变得简单明了了。但理解上,这种方法回会比第一种方法要难一些。这算式正规的一种方法了,在Scratch四级考试中,应该能得90分以上。
1 · 效果
系统自动产生一个数字,然后逆序输出,这是一个8位数,这得使用循环了。
2 · 任意位数字的逆序处理
可以产生一个很大的随机数。然后把这个数字的位数保存在一个变量中。这个变量将用于循环处理中,有几个字符,我们就需要输出计几次。因为我们要倒着输出,所以从最后一位开始处理。
开始的时候计数器指针放在最后一位,取出计数器所在位置的字符,然后和结果连接起来。
第一次取出最后一个数字,第二次取出倒数第二个数字,以此类推。
每做完一个循环,就将计数器减少1。
总结
这种方法就比较正规了,还是把数字当做字符串处理,直接从最后一位取值,有几位就重复做几次。
微信号:ABO_CRM
2020.08.01 周六
北京
后续…
篇幅已经不少,使用数学算式和C语言的版本,就放在后面一篇文章吧。
自家广告:指导着指导着自己的小孩学习scratch编程,结果我自己写了一本书。本人的Scratch专著《零基础学Scratch 3.0少儿编程》预计将在2020年出版。到时,欢迎购买。如果需要青少年编程和机器人的私教培训陪练,请留言。
转自公众号:
艾博特