43-逆序加密算法-青少年编程Scratch

Scratch 少儿编程 331浏览 0评论
少儿编程Scratch01

友情提示:视频教程观看时请手动设置清晰度。

1
  
一直忙着,又很久没有写文章了。全球新冠病毒确诊病例已达1400万。感谢伟大的祖国,我们防控得当,几乎感觉不到病毒的存在了,生活重归正常,真好。
在某思的课程上上了几节计算机编程课程,其中有一部分是关于加密解密的,当然只是原理介绍。在操作环节,直接打开Python的编程环境,使用已经编写好的函数直接输出加密结果。课程并没有让我们自己去实现加密过程。只是让小学生体会一下加密的原理。
上完课,我们就在尝试在Scratch中实现这些加密过程,还是可以实现的。开始的时候有简单的栅栏加密。这可能太简单了,那就从逆序加密开始吧。实现这个加密,可以使用到青少年编程Scratch等级考试的四级技术,即使用列表。
2
逆序加密原理
这里的逆序加密只支持英文,即字母a将被换成字母z,字母b替换成字母y,26字母的第一个字母将被最后一个字母替代,第二个字母被倒数第二个字母替换,由此类推。

43-逆序加密算法-青少年编程Scratch

这是小孩自己做的逆序加密的幻灯片。

3
        实现方法:定义变量

43-逆序加密算法-青少年编程Scratch

定义两个列表,一个用于原字符清单,即26个字符,顺序排列。一个用于目标字符清单,即26个字符逆序排列。通过这种方式,只需要获得一个字符的所谓位置,然后从目标字符列表中取出对应的字符即可。

如果是C语言等其他语言,可以直接定义一个两列的表,会更为简单一些。如果不使用列表,那么就会有很多如果那么的判断。

43-逆序加密算法-青少年编程Scratch

除了两个列表以后,还定义了原文、密文,用于存储用户录入的原文和加密以后的密文。计数器用于循环处理。

4

实现方法:程序代码

43-逆序加密算法-青少年编程Scratch

初始化一些变量。通过询问指令获取用户录入,然后存入到原文中。

43-逆序加密算法-青少年编程Scratch

1)使用计数器,从第一个字符开始处理,处理完毕以后,处理下一个字符,直到所有字符都处理完毕。所以这里使用了一个计数器,从1开始。使用字符串长度的指令,就可以从1做到最后一个字符了。

2)获取当前字符,然后到原编码清单中获取这个字符所在的位置,存在“位置”变量中。

3)如果位置为0,就是不在26个字符中,例如数字、标点符合等。这时候,我们就直接输出原字符,附加到加密变量中,不进行转换。

4)如果返回位置大于0,就是说在原编码清单中找到了这个字符,获取位置。然后在目标编码清单中找到这个位置的字符。并且附加到加密变量中。

这里使用了字符串连接的指令。这是非常重要的指令,密文是逐渐加长的,就是密文的变量后面增加字符串。

读取某个列表的某个位置的数值。因为我们在定义列表时,已经排好正序和倒序的字符对应关系了。所以根据原字符位置就能直接找到目标字符位置。

微信订阅号:ABO_CRM

5
  运行效果

43-逆序加密算法-青少年编程Scratch

执行,录入一句话。

43-逆序加密算法-青少年编程Scratch

输出加密后的字符串。我们可以看到,用户录入的字符已经经过逆序处理了。

问题:
Scratch中这方法其实有点问题的,就是录入的字符并没有区分大小写,即录入a和A,这个指令都会返回位置1。这样大写就会被转化成小写了。这个问题留给小朋友继续解决。也许真的需要使用很多判断语句,每个字符都判断一遍。

知识拓展:Scratch中的列表相关的指令

43-逆序加密算法-青少年编程Scratch

这是程序的关键,就是一个数组。

自家广告:指导着指导着自己的小孩学习scratch编程,结果我自己写了一本书。本人的Scratch专著《零基础学Scratch 3.0少儿编程》预计将在2020年出版。到时,欢迎购买。如果需要青少年编程和机器人的私教培训陪练,请留言,两人开班,远程授课时间随意。
2020.07.18 Beijing

转自公众号:
艾博特

您必须 登录 才能发表评论!