友情提示:680元/半年,儿童学编程,就上码丁实验室。
让我们从简单的例子入手,先使用“连接”积木块。我们和角色对话,告知姓氏以后,角色以“您好,(某)同学”来和我们打招呼。这里将两个“连接”积木块叠加在一起,达到连接多个字符串的目的。
接下来,角色从我们所说的话中,找到最后一个字。通过这个练习,我们学会使用“第()个字符:()”,和“()的长度”这两个积木块。
这两个练习不难,小朋友们反复尝试几次,就可以熟悉这三个积木块了,接下来我们开始“说反话”的例子。
一. “说反话”
我们要编写一段代码,设计一只聪明的鸟儿,它可以把主人的话反过来说一遍。我们在这段代码中,要用到上面的三个积木块。
在下面的代码中,变量 i 代表当前指向的字符的位置,给小朋友们稍稍引入一点“指针”的概念。通过循环,改变变量 i 的值,从而指向不同的字符。由于是从最后一个字符倒序指向第一个字符,因此连接所有的字符后,聪敏的鸟儿就可以把主人的话反过来说一遍啦。
冉爸在上课的时候,从最简单的找最后一个字符开始,进而找不同位置的字符;从五言古诗,到七言古诗,再到随机长度的字符串,让孩子由浅入深,完全理解这一段代码。
在这一段代码中,我们先设定一个变量的初始值,在循环中不断改变该变量的值,直到临界条件满足,停止循环。实际上,类似这样的结构在编程中是经常遇见的,冉爸提醒小朋友们先熟悉这样的“套路”,在更多的例子中识别它,进而在将来的作品中熟练地运用这样的结构。
二. “成语大全”
接下来,我们要挑战新的难度啦。首先收集小学~中学阶段语文课本中出现的所有成语,接下来导入Scratch作品中,输入任意一个汉字,搜索包含这个字的所有成语。
第一步收集成语的工作并不是通过Scratch完成的。冉爸利用Python,从网络上抓取语文课本中出现的所有成语,一共有2025个,保存在txt文件中,然后利用Scratch列表的导入功能,将这些成语分“小学”,“初中”,“高中”,“全部”保存在不同的列表中,下图是列表“全部”中的成语:
接下来就是从列表中依次取出成语,判断其中是否包含要搜索的汉字。如果有,我们的机器人会读出该成语。整个代码稍微有些长,如果小朋友们掌握了循环、判断、变量、字符串操作等知识,是可以理解编程思路的。冉爸建议学有余力的小朋友,通过阅读与改编,来加深对代码的理解,直至实现自己的创作。
小朋友们在文章左下角点击“阅读原文”,就可以在网易卡搭中打开这段代码啦。
对啦,这段代码中还有“成语接龙”,思路也还算简单,留给小朋友们探索吧。
后记:Scratch2.0中缺少判断字符串中是否包含子字符串的功能,比如说,如果要查找成语“焕然一新”中是否含有“新”,我们需要取出成语中每一个字符,再和“新”做比较,这样很不方便。在Scratch3.0中就不存在这个困扰啦,因为有了下面这个新的积木块,是不是很方便啊?