APP下载

图形化编程与Python知识迁移初步探究

2022-02-08金一民

中国信息技术教育 2022年3期
关键词:知识迁移计算思维结合

金一民

摘要:图形化编程在小学阶段开展得如火如荼,但初中生学习高级程序设计语言(如Python,C++)比较困难。作者认为,图形化编程和高级程序设计语言之间如果能有效进行知识迁移,则能促进初中生学好高级程序设计语言。Mind+软件在新版本中推出了Python模式,将模块与Python指令实时匹配,做到了图形化和程序代码的结合,即“图代”结合。利用“图代结合”通过由浅入深的教学,把递归等算法清晰地展示给学生,加快初中生对高级程序设计语言的使用和理解,由此发现“图代”结合能够有效促进学生对高级程序设计语言的学习,让小学时期所学的编程知识有了更多的用武之地。“图代”结合的作用是趋近于流程图的图形模块与程序代码形成近似匹配,降低学习难度,提高学习深度,对培养创新精神和计算思维有积极意义。

关键词:“图代”结合;算法;知识迁移;计算思维

中图分类号:G642  文献标识码:A  论文编号:1674-2117(2022)03-0000-04

● 始于创客软件版本更新,深挖“图代”知识有效迁移

Mind+软件是配套于DFROBOT创客设备的图形化编程软件,有使用Arduino C语言的上传模式,但是在上传模式中代码区域不是随着模块增减的变化而变化,同时也需要硬件的支持否则无法进入该模式,因而它对学习计算机语言并不友好。虽然笔者带学生参加创客项目比赛,一直用DFROBOT的创客设备,也持续使用此款软件,但在V1.7.0RC3.0版本出来后,美妙的东西随之出现,笔者脑海中也有了新的编程教学思维。

Mind+推出了全新的Python模式,它解决了长期以来一直困扰笔者的关于高级程序设计语言学习的一个重要问题,即如何让图形化编程和程序代码之间进行有效的知识迁移?对于计算机语言的教学来说,图形化编程是很棒的入门,很容易被中小学生接受,学生只需要拖动模块,不考虑其他太多因素,就能把一个程序写出来,但在学习诸如Python,C++,Java这类高级程序设计语言时,需要记忆许多内容,思考抽象问题,还要搞清符合规范的符号等,否则就会报错或存在漏洞。这样的变化肯定会极不舒服,但Mind+推出了全新的Python模式,就好像在图形化编程和学习高级程序设计语言之间给出了一个缓冲地带,确保两者间的知识能较柔和地进行迁移。

Mind+推出的Python模式包含模块方式和代码方式。以模块方式举例,如下页图1所示,可以发现在界面的左侧部分,Python中能用到的数据类型、结构等都有对应的图形化模块,当拖动指令模块到脚本区域并连接到“Python主程序开始”后,在自动生成区域就能实时匹配相应的程序代码,接着可以点击运行按钮,终端内就会出现运行结果。

● 由浅入深教学,“图代”共建计算思维

使用由浅入深的教学方式来学习计算机算法是许多教师普遍的做法,首先做一个乘法案例,如10*2=20,要求是以加法的方式表示,即使是小学生也懂得2+2+2+2+2+2+2+2+2+2,用10个2逐个相加的方法,这就是递归,先展示用模块搭建符合递归的条件的框架,即建立一个结构框架,如图2所示。

此函数调用自身规则是在原次数减一的基础上加二并连加十次,可以得到F(n)=F(n-1)+2,那么把否则里的返回return None改成return (DiGui((CiShu - 1)) + 2),对应的核心模块如图3所示。

接着,调用这个递归函数并输入一个实际参数,打印这个带有实参的函数,由于递归在Python中受到次数限制,所以输入的时候要注意不要输入过大的数值。参考代码如图4所示。

加二案例做完后让学生知晓何为递归,那就是在运行的过程中调用自身,且需具备的两个条件:①子问题与原始问题为同样的事,或更简单;②不能无限制地调用本身,应有出口。

另外,以汉诺塔为例来加深构建,汉诺塔规则:有A,B,C三根针,将A针上N个从小到大叠放的盘子移动到C针,一次只能移动一个,不重复移动,小盘必须在大盘上面。根据实测结果f(1)=1,f(2)=3,f(3)=7,f(4)=15可以得出规律为f(n)=2*f(n-1)+1。所以,把否则里的返回return None改成return ((2 * HanNuoTa((YuanPanShuLiang - 1))) + 1),从中可以发现递归的结构框架并没有发生改变,改变的只有第二个返回的值(如下页图5)。

两次加深对递归算法理解可能还不够,可以再试着用阶乘、斐波那契数列(其他数列都可以)、棋盘上的麦粒、杨辉三角等经典案例,巩固递归核心认知,拓宽算法适用范围。用了“图代”结合的方式,可以把以前未涉及的或大多数不理解的算法讲解清楚,真实触及培养学生计算思维的基本要素,可能会成为他们在未来求解问题的重要手段。教师跟学生讲解不必先从规范或格式开始,不纠结于何时缩进,写冒号、括号等。

