中小学信息技术编程教学衔接实践研究
——以借助Scraino学习代码编程为例

2022-08-18 06:46李亚魁邱浩山东省淄博高新区实验中学
中国信息技术教育 2022年16期
关键词:图形化流程图代码

李亚魁 邱浩 山东省淄博高新区实验中学

编程教育教学对提高学生计算思维有着很大的帮助,随着国内对小学编程教育的重视程度不断提升,图形化编程知识已陆续出现在各省市小学信息技术课程中。北京师范大学傅骞教授曾指出:“由于图形化编程工具本身也有其局限性,学生进入高中阶段最终还是要学习文本编程。因而,在编程教育中,何时从图形化编程过渡到文本编程以及如何使学生将学习图形化编程的经验迁移到文本编程学习中,是值得研究的问题。”因此,如何把学生在小学阶段已学会的图形化编程知识迁移到初中阶段的代码编程学习中,并在内容、方法、平台上做好两个学段之间的衔接工作,是非常值得研究的问题。

在教学实践中,笔者尝试利用Scraino来编写初中课本(泰山出版社2019版本)中Python的几个典型案例,探索寻求一种弱化语言本身,强调编程思维和算法学习的方法,以求实现小学阶段和初中阶段信息技术教学的有效衔接。

● 案例一:密码验证程序

密码验证案例是利用选择结构作出判断制作一个密码验证程序,虽然对于信息技术教师来说,基本上一眼就可以看出这个程序的结构和功能,但是对于只学过两三节课代码编程的初中一年级学生来说,接受起来还是存在较大困难。另外,该案例中涉及“变量”“赋值符号”“等号”等知识,以及纯英文的if…else语句,这无疑使得学生理解程序更加困难。所以,教师不妨先向学生描述并分析这个问题,并给他们7~8分钟左右的时间,用图形化编程的形式,将这个程序编写出来,以此帮助他们理解该程序的功能和效果,然后再引导学生尝试读懂、编写这个Python程序(如下页图1)。这样就形成了学生先学习理解该程序的功能,再根据功能去领悟学习Python代码含义的学习方法。当然,有的教师会提到可以借助流程图分析程序,不可否认,流程图依然是非常好的方法,但是流程图也有一定的劣势:①流程图很难让学生动手参与实践;②流程图和程序代码呈“弱关联”的状态,也就是说学生理解了流程图以后,怎样把流程图映射到代码中,还是比较麻烦的过程。

图1 密码验证程序的Python代码

而利用图形化程序编写(如下页图2)就相对直观,因为这相当于将程序直接翻译成了汉语,学生通过模块中的如果、那么,很容易就明白了“if”“else”的含义。而且,这里的缩进和积木块的颜色区分,也能产生一种直观的映射。对于此复杂度的程序,学生在小学阶段的图形化编程学习中早已理解掌握,因此,借助图形化程序编写,能够很好地将学生在小学信息技术课程中学到的知识技能,与初中的程序代码关联起来,起到衔接和辅助的作用。

图2 密码验证程序的图形化程序代码

● 案例二:验证码校验程序

有关验证码校验的案例程序更加复杂,它有两层循环,外层是一个条件循环,用来判断输入的验证码和随机生成的验证码是否一致,内层是一个计数循环用来生成六位数的随机验证码。其中,计数循环的循环体有两句,第一句的功能是产生一个0~9的随机整数,第二句的功能是将这个整数以字符串的形式依次存储到变量mc中,循环六次就产生了6位随机数。学生比较难懂的是循环体的第二句,每次循环都通过“+”号,以字符串的形式将这1个产生的随机数追加存储到mc中,而不是数学的加法运算。再加上三个变量mc、mi、ms(如图3),学生理解起来的确比较困难。

图3 验证码校验程序的Python代码

然而,利用图形化编程来实现这个程序(如图4)的优势在于:①变量的命名,可以用汉字,见名知意。②语句的层次归属关系非常明确,虽然Python代码中也有严格的缩进要求,但是从观感和阅读性上来看,仍然需要非常高的学习成本,而在图形化编程中直接以括号形式的结构,把内层语句框起来,不用过多的解释,学生很容易明白。

图4 密码验证程序的图形化程序代码

笔者发现,在Scraino中学生基本可以用近乎“读题”的形式把这个程序编出来。第一步定义三个变量:验证码、输入码、1位随机数。第二步通过计数循环,生成一个6位的随机数验证码,循环体通过两行程序实现,第一行是将变量“1位随机数”设为0~9之间的随机数,第二行是将验证码设置为链接“验证码”和“1位随机数”,“链接”一词可以非常形象地让学生了解6位数生成的过程,进而为理解mc=mc+str(ms)做好铺垫。同时,第一句中的“在0和9之间取随机数”积木块,也会帮助学生理解random函数。类似“random.randint”这样的语句,如果不是在理解的基础上加深记忆,大部分学生等到隔一周再来上课就会遗忘。此外,rang(0,6)和randint(0.9)这两个语句不好理解,因为同样是用括号表示范围,range()函数适用“前包后不包”的规则,而randint就全都包括,很容易混,通过图形化的这个过程,更容易让学生理解这个程序运行的过程。

基于上述内容,可以清晰地对比:利用图形化编程和画流程图这两种方式,哪种对学生学习Python代码更有帮助。

● 案例三:拍7游戏

“拍7游戏”案例采用的是枚举法,即找出明7和暗7。如图5所示,程序用计数循环,把100以内所有的整数列举出来,再用if语句逐个进行判断,把符合明7条件或者暗7条件的进行输出,不符合的略过。这就涉及了in和%取余运算,且有三层缩进。

图5 密码验证程序的图形化程序代码

为了让学生更为直观地了解枚举法,教师仍然可以通过图形化编程的形式(如图6),辅助学生深入地理解如何利用枚举法找到所有的拍7数,同时对核心的条件表达式语句<“7 in str(i) or i%7==0”>有一个直观的认识。

图6 拍7游戏程序的图形化程序代码

至此,可能有教师会说,图形化编程的局限性很强,有很多程序的功能实现不了。然而,笔者深入研究后发现,泰山版初中信息技术教材上所有的Python程序,都是可以运用图形化编程的形式编写的,如迭代、冒泡排序、递归、水仙花数,百钱买百鸡、棋盘上的麦粒等,而且,现在众多的智能家居、智能玩具和无人机等,都可以通过图形化编程语言进行编程控制。另外,研究这个方法的目的就是探索一种将小学图形化编程知识迁移到初中学习中,进而辅助Python代码编程学习的方法,所以从这个角度看,图形化编程软件(如Scraino),确实可以作为一种工具来做实践研究。

笔者希望通过此项研究,能丰富中小学编程教学衔接的教学策略,推动中小学生信息技术核心素养的有效提升。

猜你喜欢
图形化流程图代码
云的识别指南
基于Arduino图形化编程的教学应用研究
浅谈图形化编程在小学教育中的作用
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
Mixly米思齐:优秀的国产创客教育工具
近期连续上涨7天以上的股
流程图学习指南
如果你想,就可以做到更多!