浅析C语言教学问题
2015-12-07王晓莉黄燕
王晓莉 黄燕
摘要:C语言是一种很好的结构化程序设计语言,目前是高校计算机、信息管理等专业中一门重要的基础课程,也是一门实践性很强的课程,但就目前教学过程中,运行环境的多样化,造成了不同的运行结果致使学生十分迷惑,因此,在课堂教学与实践中需要重点强调其结果的运算过程。由此,本文就自加自减不同运行结果的问题加以分析。
关键词:C语言;编译器;教学问题;教学改革
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2015)06-0143-02
On the Teaching of C Language
WANG Xiao-li, HUANG Yan
(Henan Information Engineering College, Zhengzhou 450000, China)
Abstract:C Language is a good structured programming language. At present, it is an important basic and practical course on computer, information management and so on.But now as for the teaching process, the different operating results caused by the diversification of operating environment makes the students very confused. Therefore, we should emphasize the results of the calculation process in classroom teaching and practice. Thus, this paper will analyse from different operating results plus decrement problems.
Key words:C Language; compiler; teaching problem; reform in education
當前,电子信息化的时代,计算机的应用技术飞速发展,程序设计技术也从结构化程序设计技术不断地向面向对象程序设计技术过渡,虽然,对于规模较大的应用程序,总体框架是由面向对象程序设计而搭建,但在局部实现过程还有许多仍需采用结构化程序设计技术。C语言是高级语言中的低级语言,也是一种很好的结构化程序设计语言,因此,在全国各高校《C语言程序设计》依然占据这重要的地位,也是计算机、信息管理相关专业必修的一门基础课程。但其丰富的功能、多样化的运行环境,给初学者带来了很多困惑。本文就C语言教学过程中具体遇到的问题进行分析。
1 C语言的优势与特点
C语言是目前使用最广泛的一种计算机高级程序设计语言,具有数据类型丰富,概念简洁,通用性好,表达能力强等特点,而且用法灵活,可读性好,有利于读者培养其良好的编程习惯,是一种既适合系统程序设计,又适合应用程序设计。因此,赢得了广大编程人员的喜爱,得以广泛应用。由此,也成为高校中计算机及相关专业的必修课。
每一种事物得以存在和发展,都有其自身不可忽略的特点,语言也不例外,当然,C语言的发展也有着不同于甚至优于其他语言的特点。具体特征包括:
1) C语言是一种结构化语言
结构化语言就是将自然语言加上程序设计语言的控制结构就成了结构化语言,它显著特点就是代码和数据的分隔化,换言之,程序各部分除必要信息交流外彼此互不影响。
2) 简洁、紧凑、灵活
C语言一共有43个关键字,包括通用关键字32个,扩充关键字11个;9种控制语句。程序书写形式自由,主要用小写字母表示。
运算符丰富。C的运算符包含的范围很广泛,共有34种运算符。C把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。
3) 语法限制不严格
C语言语法限制不太严格,程序设计自由度比较大,例如对数组边界不作检查,整型、字符型数据可以通用等等,这些都需要由程序编写者自行确保程序的正确性。
4) 运算符丰富
C语言共有44种运算符。C语言中把括号、赋值、强制类型转换等等都作为了运算符处理,即可以实现其他高级语言中难以实现的运算。此外,C语言数据结构也非常丰富,基本涵盖了各种数据类型。主要包括基本类型(字符型、整型、实型、枚举型)、空类型(void)、构造类型(数组、结构体、共用体)和指针类型等。从而可以实现各类复杂的数据结构(如链表、树、栈等)的运算。
5) 功能强大
C语言有着丰富的库函数,强大的图形功能及其预处理能力,与其他语言容易接口,可直接对硬件进行操作。比如PASCAL语言、汇编语言、数据库语言等。而且,C语言还可以直接调用DOS命令。由此,当前工业计算机控制系统开发过程中,C语言成为了越来越多编程人员编写控制软件的首选。
由此,有人把C语言称为“高级语言中的低级语言” ,也有人称它为“中级语言”。它具有很多只有像汇编语言才具备的功能,比如直接访问物理地址等。但它又具有高级语言的编写容易,较高的可读性特点,这就使程序员不仅减轻负担,而且效率提高,同时,C语言编写的程序具有更好的可移植性。
2 C语言教学问题
目前,结合C语言的特点,C语言的教学方法也越来越多样化,而随着教学改革,在教学过程中采用的编译运行环境也多样化,方便C程序的实现的同时也给教学过程带来了相应的问题。
在某些运行问题中不同的运行环境造成的结果是截然不同的。目前常用的C语言的编译运行环境包括Turbo C、Visual C++、Vs2008、Win-TC、C-free等,在教学过程中,运用比较多的就是Turbo C、Visual C++、C-free。但是就在这些编译运行环境讲解时问题也应然而生,尤其在自加自减运算过程中,所得结果是截然不同的,主要原因是自加自减自身运算规律和编译过程中运算顺序不同而造成,例如,现有程序:
#include
main( )
{
int i=5,j=4,p,q;
p=(i++)+(i++)+(i++); /*后置形式。*/
q=(--j)+ (--j)+(--j); /*前置形式。*/
printf(“i=%d,p=%d\n”,i,p); /*输出i,p运行结果*/
printf(“j=%d,q=%d\n”,j,q); /*输出j,q运行结果*/
}
针对于编译器Turbo C而言,运行结果:
i=8,p=15
j=1,q=3
针对于VC++6.0而言,运行结果:
i=8,p=15
j=1,q=5
分析在此程序中对于Turbo C和VC++6.0两种编译器运行结果,可以看出,对于后置“先用后变”的规律是指在下一条语句执行前统一改变,而不是刚用完就变,相当于p=i+i+i;i=i+1, i=i+1, i=i+1; 对于前置“先变后用”的规律,执行结果就会与所用编译器有关,针对C语言自身的编译器Turbo C而言,先进行三次自减运算后再取j的值相加,相当于j=j-1, j=j-1, j=j-1;q=j+j+j;针对目前各类考试而使用的VC++6.0环境分析,先进行两次自减运算,取其相加后,再进行第三次自减,取其相加得q值,等价于j=j-1, j=j-1;q=j+j; j=j-1;q=q+j;由此,学生第一时间看到课本的结果和上机实践运行的结果就有了出入,造成了学生的困惑。此时,就应该在上课时具体分析后再让学生进行上机实践。
在实践过程中要强调的是让学生有目的地摒弃课本上已经过时的知识点,而找到目前正在盛用的知识。因此,在教学中不论是解决自加自减问题,还是空间分配问题,运行结果与编译器有关的,我们都应该强调的是目前各类考试和实际操作所涉及的VC++6.0的运行规律及结果,而非课本中给出的Turbo C运行的规律和结果。
3 C语言教学改革
针对于C语言教学过程中出现的编译器的差异而造成了结果不同,我们在教学过程中就不可以单一的针对课本讲解,需要结合目前实际应用着手,因此,团队合作项目驱动式实践教学有效地改善了教学问题。
德国教育学家第斯多惠曾说:“教学的艺术不在于传授本领,而在于激励、呼唤。”团队合作项目驱动式实践教学主要是以现实问题为出发点,结合教学内容和进度选择合适的项目,以教师为引导,由团队合作完成具体任务。由此,学生可以从简单的小程序的編写开始了解程序基本语法和结构,并且以团队合作形式可以互补每个学生的特点和知识点,逐渐加深知识点并达到灵活运用语言编程解决一定难度的实际问题。从而改变以教材实例为主体,减少学生死记课本知识,不会灵活应用的现象,而且激发了学生的思维和合作。并且还可以摒弃C语言讲解过程中出现大量不同编译器出现不同结果的情况出现。更实际地让学生学以致用,利用目前最为超前的编译器实现程序的运行。而非纯理论的研究程序的运行过程。
在教学过程中,团队合作项目驱动式实践任务过程中,以一个实际问题为出发,由易向难过渡,贯穿整个C语言的基本知识点,从而可以使学生连贯性地掌握每一个知识点,并且团队合作过程中每完成一个阶段每个人都会体验其中成功的喜悦,可以直接提升学生的学习兴趣,并且以实践弥补课本中古老的问题。从而全面地培养学生自主学习构建知识的能力,充分地体现了应用型教学“以能力为本位”的价值取向。
4 结论
教学改革的研究和实践永远是一项值得关注并且持续探索的过程,改善传统教育中过分重视灌输课本知识的现象是刻不容缓的,着重于学生素质能力和实践能力的培养是目前教学的重中之重的任务,所以需要快速减少对于C语言这类课程出现的课本与实践结论冲突的问题。因此,为了迎合目前国家的发展,满足国家人才的需要,教师在教学中就应该及时改变不完善的传统教学模式,不断进行自我学习、自我探索,及时调整符合所带课程的教学方案,逐渐提高学生分析问题、解决问题、驾驭知识的能力,培养国家真正需要的科技人才,在实践中摒弃已经过时的知识,更新现有的知识体系。
参考文献:
[1] 王窕珊.C语言编程教学方法探讨[J].计算机光盘软件与应用, 2011(9).
[2] 曹莎莎. C语言教学研究与思考[J]. Value Engineering, 2012,31(1).
[3] 邓维斌,周玉敏.提高C语言实验教学效果的探索[J].实验室研究与探索,2006,25(3).
[4] 张学林,陈齐超,段珊,胡波.项目教学法在“C语言课程设计”中的研究与应用[J].实验技术与管理,2011,28(2).
[5] 夏欢庆.C语言在计算机中的应用[J].电脑知识与技术, 2011,7(23).
[6] 谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005.
[7] 孔娟,曹利培.C语言程序设计[M].长春: 吉林大学出版社,2009.