APP下载

小学阶段C++编程教学实践与反思

2022-05-30刘宝龙王炜达

教育实践与研究·理论版 2022年6期
关键词:计算思维语言

刘宝龙 王炜达

摘   要:编程教学能有效培养学生的逻辑思维、编程思维和计算思维。学校在开展相关教学实践活动时,需通过分析C++编程课程的优势,制定合理的课程内容及教学策略,培养学生的计算思维。与此同时,学校与教师要做好编程教学内容储备、采取灵活得当的教学方法,帮助学生在轻松愉悦的学习过程中理解和掌握知识。

关键词:编程教学;C++语言;计算思维

中图分类号:G622.3    文献标识码:A    文章编号:1009-010X(2022)18-0042-04

一、引言

隨着人工智能理念的渗透和运用,人类的生产、生活和学习都逐渐智能和便捷。编程是实现人工智能的核心和基础,人类一切构思设想都依赖于程序代码来实现,同时,编程语言学习是人工智能发展过程中不可或缺的基本要素。2017年国务院印发的《新一代人工智能发展规划》对人工智能教育的发展作出了工作要求和计划,明确提出要让中小学生学习人工智能课程,让编程教育逐渐在中小学普及开来。由此可见,推广编程教育已经得到了国家层面的高度重视。

基于以上背景,笔者参与的相关课题项目在校内以社团课的形式开展了为期一年的C++编程教学实践。通过课堂实践,探索适合小学生的C++编程学习内容和教学方法,并尝试从图形化编程到使用代码编写程序的升级和转变,培养学生的逻辑思维和计算能力。

二、学习C++编程的优势

目前,面向小学生的编程课程主要有两类,一类是以培养兴趣、锻炼思维为主的图形化编程,一类是针对开源硬件或机器人竞赛项目的实体设备编程。此外,还有基于Python、C++等高级编程语言的计算机编程教学,但该类实践相对较少。笔者认为,小学阶段C++编程实践教学较少的重要原因在于C++语言学习周期略长,小学生可能无法在短期内获得显见的成就,而语法结构和认知难度等因素并不是主要的阻碍因素。

(一)C++语言更适合初学者

C++语言涵盖了几乎所有编程语言的基础概念,从数据类型到语法,从循环逻辑到面向对象,所有概念都表达得非常清晰,这对初学者而言是非常重要的。同时,C++语言的标准库相对较少,初学者不仅可以学习如何使用工具库,而且可以学习编程语言的本质内容,虽然小学生学习起来有一定的难度,但坚持学习则有利于编程思维的快速提升。

(二) C++语言更适合竞赛

C++在兼容C语言的基础上增加了标准模板库和面向对象两大特性,标准模板库为程序开发提供了非常好用的工具,在竞赛中使用C++语言,并不需要选手完全掌握C++语言的全部知识,同时也不涉及一些较难的内容。全国青少年信息学奥林匹克竞赛(简称信息学奥赛)作为高中阶段五大学科竞赛之一,其奖项含金量和在各高校中的认可度都很高。该项竞赛由中国计算机学会(CCF)主办,并规定自2022年起将C++程序语言作为全国青少年信息学奥林匹克竞赛唯一编程语言。为此,小学阶段开始学习C++编程也可以帮助有意愿参加信息学奥赛的学生打牢基础,做好铺垫。

三、课程内容及教学策略

(一)C++编程课程内容

笔者开展的C++编程教学内容主要参考了潘洪波编著的《小学生C++趣味编程》、林从厚编著的《课课通(C++)》两本书。其中,《小学生C++趣味编程》一书,其课程内容设计以程序为中心、以概念理解和常见算法掌握为重点,每节课都由一个实际任务需求引出,通过该实例程序展示所教授的新的语法或算法知识点。

课程设计以“程序”为主干,语法内容按照“用到讲到”编排,即由示例程序带出必要的概念和知识点,主动舍弃和回避超越小学生能力范围的繁枝细叶,注重基础,力争让普通小学生都能听懂、掌握,体验到成功的喜悦。

