APP下载

信息科技中算法该用什么编程验证

2022-11-07陈鸥辉湖南省株洲市第二中学

中国信息技术教育 2022年21期
关键词:编程语言图形化代码

陈鸥辉 湖南省株洲市第二中学

《义务教育信息科技课程标准(2022年版)》(以下简称“信息科技标准”)中强调了课程的逻辑主线是数据、算法、网络、信息处理、信息安全与人工智能。信息科技标准同时强调,在教学中,注重引导学生经历原理运用过程、计算思维过程和数字化工具应用过程,构建知识,提升问题解决能力。

● 信息科技课标对“身边算法”的学习定位

信息科技标准与《普通高中信息技术课程标准(2017年版2020年修订)》共同强调了四个核心素养:信息意识、计算思维、数字化学习与创新、信息社会责任。在一次培训中,熊璋教授提出:“面向课程实施,如果要抓一个最关键的问题,我觉得就是信息科技中问题求解的思维方法——计算思维。计算思维是信息科技学科里最本质的也是我们最应该拎出来的(东西)。”而计算思维是指个体运用计算机科学领域的思想方法,在问题解决过程中所进行的抽象、分解、建模、算法设计等思维活动。

在信息科技标准中,关于算法的教学目标有:了解算法在解决问题过程中的作用,领会算法的价值;能采用计算机科学领域的思想方法界定问题、分析问题、组织数据、制订问题解决方案,并对其进行反思和优化,使用简单算法,利用计算机实现问题的自动化求解。

在信息科技标准中,5~6年级的计算思维学段目标强调了学生对给定的任务,能将其分解为一系列的实施步骤,使用顺序、分支、循环三种基本控制结构简单描述实施过程,通过编程验证该过程,实现自动求解。从信息科技标准的这些描述来看,学生不仅要学会用自然语言、流程图等方法来描述算法,而且要学会通过编程验证算法的可行性。

算法已经成为影响人类生活的一个重要组成部分,算法的学习也必然成为中小学课程的必要组成部分。在国家义务教育课程方案中,信息科技已经成为一门独立的学科。那么,作为课标核心承载内容的算法,适合用何种编程语言来编程验证算法的可行性呢?

● 图形化编程与代码编程的优劣比较

说到算法,在信息学奥赛教练的脑海里首先想到的往往是编译型语言,如PASCAL、C/C++语言。这些语言在解决算法的时效性上具有明显的优势,但由于语法过于严谨、容易出错,导致学习难度大,趣味性不足,所以很难引起学生的学习兴趣。

随着Arduino、App Inventor等图形化编程软件的兴起,算法的实现在中小学普及教育中成为可能。另外,许多编程网站也提供了在线图形化编程,不少网站还提供了整套适合4~18岁学生在线自主学习的完整的编程课程,学生能够一边自学,一边在线编程运行程序来验证算法的可行性。

例如,在开设“身边的算法”“过程与控制”“互联网应用与创新”“物联网实践与探索”“人工智能与智能社会”等课程内容的编程环境方面,可选Mind+、mPython等,其不仅提供了图形化编程的界面,而且能自动生成Python、C语言等编程代码。图1是海龟编辑器编程软件中通过递归来绘制一朵花的代码。通过代码可以看出,对于学生来说图形化编程几乎不存在语言障碍,而代码编程存在明显的语言障碍,需要记住相当多的关键词与语法,才能准确地写出可运行程序。表1对比了图形化编程与代码编程的不同。

图1

表1

所以,随着图形化编程技术的日益成熟,面向全体中小学生的各类算法设计的编程教学已经成为可能。例如,在powerhomeschool网站上,提供了三门适合中小学生学习的与计算机科学相关的编程课程:《STEM 1: Introduction to Coding》《STEM 2: JavaScript》《STEM 3: Electronics and Coding》。在bjc.berkeley.edu上的面向中小学生的编程课,使用的则是Snap图形化编程语言。

可见,不管国外还是国内,图形化编程在中小学教学中的应用都非常普遍。从功能实现上来看,编程的三种基本结构——顺序、选择与循环,以及简单的算法如模拟、递归等,两种编程方式都可以相对较快地完成算法可行性的验证。

但是,在开设“过程与控制”“互联网应用与创新”“物联网实践与探索”“人工智能与智能社会”等课程时,更适合选择图形化编程软件来进行教学。图2是SIoT物联网相关知识测试的图形化代码与自动生成的C语言代码对比,通过对比可以看出,图形化编程能够让信息科技课程的算法实现在相对较少的课时内达成教学目标。

图2

当然,对于复杂的底层算法,如快速排序、动态规划、最小生成树、图论等算法知识的教学,则更适合选择代码编程进行教学。另外,由于信息学奥赛课程对程序的运行时效性要求非常高,所以在信息奥赛教学中往往选择编译型高级语言如C/C++等进行教学。

● Python语言与C++在数据结构、语法构成上的优势与问题

目前,Python与C++是在中小学采用率最高的两种代码型的高级计算机语言,它们的不同点主要如表2所示。

表2

以汉诺塔递归算法的Python程序与C++程序编写与运行为例,对比实验如下页图3所示。

图3

通过两个程序对比可以看出,在实现同样算法时,Python程序代码所占行数显然比C++少得多。除了编译原理不同带来的差异之外,两种编程语言在语法上也存在许多差异(如表3)。

表3

严格地说,这两种编程语言并不具备相互替代的关系,而是各有各的适应领域。在选择编程语言时,过多地纠结在编程语法的细节上,很容易打击学生的学习积极性,影响学生对算法的学习兴趣,导致无法达到计算思维的培养目标。

因此,在中小学信息科技教学过程中,具体使用哪种编程语言来实现算法,教师应根据学生的实际接受能力进行选择。除了编程语言的选择,教学内容的组织形式也非常重要。在算法实现的教学中,减轻代码实现的难度往往也是有必要的。在学习递归算法时,除了汉诺塔,还可以结合绘图功能设计各种项目进行教学,如完成不同形状的花朵、各种树形等艺术作品的创作。

● 如何更好地进行“编程验证算法”的教学

不论采用哪种语言、平台来完成算法的可行性验证,在教学过程中都要关注算法学习的方法与效益。教师可以更多地利用项目式学习的方式进行教学,激发学生的学习兴趣。例如,在学习模拟算法时,结合疾病传播项目进行模拟,如果能够结合各类社会问题进行算法实现的教学,将大大提高学生的学习积极性。又如,基于开源硬件的日渐成熟,在课程教学中可以结合更多的项目达到算法实现来培养学生的计算思维。通过比较实际且高效的项目学习,如“过程与控制”中的项目“小型开关系统的算法实现”、“互联网应用与创新”中的项目“简单密码学的算法实现”、“物联网实践与探索”中的项目“智慧农业模拟系统的算法实现”、“人工智能与智能社会”中的项目“智能出行模拟系统中的算法实现”等,不仅能激发学生的学习兴趣,而且更利于学生计算思维能力目标的达成。

古人云:“皮之不存,毛将焉附?”对于信息科技课程,算法及其编程实现应是课程的重要的核心内容之一,所以对于信息科技教师的教学来说,选择哪种编程语言来实现算法也是非常重要。选对了教学内容,那么核心素养的目标培养也就水到渠成了。

猜你喜欢

编程语言图形化代码
基于Arduino图形化编程的教学应用研究
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
浅谈图形化编程在小学教育中的作用
计算机软件JAVA编程优势及其应用
基于计算机应用软件开发的Java编程语言研究
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
Mixly米思齐:优秀的国产创客教育工具
近期连续上涨7天以上的股