● 用好对应关系,促编程代码加速理解

用模塊编写完程序仅仅是开始,还要对Python进行全面描述,这种描述是可以根据模块一一对应的,在面对图5所示的汉诺塔界面时,学生肯定会提出疑问,前六行代码带有#的内容没有被显示,无法找到对应的模块,这时可以告诉学生注释的知识,因为注释是程序员之间沟通的桥梁,让学生先养成好习惯,即做好注释。

定义对应def,汉诺塔对应HanNuoTa,圆盘数量对应YuanPanShuLiang,如果对应if,圆盘数量=0对应YuanPanShuLiang ==0,返回数字0对应return 0,else对应否则,返回2*汉诺塔圆盘数量-1+2对应return((2* HanNuoTa((YuanPanShuLiang - 1)))+1),对于定义函数这样的一一对应是可行的,但也有另外的做法(如图6),可以更好地解释。

在“图代”结合的方式下,多增加一行语法解釋,从整体上来理解编程代码的含义以及符号的使用,条件判断也可如图7所示来操作。

可以发现,指令模块和语法解释之间是好理解的,而指令模块或语法解释与Python语句对应经过了许多次匹配后学生的思维就会产生有趣的变化,当进行图形化编程时会联想到Python代码,当直接写Python代码时又会联想到图形化编程,这是一件特别好的事情。众所周知,右脑思维是一种图像思维,主要是针对图形的感知功能,也可以理解成图形化编程部分;左脑以逻辑思维为主,主要包括逻辑分类功能、语言功能、数学运算功能、理性思维功能,也可以理解成Python代码部分。这样就意味着学生的左右脑同时工作,那么知识迁移将会更容易实现。另外,图形化编程结构跟流程图比较相似,把“图代”结合者认为类似流程图和高级程序设计语言之间的匹配也未尝不可。

● 发挥Mind+软件优势,推荐库深度教学

再看看Mind+软件的代码模式,直接在里面写出符合Python语法的代码,必须先建立一个扩展名为.py的文件,然后在编写区域内输入程序指令,会有一些智能提示,熟练后并不比专业的软件慢,如果忘了怎么写,看一下软件左侧的模块指令区域,拖出相应的模块指令会生成相应的Python语句,如图8所示。

所以,无论是以拖动模块指令为主的模块模式还是以代码输入为主的代码模式都降低了编写程序的难度,对初中生学习高级程序设计语言来说是非常友好的。对教学来说,不用过多关注书写是否符合要求,应重点强调提升学生对计算思维的理解。

笔者之所以用Python是因为Python之禅,但更重要的是其丰富的库,恰巧Mind+也支持这样的操作,点击库管理,就会出现熟悉的库名,安装模式可以直接选择源再点安装,也可以使用pip模式进行安装,已安装的会出现在库列表中,使用的时候只需要import一下(如图9)。

这里的库存量很丰富,虽然大多都是存在,但很多库可以导入但并不能真正地使用,虽然目前这个版本尚无法对这些内容进行全方位支持,但对于初中生学习来讲已经是绰绰有余。

● 国产软件兼容并蓄,“图代”迸发思维火花

从Scratch的缺位到很多类似Mind+的新版本“雨后春笋”般的出现可以看出,国产图形化编程软件正在经历着一个“百家争鸣”“兼容并蓄”的阶段,这样的尝试对教师和学生来讲,都是积极的良性的探索。我们拥有着一副“好牌”,当然,好牌也存在打烂的情况,所以教师必须坚定地走好每一步,读懂创作者的心意,深挖“图代”结合,用好“图代”结合,让学生小学时期所学习的编程知识有更多的用武之地。让初中生能够在计算思维和创造精神方面有更多的探索机会。

参考文献:

[1]趣味编程指南(8-1)-自定义函数与分形递归-DF创客社区-分享创造的喜悦[J/OL] (2017-8-18).https://mc.dfrobot.com.cn/thread-24203-1-1.html.

[2]Python代码模式- Mind+教程[J/OL](https://mindplus.dfrobot.com.cn/Python-code.2021-5-15).

[3]刘汝佳.算法竞赛入门经典(第2版)[M]北京:清华大学出版社 2015,6.

[4]董永建.信息学奥赛一本通[M]北京:科学技术文献出版社,2017,10.

猜你喜欢

知识迁移计算思维结合
在素质教育中要重视培养学生独立获取知识的能力
程序设计课程中计算思维和应用能力培养问题研究
开展学习活动培养学生数学素养的研究
民族高校C语言程序设计课程教学改革的研究
浅析社会主义核心价值观视阈下技校生美术欣赏能力的培养
运用多媒体进行教学带来的双面性效果分析
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养
由一道物理题引发的对绳子张力的讨论
几则高中化学实验改进的探讨与反思