(二)C++编程教学策略

1.注重提升课内教学效果。C++编程教学不同于语数外等学科教学,是由于大部分家长不能进行课后辅导,因此,课堂学习是学生掌握知识的主要途径。在 “双减”政策背景下,为不加重学生学习负担,笔者在开展C++编程教学时坚持课前充分组织教学内容、课上精讲精练、课后不布置作业及安排自学,即教学的重点在于教师的课前准备和课上的高效教学(见下图)。

上图中,学习任务单的作用在于帮助学生课上快速梳理概念知识和巩固练习语法、算法,同时节省大量学生做课上笔记的时间,提高课堂教学效率。此外,每节课的学习任务单主要包括基础概念填空、阅读程序写结果、程序完善和自主编写程序四项内容,其难度适中,是最适宜的学习支架。例如,在讲解选择结构if语句一节课时,首先教师通过“输入一个200以内的整数作为IQ值,判断是不是天才”的案例程序导入新课,引出并讲解关系表达式和关系运算符的概念;其次学生填写学习任务单,完成“像60(n>=60)、n%2==0这样的表达式;最后教师讲解if语句的基本格式和用法,进行阅读程序写结果、完善程序、上机实地测试程序等练习。

2.注重结合数学学科知识。计算机编程是数学逻辑在机器上的最终实现,人工智能是数学知识的高阶运用。小学生高年级学生已经掌握了一定的数学基础知识,学习C++编程应该尽量与这些数学问题相结合,让学生感受到计算机程序能够解决很多数学实际问题。例如,“闰年的判断”是人教版小学数学三年级下册第六单元“年月日”一课的拓展内容。在小学三年级数学教学中,教师一般对闰年的计算方法总结为:“普通的年份要能被4整除,如果是整百的年份要能被400整除”。我们将此内容作为if嵌套语句中的练习题,让学生快速将数学中的判断方法与if嵌套相结合编写程序,理解掌握语句的使用。在讲解“逻辑变量和逻辑运算符”一节课时,教师会再次将此数学问题提出,让学生使用逻辑运算符对程序进行改写,即x%400==0||x%4==0&&x%100!=0。对比两个程序,学生会很容易发现使用逻辑运算符同时对多个条件进行判断能够大大简化程序。可见,程序编写的方法具有很强的多样性和开放性。

3.注重激发学生学习兴趣。20世纪伟大的物理学家爱因斯坦曾经说过:“兴趣是最好的老师”。在小学阶段开展C++编程教学能否取得实效,兴趣则起着决定性作用。在教学实践中我们发现,大部分C++编程社团中的活跃分子不仅痴迷于电脑游戏,而且还有很强的模仿和自主学习能力。为进一步激发学生的学习兴趣和探究欲望,我们在第二单元顺序结构中多次以实现用户登录判断为实例进行教学,从能够判断输入纯数字密码到能够判断输入符合网络安全要求的“字母+数字+特殊符号”字符串密码,使同学们对C++中“常变量”的概念理解更深刻、使用更熟練。

四、教学反思和启示

通过近一年的C++编程教学实践,我们切身感受到社团内的大部分学生能够在轻松愉悦的学习过程中理解和掌握C++语言的简单语法和常用基础算法,以程序为中心、以高效课内教学为保障的教学实践取得了很大成功。同时,课堂实践也反馈出一些问题,比如:课程内容还需要进一步精炼和完善,需要提供更多的课程资源;部分学生在遇到相对抽象的概念以及略为复杂的语法算法时,情绪急躁,缺少探究问题、解决问题的内驱力和自信心;由于教师缺少小学C++编程教学经验,对部分知识的处理过于简单,没有真正落实到培养小学生编程思维、计算思维的目标上。因此,任何教学活动都需要在不断实践和反思中得到提升,小学C++编程教学实践也给我们带来很多启示和思考空间。

(一)做好教学内容储备

