摘 要 本文从培养学生程序设计能力的角度,在C语言程序设计课程的教学改革方面,包括对教学内容的组织、教学方法的改进等进行了分析和探讨,结合笔者的实际教学经验和软件工程的专业规范对该课程的教学提出了一些想法和建议。
关键词 C语言 课程教学 改革
中图分类号:G424 文献标识码:A
程序设计能力是计算机及相关专业学生的核心能力,C语言程序设计是重要的专业基础课,很多学校都将其列为第一门程序设计课程。由于程序设计本身所具有的较强逻辑性和创造性,再加上C语言所具备的强大功能和灵活表达形式,对于刚入门的学生来讲确实存在较大难度。为提升教学效果,突出培养学生程序设计能力的目标,我们从以下几方面进行了探索和尝试:
1 提高学生的学习兴趣
程序设计本身充满了创造性,只要精心组织好教学活动就能调动学生的学习兴趣。多年来我们在教学实践活动中积累了大量相关素材,例如:个人所得税、升级/留级、促销活动、数值计算、加密/解密、推理问题、猜数游戏、九连环、扑克牌游戏、集合、分数、通讯录等。将这些素材编成兼具实用性和趣味性的习题和例题,使学生在学习过程中体验创造带来的快乐和“成就感”,坚定学好课程的信心。“知之者不如好之者,好之者不如乐之者。”如果能使学生以编程为乐,课程的教学已经成功了一半。
2 重新组织教学内容,循序渐进、由浅入深
国内传统教材大多根据语法要素来划分章节,按部就班地讲解各个语法知识。虽然从语法角度来看很有条理,但不符合人的认知规律。学生们一开始就被各种语法概念压倒,产生畏难情绪。而国外一些优秀教材虽然从语法角度来看显得比较零散,但它能让学生一开始就动手编程,然后在学习和使用的过程中逐步把各个语法细节搞清楚,非常符合人的认知规律。我们在紧扣教学大纲的基础上对原有教学内容进行了重新组织,使相关内容有条不紊、循序渐进、由浅入深地展开。
2.1 以函数为核心组织教学内容,由易到难、由简单到复杂
函数是C语言的核心内容。传统教材多将函数安排在后半部分讲解,内容既多且难,学生未能得到足够的训练,还有一些内容只有简单介绍,并无对应的例题和习题。整本教材中绝大多数的示例程序都只有一个主函数,导致学生往往也只写一个主函数,没能很好地掌握模块化编程的方法。经过认真分析和研究,我们对教学内容进行了重新组织,调整了先后次序,将函数作为贯穿教学全过程的主要线索,并围绕这个线索来组织教学材料,由简单到复杂,由低级到高级:从最简单的数学计算函数(使用C的运算符和库函数),到具有分析判断能力的函数(使用选择语句),到能完成大量计算任务的函数(使用循环语句),再到能通过指针操作变量、数组和结构的函数,……,函数的处理能力越来越强。
(1)在起步阶段借助C语言库中的数学函数来做类比,让学生模仿示例程序编写简单函数,完成计算或操作任务。通过这些练习使学生对函数有一个初步的感性认识。(2)在讲解选择语句和循环语句时,让学生开始学习编写功能较为复杂的函数,从中体会函数的独立性和重复利用价值。(3)在讲解模块化程序设计方法时,使学生初步学会将较大的程序划分成多个较小的功能模块,逐步掌握以函数为单位编写程序的方法。(4)在讲解变量的作用域和存储类别时,介绍多文件大型程序的组织方法,使学生对软件项目有一个宏观全局的认识,然后深入了解函数与变量间的关系、各种变量的适用场合和利弊等,由感性认识逐渐上升为理性认识。(5)在讲解指针、数组和结构时,介绍利用指针跨出函数的范围访问其他函数中的变量、数组和结构以完成特定的功能的方法,使学生对函数和指针的作用和意义有了更深刻的认识。(6)在讲解预处理命令时,介绍头文件的使用方法,使函数的使用范围从最初的一个文件扩展到整个程序的所有文件。
这样,学生自始至终都在进行函数的训练,教学大纲所规定的教学重点真正落到了实处,使学生深刻理解并掌握了结构化和模块化程序设计的方法,能编写规模较大的程序。
2.2 突出重点、分散难点
C语言的教学重点包括函数、指针、数组和结构等内容,其中指针可算是C语言的精髓,也是最难掌握的内容。传统教材大多先讲数组、后讲函数、再后集中讲指针,结果讲数组时无法使用与其关系最密切的指针,也无法编写函数对数组完成特定的操作,导致相关教学内容的脱节。等到后面集中讲指针时,教学难点高度集中。为此,我们对这部分教学内容的先后顺序进行了调整,根据指针的主要用途分三次讲解,并组织相关的教学材料。
(1)在讲解函数时首次讲指针,介绍指针的基本用法,使学生掌握通过函数参数中的指针操控主调函数中的变量的方法。(2)在讲解数组时第二次讲指针,介绍通过指针访问数组元素的方法,使学生掌握通过函数参数中的指针对主调函数中的数组进行操作的方法。(3)在讲解结构时第三次讲指针,介绍通过指针访问结构变量及其成员的方法,使学生掌握通过函数参数中的指针对主调函数中的结构变量进行操作的方法,最后再引入难度较大的链表。
这样,不仅厘清了相关知识之间的关系,还使学生对指针有了更充分的练习,能更自如地运用指针完成各种特殊功能。
2.3 进阶式学习、螺旋式上升
C语言程序设计课程不能仅仅停留于讲解C的语法。作为第一门程序设计课程,它的一个重要任务是使学生学习计算机的基本算法。拿下棋做比方,学生不仅要了解每种棋子的走法——语法,更要掌握下棋的基本套路——算法。虽然本课程只是程序设计的入门课程,但仍要让学生掌握最基本的算法。
传统教材按语法来组织,类似语法手册:先讲语句(包括循环语句)、后讲函数(包括递归函数)。但我们在实际教学过程中发现,一旦学生形成了循环的思维方式,再讲递归函数就变得非常困难,学生经常在递归函数中写下不恰当的循环语句。
我们对教学内容调整以后,先讲函数、后讲语句,尝试着在选择语句之后就引入递归算法,这时学生就比较容易接受递归的思想。在循环语句之后引入穷举和迭代等算法。在讲数组时分别用循环和递归两种方法编写函数对数组进行操作,使学生能更熟练地掌握好这两种基本方法。
通过这种进阶式的学习方式,把语法知识融入到编程实践活动之中,相关知识前后呼应、螺旋式上升,使教学效果得到较大改善。
3 综合运用现代化多媒体教学手段
目前多媒体课件已经得到了广泛的应用,其最大的优点是信息量大——教师可以在较短的时间内把更多的信息传达给学生,其次是便于传播,也方便学生课后复习。但不足之处也非常明显,有些多媒体课件制作简陋,教学内容整页整页地显示出来,无法展现思维的过程;如果教师上课就照着PPT念,教学效果则会大打折扣。
为此,我们精心制作了大量多媒体教学课件,分步骤展示编程解题的思维过程。对教学中的重、难点内容还利用图形、动画等手段将有关内容以更直观易懂的形式展示出来。例如:在讲解二进制整数编码时,制作了一个虚拟的二进制“电度表”,形象地展示了机器自动取模的过程,帮助学生理解原码、反码和补码的原理。再如:讲解排序算法时,通过动画演示排序的过程,非常直观地展示了各种算法的思想及其耗费的时间,各种算法的性能一目了然。
此外,我们还充分利用多媒体设备在课堂上现场演示编写程序的过程,让学生更真切地了解开发工具的使用方法、程序的开发和调试过程,以及具体问题的解决方法。
4 重视实践环节,提升学生的专业技能
实践教学是课程教学的重要环节,用以培养学生的实际动手能力和独立解决问题的能力。在实验课上,重点介绍程序的跟踪、调试方法,引导学生通过跟踪观察、设置断点等方法来分析、判断错误的原因并最终改正。
课后习题以编程题为主,全部要求利用课余时间上机完成。除编程题以外,还有一些习题是特意安置的“陷阱”,让学生在感到惊诧、意外之后能深入探究其中的原因,从中掌握更多的相关知识,避免日后犯类似的错误。
5 结合企业实际,引入工程化方法,使学生接受更规范的训练
部分教材过分看重语法的某些细节,甚至陷入到个别的编译工具中,脱离了C语言的标准,也脱离了软件开发的实际。一些示例代码使用了过时的、非主流的写法或用法,程序的格式不规范,有的做法不符合软件工程的规范。为避免误导学生,我们严格以ANSI / ISO C为标准进行授课,并借鉴了国内知名IT企业所使用的编程规范,要求学生严格按规范的格式书写程序,同时引入工程化的方法,介绍多文件大程序的组织方法、头文件的正确用法,并指出一些不好的写法或用法所带来的不良后果,帮助学生养成良好的编程习惯,形成良好的编程风格。
6 以学科竞赛、项目开发等实践活动带动专业学习
多年来,我们连续在校内举办程序设计竞赛活动,并组织学生参加全省和全国的程序设计竞赛活动,此外还通过学生社团引导学生进行小型软件项目的开发实践活动,极大地激发了学生的学习热情,促进了学生对专业知识和专业技能的学习,为学生后续课程的学习打下良好的基础。
以上这些措施,都是着眼于C语言程序设计课程教学内容的内在联系和人的认知规律,着眼于社会对软件工程人才的迫切需求,着眼于培养学生的编程能力所作的试验和思考,虽然取得了一些效果,但还有一些相关工作需要跟进,并进一步提高。在此,也想与各位同仁共同商讨改进课程教学的方法。
参考文献
[1] 邢军,王文娟.C语言教学改革探讨[J].黑龙江科技信息,2012(30):192.
[2] 吴胜乾.试论C语言程序设计的教学改革[J].知识经济,2013(9):172.
[3] 张晓.C语言课程项目化教学设计与实施[J].电脑编程技巧与维护,2013(8):133,144.
[4] [美]Stephen Prata. C Primer Plus[M].北京:人民邮电出版社,2005.
[5] [美]Jesse Liberty. 21天学通C++[M].北京:人民邮电出版社,2003.
扩展阅读文章
推荐阅读文章
77范文网 https://www.hanjia777.com
Copyright © 2015-2024 . 77范文网 版权所有
Powered by 77范文网 © All Rights Reserved. 备案号:粤ICP备15071480号-27