课程建设《C++程序设计》课程的改革与实践朱红袁柯璟渊南京理工大学电子工程与光电技术学院袁江苏南京210014冤*摘要:叶C++程序设计曳是培养学生编程能力尧计算思维能力的重要课程袁具有知识点丰富尧实践性强尧课时有限等特点遥文章针对目前大学教学的实际情况袁提出了翻转课堂与课堂教学相结合的教学模式袁提升了教学质量和教学效果曰同时结合已有的校园网平台袁设计并实现了动画演示的C++算法资源库袁提高了学生的学习兴趣袁降低了学习难度遥关键词:翻转课堂曰微视频曰资源库中图分类号:G434文献标志码:B文章编号院1673-8454渊2018冤18-0050-03堂的出现为教学改革提供了一个很好的途径遥在翻转课堂上所涉及的内容大多是概念性的或演示性的袁而大量涉及复杂算法尧逻辑思维等的概念和程序还需要在课堂上进行讲解遥微视频是翻转课堂一种重要的学习资源袁微视频资源的质量影响着学生的学习兴趣与学习效果袁决定着翻转课堂的教学效果[4]遥焦建利教授[5]认为袁教学中的微视表现形式袁以学习或教学应用为目的遥因此袁我们在叶C++程序设计曳课程的微视频制作中袁以知识性尧趣味性为目标袁对课程的知识点按章节进行分类袁基本上每个附带的语法格式尧数据存储形式等袁而具体的程序运行过程则在课堂上讲解遥以野函数冶这章为例袁微视频主要介绍函数的概念和类型及各种类型函数的语法形式袁用时8分钟袁表1列举了前4个分镜头的处理脚本遥通过观看微视频袁学生已经了解了函数的概念尧函数的类型尧函数的调用格式和定义格式袁并对与函数定义相关的名词术语院如野函数类型冶野实际参数冶野形式参数冶等都有直观的认识遥这样袁在课堂教学中袁教师先用3分钟时间把微视频的内容概括总结一下袁然后就可以直接开始讲解无参函数尧有参函数程序的运行过程等内容遥为了更好地展示程序的运行过程袁提高学生的学习兴趣袁我们将课件全部采用交互式的Flash动画方法制作袁讲解程序时运行一条语句袁就展示相应的存储器中变量或数据的变化过程袁清晰直观效果很好遥表2是在微视频都在10分钟之内袁讲解1-2个相关的知识点和一、C++教学应适应现代社会的发展计算机程序设计类课程是理工类各个专业的必修课程遥叶C++程序设计曳是大部分专业选择的课程袁因为C++算法语言广泛用于编写各类操作系统尧微处理器控制系统袁同时在图形处理尧神经网络计算等各类算法编程方面具有广泛的应用遥在叶C++程序设计曳的教学中袁由于知识点众多袁尤其是指针和面向对象部分概念抽象袁所以这门课程一直存在课时量少尧课容量大尧教师讲课速度过快等问题曰而学生普遍反映课程内容枯燥袁随堂掌握知识程度低袁语法难懂袁算法难以理解遥随着野互联网+冶时代的到来袁需要教师改变传统的教育教学理念袁利用先进的教学理念和教学设备进行教学方法和模式的改革袁提高学生学习的兴趣袁降低学习的难度[1]遥二、翻转课堂应与课堂教学相结合翻转课堂渊FlippedClassroom冤是近年来全球教育界频以阐释某一知识点为目标袁以短小精悍的在线视频为普遍关注的热点之一[2]遥这种新型的教学模式袁将传统教学模式野课堂上教师主要传授知识袁课后学生温习知识袁进行强化练习与反馈冶翻转为野课外学生自主学习教学尧微视频等学习资源袁完成知识建构袁课堂上学生在教师面对面的指导下做练习或者以小组合作等形式完成对中心的传统教学模式转换成以学生为中心的新的教学有不可替代的积极作用遥随着教学改革的深入袁减少课堂教学袁重视应用实践袁注重学生能力的培养已经是教改的大趋势袁翻转课知识技能的掌握袁进行知识内化冶[3]遥翻转课堂将教师为模式袁充分调动了学生的主观能动性袁在教学活动中具*基金项目院2017年南京理工大学高等教育教学改革研究立项课题野叶VisualC++程序设计曳课程资源库的研究与建设冶渊编号院2017-B-11冤遥50中国教育信息化辕2018.18表1野函数的概念和类型冶4个分镜头脚本镜画面头内容解说词时间(秒)备注教师同学们好浴这节课我们讲授的内容是函面板在教师的左边袁随着教1与动数的概念与类型袁我们从以下两个方面师的解说袁呈现板书院画面展开这个内容院一尧函数的概念曰二尧函20函数的概念和类型板数的类型一尧函数的概念二尧函数的类型函数是程序的一个自包含模块袁是C++的全景动画袁首先是函数的2动画基本组成部分遥可以将一个个函数比喻成定义袁然后由一块块积木演示一块块积木袁通过多个积木的有机组合袁组40动态组成一个人物和房成了一个完整的模型遥同样袁C++程序也是子袁表示程序是由函数组由多个独立的函数有机组成的成的用户调用函数时袁只需要了解函数的全景动画袁用一个箱子表输入个数与类型袁知道函数的功能和输示独立的函数袁箱子盖打出结果的类型袁就可以用具体的数值代开袁数字9由箱子外进入箱3动画入调用函数袁从而取得函数的输出结果遥子内袁箱子盖合上后左右摇演示例如袁这个箱子表示一个计算平方根的50晃两下袁箱子盖打开袁数字3函数袁输入的自变量是9袁通过函数内部从箱子内出现曰数字5也重的运算复这个过程袁表示函数只要5袁输出的值袁输出的值是是2.2363曰输入的自变量是了解输入输出袁就可以进行调用袁独立完成计算可见袁从用户调用的角度而言袁用户只需由于动画画面单调袁所以教师要了解函数自变量的数量和种类袁知道教师出镜袁增加学生的注4与动函数输出值的性质就可以使用这个函数意力袁随着教师解说袁动画画面了袁而不需要知道函数的具体运行过程遥30面板上出现公式板调用函数时袁函数的调用格式与数学中噎噎x院y=f(x1,x2n)函数的表示方法是完全一致的表示函数的调用格式表2野函数的概念和类型冶的课堂教学内容序用时号内容(分)备注1总结函数的概念尧类型尧语法形式3是课前观看微视频部分的总结2无参函数的运行过程3强调无参函数的定义格式和调用形式3带返回值的有参函数的运行过程8详细演示实参向形参传递的存储器情况袁参数的传递顺序袁形参空间的产生与释放袁返回值的含义等4函数调用的注意事项2强调形参尧实参尧函数类型尧返回值尧定义格式等问题5不带返回值的实参为表达式的函数特殊情况袁对上述注意事项的实例解的运行过程5释编写程序院计算两个数的最大公约数和用一个完整的编写程序的过程袁指出6最小公倍数袁步骤院淤演示两个数的最函数在编程中的作用遥演示如何从考大公约数函数的输入输出过程曰于讲解10虑函数的输入输出数据来分析袁一步编程的算法分析曰盂写出程序步地编写函数袁完善程序编7淤写于演程示序判院断求素100数函-200数的间输的入所有素数遥提出问题袁请学生讨论尧思考袁逐步完善程序数请袁编学写生程进序行算法分析袁进而输出编写过程曰函128总结函数概念布置作业2课程建设函数的课堂教学设计中的教学内容部分遥通过观看微视频和一节课的课堂教学袁使学生对函数的知识从概念到种类袁从分析程序到编写程序袁都有一个完整的认识袁形成了一个完善的认知过程遥三、利用网络教学环境建立C++算法资源库课程的资源建设是一个长期积累的过程袁在叶C++程序设计曳的教学改革实践中Flash袁我们依托校园网的平台程作业等各种资源动画课件尧微视频袁具有在网上提交上机尧算法资源库袁建立了包括尧课作业尧答疑讨论等功能遥任何课程的教学活动都是为了提高学生分析问题尧解决问题的能力袁强化学生的实践动手能力袁因此在具体的C++算法语言的教学实践中袁应采用强化算法尧弱化语法的原则袁以算法教学为主袁通过对典型算法的分析讲解袁培养学生的计算思维能力和规范的编程习惯[6]程序设计语言编写的算法与数学遥但是尧物理中袁用的解决问题的方法还是有很大差别的袁需要对计算机的运行尧存储机制有全面的了解袁熟悉基本数据类型尧自定义数据类型在计算机中是如何存储尧赋值的袁熟悉地址尧数据在内存和CPU中的作用等袁而所有这些又都是在计算机内部进行的活动袁学生是无法看见的袁因此算法的讲解和解释具体程序的运行过程一直是程序设计类语言教学中的难点遥针对教学活动中出现的大量的有关算法的问题袁我们归纳总结了C++程序设计中应该掌握的各类算法Flash袁算法袁动画制作的算法资源库建立了一个由用动画详细演示了算法实现的过遥对每一类程尧步骤袁对实现算法的程序也给出了详细的讲解遥每种算法独立成章袁既可以在课堂上进行讲解袁又可以供学生在课前课后反复观看遥由于动画生动形象袁又与程序同步袁详细地描述了程序在计算机及存储器中运行的过程袁因此对学生而言袁有较深刻的印象袁达到了很好的效果遥TheChineseJournalofICTinEducation51课程建设制作算法资源库的第一步要由易而难地筛选出一些典型算法遥在这里袁算法是指广义的计算方法袁即用编程语言解决各类问题的方法遥算法库中的算法主要有以下两类数和最大公倍数渊1冤院常规的经典算法袁起泡法排序遥比如交换两个数据袁牛顿法尧弦截法袁尧最小公约二分法解方程袁渊2冤链表的建立很多在教学过程中总结出来的经验和规律尧输出尧删除尧插入等遥循环就有两种形式袁一种是野穷举法冶袁或称为野海选法遥例如冶袁就是将所有可能的选择列出袁继而用各种条件筛选袁找出符合筛选条件的结果袁例如水仙花数尧鸡兔同笼尧计算三个数的公约数和公倍数等都是利用这种方法野递推法冶袁就是用前一个数去递推后一个数袁曰大部分循环另一种是问题都是利用这种方法求解袁例如计算某个数的阶乘尧求级数等问题遥再例如字符串的操作袁从母串中查找子串袁进而可以统计子串数量尧删除子串尧用另一子串替换子串等袁其算法也是根据大量的经验和规律总结的遥这些算法基本涵盖了叶C++程序设计曳的全部内容袁也是对C++算法语言所涉及到的各种类型问题的细化分类袁有助于学生按图索骥袁模仿练习袁继而总结规律袁培养自己的算法意识和思维遥算法的动画演示是制作算法资源库的重点和难点遥不同的算法解决的问题不一样袁解释算法的侧重点也不一样遥我们根据长期的教学实践经验袁针对不同的算法制作了一系列特点鲜明的动画袁从不同的角度由浅入深诠释算法的本质和内涵袁以期给学生留下鲜明的印象遥在算法的动画制作上袁根据不同的问题袁采取了以下几种方法渊1冤就是用浅显的道理去解释算法的本质比喻法院遥例如袁在野穷举法冶中袁用寻找笔筒中的红色铅笔来演示海选的范围与海选条件之间的关系袁将一只只铅笔从笔筒中弹出袁红色和黑色的铅笔分开存放袁当所有的铅笔都从笔筒中弹出袁才能解决这个问题曰在野递推法冶中袁用一个小猪吃食物长大的例子来描述前一时刻的小猪和吃了食物后的同一小猪的关系袁从而推导出循环体院小猪+食物寅小猪遥通过这些生动有趣的例子袁给学生留下了深刻的印象袁进而帮助他们理解算法的本质渊2冤遥有些算法是利用解析几何的知识得到的解析法袁例如牛顿法尧弦截法尧二分法求解方程袁梯形法尧矩形法求解定积分52中国教育信息化辕2018.18等遥虽然在编程中不用推导具体的算法迭代公式袁但是在讲解算法时袁还是要让学生了解迭代公式的原理和含义袁这样才能记忆深刻尧灵活应用尧举一反三遥因此袁在这些算法的演示中袁以动画的形式袁让铅笔在屏幕上移动袁画出表示算法的几何图形并标出了具体的参数袁经过反复迭代后袁推导出算法迭代公式遥这样演示生动形象袁效果直观明了袁既解释了公式的出处渊3冤袁也给出了具体的迭代程序有些算法可以开门见山实例法遥袁直接用实际例题代入袁通过对这一问题的求解而推广到这一类问题的算法遥例如数组的排序尧筛法求素数尧字符串的操作等遥举例来说袁字符串的操作包括求子串在母串中的位置尧删除子串尧替换子串等渊4冤在链表的建立分析程序法遥尧输出尧删除和插入的操作中袁是通过分析描述程序的运行过程来讲解算法的遥以链表的建立为例袁首先将循环建立结点的语句一一列出袁然后运行一条语句袁接着就演示运行语句后程序的操作过程和结果袁通过一条条语句的动画运行和操作演示袁可以清楚地看到一个一个结点有规律地组织在一起尧形成链表的过程遥四、结束语在叶C++程序设计曳的教学改革过程中袁我们通过翻转课堂与课堂教学相结合的教学模式袁有效地提高了学生课堂学习的效率袁加强了分析和编写程序的能力曰同时袁结合网络教学环境建立的C++算法资源库将叶C++程序设计曳中的各类算法以动画的形式生动形象地演示出来袁应用到C++算法语言的教学过程中袁可以有效地激发学生的学习兴趣袁降低学习难度袁提高学习效率袁对学生的学习起到很好的促进作用遥参考文献:[1]李雪飞,李晶,余琍等.面向对象程序设计类课程实践教学改革[J].计算机教育,2017(7):118-121.[2]何克抗.从野翻转课堂冶的本质,看野翻转课堂冶在我国的未来发展[J].电化教育研究,2014(7):5-16.[3]钟晓流,宋述强,焦丽珍.信息化环境中基于翻转课堂理念的教学设计研究[J].开放教育研究,2013(1):58-64.[4]王觅,贺斌,祝智庭.微视频课程院演变尧定位与应用领域[J].中国电化教育,2013(4):88-94.[5]焦建利.微课与翻转课堂中的学习活动设计[J].中国教育信息化,2014(24):4-6.[6]陈亮.C语言教学如何提高实效性[J].科教导刊,2015(8):101-102.(编辑院李晓萍)