目前针对小学生的C++编程教材还很少,学校开设这方面的课程需要由教师自行编排授课内容。我们发现,通过各种途径收集整理后的教学内容并不系统和完整,容易出现重要知识点遗漏、教学随意性强等情况。笔者认为,小学C++编程教学一定要做好充分的教学内容设计。首先应设计单元教学实例,即通过整个单元教学初步完成一个比较完整的实例程序,体现程序设计的模块化思想。其次要精选课上练习题目。虽然上机调试程序是必须要安排的环节,但为了提高课上效率,可以适当在学习任务单上再多设计一些“阅读程序写结果”和“完善程序”习题,其中,容易出错的题目可以到Dev-C++软件中进行验证。

(二)重视学员遴选

报名参加C++编程社团的学生很多,虽然大部分学生之前都学习过类似于scratch的图形化编程,但C++和scratch的学习难度存在一定梯次,很多学生轻视了两者的学习差异;部分学生的逻辑思维理解力还不能满足学习的要求;有些学生并不是真正对计算机编程感兴趣,而是仅仅前来感受社团学习的氛围。为此,若以社团形式进行C++编程教学,就一定要重视学员遴选。在开班前可以通过多种形式的测试进行选拔,除考察学员的逻辑思维能力和数学思维能力外,还要有一定的程序代码录入能力。

(三)以培养学生计算思维为最终目标

由教育部基础教育课程教材专家工作委员会普通高中课程标准修订组制定的2017版《普通高中信息技术课程标准》,提出将“计算思维”作为信息技术学科四大核心素养之一。计算思维的实践可以帮助学生养成持续学习、尝试多角度解决复杂问题,甚至提出新问题的能力。计算思维是个体运用计算机科学领域的思维方法和在形成问题解决方案的过程中产生的一系列思维活动。自2006年周以真教授提出计算思维的概念后,人们在教育领域对它进行了长期探索,其中谷歌提炼出来的计算思维四个核心要素具有较强的代表性。

通过实践我们发现,在C++编程教学中培养学生计算思维是一个非常理想的途径。例如,在讲解“编写程序计算1+2+3+4+5……+n的和”的问题时,可按照计算思维四个核心要素提供的方法引导学生进行思考。首先将问题分解为用户输入n的值、计算数列的和及计算输出结果三个部分,再引导学生观察数据,从中找出相同的模式、趋势和规律。该数列为一个等差数列,假设n为10,我们会发现1+10=11,2+9=11等等,这样就可以得到5个11, 那么结果为11×5=55。1+10=11,2+9=11等就是一种模式和规律。根据上面的模式识别,我们可以发现此问题即求一个等差数列n项之和的问题,求和公式为或。解决此问题的程序算法有两个,由于求和公式已知,可以使用C++中的算数表达式表示该公式进行计算,输出计算结果。但在计算机程序中我们更习惯于使用for循环结构来解决这个问题,循环条件为i<=n,最后输出计算结果。显而易见,整个问题的解决都是在计算思维框架下完成的,计算思维有助于将复杂问题模块化,以及发现或者洞察出隐藏在事物背后的联系。

五、结束语

小学生学习编程并不完全是为了将来成为程序员,而是在学习中开发智力、培养创造力,学会运用计算思维解决问题,因此,学会编程就等于拥有了一笔巨大的财富。虽然C++语言对于小学生来说其语法概念和算法逻辑有一定难度,但实践证明只要课程内容难度编排适度、教学方法灵活得当,学生就能够在愉悦的氛围中实现探究学习。在小学阶段开设C++编程课程将是培养学生编程思维和计算思维的全新途径。

参考文献:

[1]孙媛媛.移动终端支持下的家校互动平台设计研究[D].烟台:鲁东大学,2019.

[2]潘洪波.学会编程 开始思考世界上的一切过程——小学生《C++趣味编程》校本教材开发研究[J].中小学信息技术教育,2017,(09).

猜你喜欢

计算思维语言
语言是刀
让语言描写摇曳多姿
多向度交往对语言磨蚀的补正之道
累积动态分析下的同声传译语言压缩
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养