彭 莉
(武汉工程职业技术学院 湖北 武汉:430080)
《C语言程序设计》是许多院校计算机应用、计算机网络专业和应用电子、电子信息、电气自动化等非计算机专业开设的一门公共专业基础课,也是全国计算机等级考试(二级)的重要考试内容。由于一般针对计算机基础知识参差不齐的工科大一新生开设,该课程的教学过多强调C语言的语法、词法等理论知识,在编程方法、动手实践等方面偏弱。很多学生反映在课堂上听得懂,但在实际编程时却无从下手,既达不到该课程的教学目标要求,也难以通过全国计算机等级考试。
(1)学生计算机基础参差不齐。大一新生来自全国各地,由于各地区经济发展水平的程度不同,部分地区高中阶段已经开始了计算机教学,而有的地区却是零接触,从而造成学生计算机基础水平差异较大,很难因材施教。基础好的学生觉得教学进度较慢,而基础差的学生则感觉跟不上,学习困难,久而久之,产生畏难情绪,甚至放弃。
(2)语法规则多,学习枯燥。该课程理论性强,知识点零散,语法规则繁多,在学习的过程中有些规则需要记忆。而学生刚从高中走进大学,对社团活动、校园生活充满了好奇,课下花在学习上的时间较少,课堂所学知识得不到消化,大部分同学感觉C语言学习较难。
(3)动手实践机会少。该课程一般开设在第一学期,大部分学生刚进大学,并没有购置电脑,想学好编程,仅仅依靠平时课堂的上机实践时间是远远不够的。
对原有偏重理论学习的教学大纲进行修改,侧重实践动手能力的培养。新的大纲教学目标如下:通过本课程的学习,使学生初步掌握C语言程序设计的基本知识、语法规则、程序的基本结构、程序设计的基本思想、简单算法,能够使用C语言进行程序设计并且在C语言环境下编辑、调试程序的能力。
所谓模块化是指在解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。计算机及非计算机专业的教学目标不同,可有针对性的分层次模块化教学。重新整合教学内容,将课程内容分解为若干个学习模块,如表1所示。
将整个C语言教学内容分为三个模块:基础篇、提高篇和综合应用。不同专业选择不同的模块学习,例如对于非计算机专业可以选择模块一基础篇进行学习,对于计算机相关专业可以选择学习模块一和模块二,综合应用模块三可以要求所有专业进行实践。
表1 学习模块表
任务驱动教学法将所要学习的新知识隐含在一项或几项任务中,让学生通过对任务的分析、讨论,明确涉及的知识。选取的任务以教学大纲为依据,既要包含基本的教学知识点,又要考虑学生的实际学习基础。另外,任务可大可小,平时的教学中采用小任务,小任务中涵盖大纲中的各知识点,学期末可以布置大的任务,例如可要求学生在期末完成一个综合项目—学生成绩管理系统的实现,采用小组分工合作的方式,教师适当指导,培养学生的创新思维能力和解决问题的能力。
具体由教师先设计好任务,课程上创设情景引出任务,接着学生完成任务,教师在此过程中进行辅导和帮助,最后进行知识的总结。下面以单分支选择结构为例,整个教学的实施过程如下:
(1)创设情境,导出任务。为什么要用选择结构?生活中,如果明天天气好,我们就去郊游;如果考试不及格,要补考;这样的问题如何解决?引出本节课学习内容,即在C语言中可以使用if语句。
(2)任务1:比较两个数的大小,按照从小到大的顺序输出。学生经过分析,两个数比较大小必须借助第三个变量。主要代码如下:
if(a>b)
{
t=a;
a=b;
b=t;
}
(3)任务2:比较三个数的大小,要求按照从小到大的顺序输出。学生经过分析讨论得出三个数比较大小需要比较三次:if a>b,将a和b交换;if a>c,将a和c交换;if b>c,将b和c交换;主要代码如下:
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
(4)任务3:完成任务1和任务2后,让同学们思考,若三个数要求按照从大到小的顺序输出,上述程序如何改动?通过任务由易到难,循序渐进,一步一步拓展学生的思维,让他们能够独立思考解决问题。
(5)知识总结。由以上三个小任务,总结单分支结构的语法及编写程序时的注意事项,并引出下一个知识点双分支结构的学习。
开发一部适用于高职院校的教材,综合考虑高职学生的特点及学习基础,多选用一些与实际生活接近的案例,激发学生的求知欲,让学生融入到有意义的任务完成过程中,有目标的自主学习,从而实现将理论与实践相结合,达到学以致用的目的。目前该教材已正式出版,书名《C语言程序设计教程》,如图1所示。
图1 C语言教材
该书以Visual C++ 6.0为开发环境,章节介绍由浅入深、循序渐进,案例实用性强、程序分析详细并配有注释,方便快速掌握编程技巧。全书分为十一章,全面介绍了C语言概述,数据类型、运算符和表达式,顺序结构程序设计,选择结构程序设计,循环结构程序设计,数组,函数,指针,结构体、共用体和枚举类型,文件,综合项目—学生成绩管理系统的实现等。每个章节都安排有课后习题,其中附有全国计算机等级考试C语言的部分真题,以强化技能取证能力。最后通过实际开发一个完整的项目,融会贯通各章节知识点,检验和提高读者解决实际问题的能力。
打破传统卷面考试,如与全国计算机等级取证相结合,对于通过全国计算机二级C考试的同学可以该课程免考或学期末完成综合课程设计,自己动手开发一个小型的应用系统等方式,既可以让学生掌握程序设计的基本知识,又能够取得相应的等级考试证书,培养良好的职业素养及为将来就业打好基础。
实践证明,在实际教改中,效果良好。经过以上改革措施,学生的编程能力得到了明显的提升,大部分同学能够自己动手开发一些小程序,有些同学甚至对C编程表现了明显的兴趣,下课时间经常追着老师提问,这是在以往教学中很少遇到的。如何提高公共C语言课程的教学效果将在以后进一步深入研究和探索。
[1]刘华东.C语言程序设计课程教学改革与实践[J].软件导刊·教育技术,2017,16(1):12-13.
[2]胡秋霞,田杰.基于翻转课堂的“C语言程序设计”混合式教学方法探究[J].信息记录材料,2017,18(3):109-111.
[3]彭莉.基于C语言的学生信息管理系统的实现[J].武汉工程职业技术学院学报,2017,(4):100-102.
[4]刘秀丽.非计算机专业《C语言程序设计》课程教学的分析与研究[J].信息系统工程,2017,(4):170.
[5]祝种谷.项目化教学在高职《C语言程序设计》课程中的应用[J].科技信息,2013,(11):289.