赵晓华 陈 辉
(陕西交通职业技术学院 陕西 西安 710018)
C语言自问世以来,以运算符丰富、语法灵活、程序撰写自由、目标代码执行率高、能针对硬件编程等特点,得到广泛应用。目前国内各大院校多个专业均开设有该课程。开设《C语言》课程是为了帮助掌握程序设计的基本理论、基本知识和基本技能,建立程序设计的思想、熟悉该语言的语法,进而能够熟练使用C语言编写程序解决常见问题,培养学生扎实的软件开发基本技能,养成良好的编程风格,为进一步学习后续课程奠定良好的基础。
程序语言均有规范的符号、严格的语法、严密的逻辑表达。C语言也不例外,学生只有掌握该语言的语法规范,才能使用其编写代码,然后交由计算机运行,从而帮助人们解决问题。在语法的讲授过程中,因其繁杂、难记,导致学生接受困难。
常规的算术运算符与表达式比较容易理解,但关系运算符、逻辑运算符及由这些运算符构成的表达式较难理解,难使用它们表达我们的逻辑需求。
教师教授时,学生还基本能理解,但动手编起程序来,学生不知道如何表达、程序的逻辑关系搞不清楚,自己动手撰写程序非常困难。
C语言课程要求学生的动手能力非常强,学生被动接受的授课模式,失去了主动性和学习兴趣,导致课程授课效果较差。教学案例没有新意。很多C语言教材中的案例以数学问题为主,直接给出了数学模型,学生觉得没有新意,不能较好的理解计算机工作的真正意义,也就没有兴趣参与到案例的分析讨论中来。
C语言知识庞大且复杂,简单的学习并不能使学生掌握其知识体系,上机实践环节非常重要,但是往往因为上机实践内容准备不充分,学生仓促上机编写程序,调试程序频繁出错,又不知道错误原因,这就极大挫伤了学生学习的积极性,实践课的作用大大被削弱了。
C语言的语法多且繁杂,在教学中如果单纯进行语法讲解,学生并不能很好的理解和掌握。那么在授课中设置问题,导入知识点,再以程序方式演示,将语法融入到程序中,通过程序调试,展示结果,带动同学积极参与到课堂授课中来,激发学生的好奇心,从而轻松的接受语法知识。在讲解C语言的三大数据类型时,可以这样设置问题:
要统计班级人数,如何来计数?每个独立的同学为计数单位啊,这个学生肯定熟知,教师引入int数据类型并对int类型数据的语法做进一步的解释,学生容易理解;2.如果要在计算机中表示我们的体重怎么办呢?学生想到小数,教师引入并解释float数据类型;3.我们每个人还有名字,名字信息明显和上述两种数据不同,该怎么办呢?char类型很容易就被学生接受了。
例如在学习printf()函数时,可以这样设置问题:首先、.若想要将结果展示给客户看,你该怎么做?学生思考作答,输出啊;其次.C语言自己没有输出怎么办?学生思考,教师引入printf()函数;第三. printf()并不属于C语言自己,那该怎么使用,轻松带入了命令行知识点;第四.那如果要输入呢?新的问题随之而来了,scanf()又被轻松带入。结合学生具有其他学科的学习基础,设置问题,带着疑问,学生在课堂是活跃的、积极的、主动的、思考着的。繁杂的语法知识轻松的就掌握了。
案例教学法最大的特征就是“学生为主体,教师为主导”。采用案例教学法使学生能积极的参与到课堂教学中来,激发他们的潜能,培养他们思考问题的习惯,从而自主的学习。
C语言课程教学中,程序的三大结构是该门课程的重点。这一部分,尤其是循环部分,程序逻辑复杂、结构紧凑、一个小小的括号位置的改变可使程序的功能截然不同。如何做好这部分的教学,课堂案例的选择很重要,案例的选择要切合实际,让学生从身边的问题着手,调动学生学习的欲望,分析问题,理顺逻辑,然后和同学一起解决问题。例如在学习while循环结构时,选取超市购物结账系统为案例进行分析讲解。要编程完成这个任务,需先解决好如下问题:(1)在结账时,都需要做些什么;(2)如何表示物品的单价;(3)如何统计金额;(3)如何表示购物结束;(5)怎么输出购物应付货款。通过这些问题,程序中用到变量、变量的类型、输出、循环的控制都得以清楚阐述。同学们思考作答,老师补充总结,然后带着同学们现场编写代码,从变量的定义、语法的表达,程序逻辑的代码就水到渠成的来了,最后调试结果。通过这样的方式,学生不再觉得这门语言枯燥难懂,逐步积累知识,从而更好的学习后面的知识。
在上机实践环节中,教师精心准备实验内容,内容与上课讲授的理论知识紧密相关,并提前下发给学生,学生上机之前做认真思考,在上机时已初步具有问题解答的思路和想法,并已写好代码,通过上机调试,发现问题并分析思考,为什么会出错,自己在哪个环节理解有误,通过教师协助,使学生存在的问题得以解决。通过上机调试中错误的反复修改,能够非常好的帮助学生理解语法,捋顺程序的逻辑关系,从而很好的掌握相关的知识。学习计算机语言,一定要勤动手,多写代码,对一个程序反复修改调试,这是学习计算机语言很好的方法。
学习计算机语言,语法是基础,掌握算法是关键,通过大量的程序阅读,能够帮助学生很好的理解语法,掌握使用各种运算符构成的逻辑表达式,程序员就是通过这样逻辑表达式结合一定的逻辑顺序来撰写代码的。在用计算机解决问题之前,用户要非常清楚的知道自己要做什么,先做什么,怎么去做,逐步解决整个问题。程序的逻辑是学习C语言的难点,通过大量的程序阅读,逐步理解算法,建立解题思路,学习语言的表达方式,并将其应用到自己的问题中来。例如判断一个数是否是偶数,用C语言该如何表达,在这个问题中包含两层含义,如何判断偶数;如何表达,判断使用关系运算,表达使用选择结构。阅读量积累到一定程度,编程的逻辑思维慢慢也就形成了,很多不知道如何着手的问题,我们也会分析思考了。
课后练习是为了加强课堂内容的理解,一定要认真完成。课后练习要适量、适度。以循环嵌套为例,课堂上以菱形图案为例,同学们对循环嵌套的逻辑有了理解,那么课后练习配以三角形图案练习,进而把图案中每行的“*”换成1,2等数字,再换成ABC等字母,解决了这些问题,再考虑“回文”问题如何编程解决。这些是同一类问题,但是程序的逻辑表达越来越复杂,同学可以根据自己的实际情况选择完成。这些问题都解决了,完成一个九九乘法表程序的编写就是很简单的事情了。
课后作业应注重趣味性问题的选择,顺序结构中,大象喝水、苹果和虫子、奥运奖牌统计;循环结构中,角谷猜想、猴子摘桃,小球落地等,这些都是非常有意思的题目,通过题目文字阅读,建立编程思想,用学过的语法,结合讲过的案例,逐步用C语言将这些问题解决,通过上机调试,获得答案。程序调试成功,学生会获得成就感,这种成就感能帮助他们建立自信心,激发对学习兴趣,进而有学好这门课程的动力。
以上针对C语言教学中存在的问题,给出了一系列对策,学生兴趣明显提高了,编程能力也得到了较大提升,同时为其他课程的学习奠定了基础,提供了借鉴。教学方法的改进不是一朝一夕的事情,应注重理论与实践的结合,学生实践技能的培养,在今后的教学过程中不断完善。