艾鸿 刘跃军
摘 要:C语言程序设计是高等院校非计算机专业的一门必修基础课程,文章针对教学过程中出现的问题进行讨论和分析,对教学方法、思维培养、实践教学、考核方式等方面提出建议和思考。
关键词:非计算机专业;C语言程序设计;教学探索
一、 引言
C语言凭借功能丰富、应用广泛、可移植性好的特点,成为非计算机专业学生的首选入门的编程课程。该课程目的是使学生掌握程序设计的基本方法并逐步形成正确的程序设计思想。但相对专业学生扎实的知识基础和较长的课时安排,非计算机专业教学安排存在课时比计算机专业的少,任务重,在教学实践中产生教与学的冲突。
二、 C语言程序设计教学存在的问题
(一) 课程知识点多且零散
C语言语法知识点多,内容分散、理论性强。学生能够编写出正确的程序,需要对语法知识进行全面的掌握,并具有流畅的思路。但教学中,按照教材顺序逐章节讲解教学模式,导致学生多关注细节而忽略的程序设计的本质,最终影响教学效果。
(二) 实践教学环节薄弱
C语言具有较强的实践性,由于课时的局限,非计算机专业学生缺少充足的设计型和创新型实验,使综合性实验很难和实际问题紧密结合,学生无法将所学的知识应用到实际中去,导致学生失去学习的兴趣,创新能力和学以致用的综合能力的受到限制。
(三) 学生基础差异大,缺乏深入思考
由于高校各个专业学生的知识背景不同,在理解及应用计算机编程知识方面存在较大的差异。部分学生只会验证教材例题正确性,做不到对问题深入思考,举一反三。对编程思想理解不透,而C语言编程需要非常强的逻辑思维能力,随着学习的深入,学习难度增强,导致在其他专业课、课程设计、毕业设计要用到时无法独立编程。
(四) 学生重视度较低,学习兴趣不高
部分非计算机专业的学生认为,C语言程序设计是计算机公共基础课与他们所学的专业无关,学习积极性不高,重视度不够,缺乏学习兴趣。还有部分爱好计算机的学生感觉C语言程序设计编程直观性没有Java、C++、C#等相关程序设计语言好,学习过程需要识记的内容多,无法产生学习兴趣。
三、 教学探索与实践
(一) 培养程序思维
C语言的教学目的是让学生掌握高级语言的编程的基本概念,建立计算思维,在面对实际问题是学会利用逻辑思维解决问题。计算思维的本质来源于对工程建设和数学科学的理性思考,语言编程问题并不单纯归结于模型的思考过程,应以人脑思维为逻辑起点,抽象出计算思维,上升为C语言程序设计思维。C语言程序设计中的思维主要体现在抽象和自动化。
抽象包括使用函数、常量、变量、数组、链表等元素表达实际问题中的系统、功能等特征。自动化表现为通过设计函数功能实现函数的自动跳转和调用,最终实现系统功能。
因此教学中依据C语言的抽象和自动化的特点进行教学,淡化语法上的细节部分,按照“人脑思维—计算思维—C语言程序设计思维”的顺序完成例题演示、习题讲解,努力将计算思维融入C语言建构中,使学生的思维能力得到锻炼。
(二) 改进教学模式
C语言教材一般在章节安排上先介绍数据类型、表达式、运算符后开始程序编写。若按部就班地进行教学内容的讲解,教学效果较差。因此在教学中微调教学安排,调整部分章节的顺序,部分基础内容开始讲解时做了取舍。
如对基本的数据类型中整型和浮点型、输入输出格式“%d”,“%f”以及算术运算和赋值语句进行介绍后,就进行可以简单计算器的程序编写,不必要对大量数据类型、表达式以及运算符进行讲解,让学生尝试程序编写、编译和调试,让学生先建立学习的信心和成就感。在后续的章节中再慢慢地渗透其他内容。
针对学生一听就懂,一编就乱这一现象,提出验证—修改—创新的实践教学方式。
验证主要是检验教材或老师给的程序结果。在这个看似简单的过程可能存在符号输入错误、保留字拼写错误、0误以为o、变量没有定义或变量重复定义,缺少语句结束符分号等。通过这个过程使学生可以总结问题,快速地找到程序中出现的语法错误、连接错误和功能错误。
修改是经过验证性的编写程序后,根据要求对程序进行适当的修改,观察输出结果的变化,并将修改后的程序与原来的程序进行比较,鼓励学生分析修改部分对运行结果的影响。
创新是解决实际问题实现新功能。将实际问题抽象-提取特征-设计程序,是学生综合能力的培養。
例如:循环结构累和内容采用求1+2+…+100和的例题讲解要求学生验证程序;扩展1+2+…+n的和与1*2*…10!阶乘的积求解要求学生考虑修改的内容并与原来程序对比找出区别与联系;拓展训练求1+2!+…+n!学生通过例题—扩展—拓展训练理解这部分内容,就能更好的应用和创新。
(三) 合理的考核方式
考核是对学生的学习情况进行检测的重要过程。在C语言程序设计教学过程中,对传统的考核方式进行改变和创新,突出学生的实践能力的考核,不断提高学生的实践能力的水平。教学过程中并非依靠最后的期末考试来确定学生的成绩,而是将课程的考核贯穿整个学期。
考核采用总成绩=期末成绩40%+阶段考试成绩20%+综合实验成绩20%+平时成绩20%;期末考试、阶段考试均采取机考的方式实施教考分离,考核能较客观地反映出学生的综合能力,促进学生学习的主动性;平时成绩由课堂表现、实验成绩组成。总成绩中实践环节所占比重较大,在一定程度上提高教师和学生对实践的重视。
(四) 开展编程竞赛
竞赛对学生设计能力、实践能力、心理素质都有较高的要求。竞赛不但全面考核学生综合能力而且能够锻炼学生的实际动手能力,使学生真正能利用C语言完成程序设计,解决实际问题。
在教学过程中引入竞赛的趣味程序,让学生对竞赛有所了解,鼓励学生多参加学校开展各种计算机竞赛,同时鼓励学生参加全国性程序大赛,比如:蓝桥杯、天梯赛等。以竞赛调动学生的学习热情,使学生勇于思考,敢于创新,提高学生学习的内动力。指导的学生参加竞赛取得成绩后,学生在后续的课程和创新项目中保持良好的学习动力和专业素养,为学生学业规划和职业规划夯实基础。
四、 结语
C语言程序设计的教学不仅培养学生分析问题、解决问题、编写程序的能力,而且使学生掌握程序设计的方法。结合2015-2018年期间具体教学实践表明,适量的减少理论课讲授,加大实践环节的力度,完善考核方式的举措比较符合当前非计算机专业学生实际情况,具有较好的可操作性,收到较好的教学效果。
其中参加蓝桥杯的非计算机专业学生通过课程的学习打下基础,经过集训取得很好的成绩,有些学生甚至考研转到计算机方向。可见学生在学习过程中通过调动学习的积极性,提高学习兴趣,提升编程能力,培养程序设计的思维的重要性。在未来的教学中,还需不断地改进教学方法,真正做到以学生为主,以学为主;使C语言和学生的专业更加紧密地结合起来,使学生学有所用,为后续的学习奠定良好的基础。
参考文献:
[1]徐宝文,李志译.(美)Brian W. Kernighan/(美)Dennis M. Ritchie. C程序设计语言第2版[M].北京:机械工业出版社,2004.
[2]谭浩强.C程序设计第4版[M].北京:清华大学出版社,2010.
[3]徐新爱.基于学科竞赛的《C语言程序设计》课程教学改革研究[J].西南师范大学学报(自然科学版),2015,40(9):224-228.
作者简介:艾鸿,上海市,上海海洋大学信息学院;
刘跃军,上海市,上海大学计算机工程与科学学院。