《C++程序设计》课程教学方法研究

2022-09-11

面向对象程序设计方法是现在计算机开发的主要技术, C++语言是一种应用较广的面向对象的程序设计语言, 它提供了类、模板、函数重载和运算符重载设计等功能, 充分支持抽象、继承和多态等面向对象程序设计的特征, 十分方便大型软件的开发[1]。现在C++程序设计是很多高校计算机专业的必修课, 但是由于该课程的抽象性和复杂性, 相对来说就是一门难学难教的课程。因此, 在C++语言的教学过程中, 采用合理的教学方法, 对于提高教学质量至关重要。下面谈谈我的一些经验和体会, 以供大家参考与讨论。

1 目前存在的问题

目前在C++的课程教学过程当中, 主要存在以下几点问题: (1) 学习目的不明确, 积极性不高。C++课程教学的目的是让学生掌握面向对象的程序设计方法, 理解面向对象程序设计的思想, 为后续的计算机课程打下坚实的基础。而经过调查发现, 很多同学都不知道该课程的学习目的, 甚至有些同学只是为了通过最后的考试。 (2) 对面向对象程序设计思想理解困难, 特别是有些学校先开设了C语言程序设计, C语言是采用面向过程的程序设计思想, C++是在C语言的基础上演变而来的, 是对C语言的扩展, C++提供了许多特性, 目的是对C语言进行改进。但更重要的, 它还提供了面向对象编程能力。面向过程和面向对象是两种不同的编程思想, 两者之间有着本质的区别, 很多同学习惯于面向过程的编程思想, 对面向对象的编程思想不能很快掌握。 (3) 实践环节重视不够, 动手能力较弱。C++是培养学生的动手编程能力的课程, 需要安排安排适量的实验课时, 但是很多同学在上课是直接运行书上的程序, 而不深刻思考程序运行的过程, 在遇到问题时, 总是举手问老师, 缺乏独立调试程序的能力。

2 改进方法

2.1 采用启发、引导的教学方法

《C++程序设计》本身是一门非常灵活的课程, 任何问题都没有唯一的答案, 也没有最好的答案。因此, 老师在课堂上可以先给出一种程序解答方法, 然后留出一些时间让学生思考, 还有没有其他更好的程序设计方法和思路, 甚至可以当堂让学生上来现场操作实现, 对于一些比较好的想法和思路, 给予大力表扬, 这样既能鼓励学生积极思考, 又能活跃课堂气氛, 可以收到较好的课堂效果。比如在讲判断一个数n是不是素数的问题时, 我们可以先从最传统、最容易理解的思路入手, 看看n能不能被2到n-1中的任何一个数整除, 接着我们可以在这个地方稍微停顿一下, 让学生思考一下能不能对这个算法做一下改进, 这时, 有的学生可能会提出把除数的范围缩小到2到n/2, 最后再缩小到2到n, 利用这种方法会比老师直接给出用n去除以2到n中数的方法让学生印象更加深刻。这样不仅可以巩固学习成果, 提高解决问题的能力, 也可以丰富课堂内容, 起到教学相长的效果。

2.2 有选择地运用多媒体教学

以前由于教学条件的限制, 教师上课时只能采用传统的黑板教学, 在黑板上面写出程序代码, 说出运行结果, 这样很难让学生对程序运行的过程、函数的调用、参数的传递、变量值的变化认识清楚, 将多媒体教学引入课堂后, 可以在课堂上利用教师机现场演示, 利用VC++的设置断点, 单步跟踪等方法, 一步步演示, 这样学生一看就清楚了。例如在给学生讲数组的时候, 通过下标的方式来访问数组元素, C语言规定, 数组元素的下标是从0到n-1 (n是数组的长度) , 但很多学生在写程序的时候, 往往忽略这一点, 在访问数组元素的时候使用n, 出现下标越界的错误, 这时, 老师便可以在VC的调试环境中, 结合变量的地址或指针的概念, 给学生解释越界出现的原因, 这样才能让学生理解深刻。又例如, 在讲“冒泡”排序算法时, 教师可以用多媒体课件给学生演示排序的经过, 既形象又生动。因此, 在《C++程序设计》课程教学过程中, 将传统的教学方法和现代多媒体教学相结合, 将大大提高学生的综合思维能力, 达到最佳的教学效果。

2.3 强化实验环节

《C++程序设计》是一门实践性很强的课程, 如果只是单纯地在课堂教学, 而没有实验教学, 仍然只是纸上谈兵, 无法真正让学生掌握知识的应用。所以实验环节是整个学习过程中不可缺少的一个重要组成部分。只有让学生动手编写程序, 运行出来结果, 学生才会有成就感, 才会对这门课产生兴趣。但是, 教材上面的题目往往比较注重语法的训练, 而离实际应用较远, 所以, 大部分学生在完成书上题目时比较顺利, 可是一遇到利用C++语言来解决实际问题时, 便束手无策, 无从下手了。这一点可以从大三、大四的学生做课程设计时的被动、吃力体现出来。所以, 为了锻炼学生解决较大型复杂问题的能力, 老师在安排实验课内容时, 可以布置一个大题目作为长期任务, 再按不同功能模块分解开来, 形成一个个短期任务。每次实验课要求学生完成其中一个或几个简单的功能模块, 这样, 每次实验课就好像一条铁链上的一个个铁环, 紧密联系。以“学生信息管理系统”为例, 把这个系统作为一个长期任务, 然后把这个系统划分为若干个小的模块。比如输入输出学生信息、添加学生信息、修改学生信息、查询学生信息等模块。这样, 当学生完成每一个功能模块后, 便发现原来自己实现的是一个复杂的程序。通过这种方法, 一方面可以大大降低学生对大型复杂程序的惧怕心理, 另一方面也可以培养学生结构化程序设计方法的思想。

2.4 综合考核法

目前, 大部分课程最后的考核方式都是通过考试进行的。但是这种方式不适用于《C++程序设计》, 这是由课程本身的特点决定的。一方面, 该课程包含了课内实验, 比如我院在对计算机系的学生开设该课程时, 课时的分配是36+20, 即36学时的理论课和20学时的实验课, 可以看到实验课占了很大的比例, 也应该在最后的考核范围内;另一方面, C语言是一门实践操作性很强的课程, 光通过选择题、填空题不能真正检验出学生的学习水平, 而应该把考核的重点放在程序的编写和调试上。

所以, 建议本课程最后采用综合考核的方式。考试的方式分为笔试和上机考试。理论考试主要考核学生对理论知识的掌握程度, 上机考试则主要考核学生的动手能力。。最后的总评成绩中还应该包含学生的实验课成绩, 以及课堂表现成绩。这种考核方式增加了对学生学习过程的测评, 这种方法不但能更客观地反映学生的学习情况, 同时也能促进学生自主学习, 起到很好的教学效果。

3 结语

以上是作者在近几年的C++课程教学过程中总结出来的几点教学经验, 通过上述方法, 在实际的教学过程中取得了良好的教学效果。

摘要:C++程序设计是学习计算机语言的重要课程, 本文对C++程序设计的教学方法进行了探讨, 在提高学生学习兴趣、加强实验环节、改进考核方式等方面提出了几点意见。

关键词:C++,教学

参考文献

[1] 李春葆.C++面向对象程序设计[M].北京:清华大学出版社, 2008.

上一篇:对轻罪制裁的探讨下一篇:浅析电商物流模式的选择对企业成本的影响