C语言程序设计教学方法探讨

2006-08-01 06:59雷学生
计算机教育 2006年6期
关键词:C语言程序设计语句

雷学生 胡 多

摘要C语言程序设计目前已经成为高等学校工科各个专业学习计算机程序设计的首选课程,其目的是培养学生学会使用计算机语言编写适合自己专业特色的应用程序。然而,由于教学时数的限制和教师教学方法的不恰当,使大多数学生在学完该课程后,仍然感觉编程很难,或者一点也不会编程,更不用说在自己的专业中应用了。本文就是为了解决这个问题而提出了教师在教学C语言程序设计课程时可以采用的一种行之有效的教学方法。

关键词:C语言教学内容教学手段教学方法

目前,C语言程序设计已经越来越多地成为高等学校工科各个专业学习计算机程序设计的首选课程了,这与C语言的特点是分不开的。C语言不但可以编写系统软件,而且也可以根据用户的需要编写出满足用户要求的应用软件,尤其是C语言具有很好的对计算机的硬件编程的能力,使其在工科教学中的生命力也越来越强。然而,在信息化高速发展的今天,要求我们在教学中加大信息量,这与高校教学中总学时数的限制显然是矛盾的。教师如何在有限的学时中完成自己的教学任务,并取得满意的效果?学生学习完C语言程序设计课程后能够独立编写出适合自己要求的程序吗?现将本人多年在C语言程序设计课程教学中采用的方法,介绍给大家,仅供参考。

1根据专业的不同调整教学内容的侧重点

C语言作为一门语言课来说,虽然其系统结构是不变的,但是,不同的专业要求并不一样,这就要求教师不能千篇一律地按照书本内容去讲授,而应根据不同的专业要求调整课程内容的侧重点。比如,对计算机专业学生来说,后续课“数据结构”中需要学生掌握结构体、指针等知识,而电气化专业学生,在工作时主要是进行硬件编程,就要求学生加强位运算知识的学习,教师在位运算讲授时就要加强对位运算的应用的介绍,多举一些实际例子。

可见,在教学时教师必须根据不同专业特点调整课程内容的侧重点,以满足不同专业学生的工作需要与要求。

2改革教学手段,培养学生的学习兴趣

从传统的板书教学变为板书教学+多媒体教学+上机实践。板书与教学目标、教学计划、教学进度能紧密结合,能充分体现教育思想,能使师生相互交流,相互影响,达到互动学习的目的。然而,在C语言教学活动中,主要介绍语句的语法规则,而这些规则基本上又都是约定的,不允许变化的,因而很死板、枯燥,学生学习起来兴趣不大,调动不起积极性,但如果加上多媒体的声、动和计算机的演示功能,就可以提高学生的学习积极性,培养学生学习的兴趣,加深理解与记忆。

总之,板书教学+多媒体教学+上机实践可以使课堂教学灵活多变,培养学生的学习兴趣,锻炼学生独立思考,独立分析问题的能力。

3改革教学方法,培养学生独立设计程序的能力

学生学习C语言程序设计时,不应以考试为目的,也不应以调试通过书本上例题为目的,而应以掌握C语言的语法、功能和解决实际问题为目的。为此,教师在教学时应从以下几个方面进行。

3.1明确C语言特点、C语言功能和C语言的程序结构

教师在上第一堂课时,就应告诉学生C语言的特点是什么?有什么功能?在哪些领域应用?尤其是对该专业的作用是什么?这样就可以提高学生对C语言的学习兴趣。最后,详细介绍C语言的程序结构以及每一部分的功能,针对不同问题哪些部分是不变的,哪些部分是变化的,该如何改变。例如,可以先告诉学生下面这个简单的C语言程序结构:

预定义

main()

{

说明部分;

赋值部分;

功能实现;

结果输出;

}

其中,程序结构是不变的,各部分随着具体功能的不同而有差异。“预定义”是该程序所进行具体功能时需要的预定义部分,如常量的定义、文件的包含等;“说明部分”是对程序中相关量的定义,如变量的定义、函数的说明等;“赋值部分”是对程序中所用到的变量进行赋值的处理;“功能实现”是该程序要完成的具体功能的语句罗列,根据不同问题其语句不同;“结果输出”是对程序运行结果的显示。同时应该让学生注意,在上述结构中“;”的作用、大小写的区别,即C语言程序中,每个语句是以“;”作为结束标志,“预定义”后没有任何符号,关键字区分大小写,除“FILE”关键字外其余都是小写的等。

3.2详细介绍各语句的格式、功能

程序是语句的罗列,因此,要想学会程序设计,必须学好每一条语句。对语句教学时,应主要介绍语句的格式、功能及该语句在使用时应注意哪些事项,并选择具有代表性且能够帮助学生理解该语句的程序或程序段为例作一详细讲解。

3.3具体问题的解决方法

以一个比较简单的例子介绍具体问题的解决办法。比如要求学生用C语言编写一个求三条边为a,b,c的三角形的面积S的程序(假设三条边一定能构成三角形)。

拿到该问题后,先介绍在数学上解决该问题的步骤,即:

第一步:给出已知三角形三条边求三角形面积的公式S=

第二步:给出根号下s=(a+b+c)/2。

第三步:给出三条边a,b,c的值。

第四步:代入a,b,c于上述第一步和第二步的公式中得面积S。

如果按照上述步骤编写C语言程序,则程序段如下:

#include ″math.h″/*预定义*/

Main()

{

floata,b,c,s;/*定义变量a,b,c,s,用以分别存储三角形的三条边和面积*/

S=sqrt(s*(s-a)*(s-b)*(s-c)) ;/*给出已知三角形的三条边求三角形的面积公式,语句1*/

s=(a+b+c)/2; /*求根号下s,语句2*/

scanf("%f%f%f",&a,&b,&c);/*输入三角形的三条边a,b,c,语句3*/

printf("area=%f ",s);/*输出三角形的面积,语句4*/

}

该程序无论用户从键盘输入的是什么数,其输出值均为:area= 0.000000。显然结果不正确。经对C语言程序的运行机制分析后可知,C语言程序执行时,均是自上而下逐行执行,这样就不难看出,上述程序段是不能达到用户要求的。因为,当语句1执行后,三角形的面积值S已经计算出来了为0.000000(在C语言中,变量a,b,c无值时,系统默认值为0),语句2执行后,s值仍然为0.000000,语句3执行时不论用户输入三角形的三条边a,b,c是什么值,语句4输出的均为语句2执行后的结果(语句2和语句1执行的结果均存在变量s中,而语句1先执行,语句2后执行,当语句2执行后,语句1中s的值就被语句2中的值覆盖了),因此,程序输出值均为:area=0.000000。解决办法是把语句1、语句2和语句3的顺序按从上到下改为语句3、语句2和语句1。因为语句1在执行时需要语句2和语句3先执行,而语句2在执行时需要语句3先执行,所以顺序应为语句3、语句2和语句1。

通过这个例子,可以使学生一目了然的知道计算机处理问题时严格遵守自上而下执行顺序,从而培养了学生分析问题和解决问题的能力。当然,在讲授这个程序时,也必须告诉学生,程序中所用到的数学式子和标识符必须是C语言所允许的,也就是说必须把数学表达式转换成C语言表达式,把标识符转换为C语言的标识符,如上述例子中的

和“(a+b+c)/2”必须写成C语言能识别的表达式和标识符。当学生对该例子中的程序明白后,就可以进一步引导学生分析:如果用户给定的三条边a,b,c构不成三角形该如何处理?如果三角形的三条边不是未知的,而是已知的,如何编写程序等。

3.4熟记程序段和技巧,灵活运用其编程

知道C语言程序的执行过程和学会C语言语句的应用后,就应该学会编程了。在编程时应该熟记程序段和技巧,并且将这些程序段和技巧灵活应用在程序设计之中,同时要举一反三,例如两个数的交换、从一组数中找最大数、判断给定数是否为偶数、数组的处理等。会找最大数,就应该知道最小数该如何查找;会判断给定数是否为偶数,就应该会判断给定数是否为奇数等。

3.5“精选”与“精讲”、“勤练”有机结合,提高单位学时内的授课质量

经过上面的介绍,学生一定会对C语言程序设计的方法有一个初步的认识,并对学习程序设计语言具有了一定的兴趣。然而,受教学时数的限制,要使学生在有限学时内学会独立设计程序的能力,教师在授课时就应坚持“精选”与“精讲”、“勤练”的有机结合。

“精选”是指在备课中,贯彻精选教学内容、精心组织教材的“少而精”教学原则。备课中,教师应该博览群书,博采众长,结合自己的教学经验、授课专业与学生实际,写好讲稿,把握不同的侧重点。如在C语言程序设计中,讲解给变量赋值时可以将“scanf”和“=”一起介绍,介绍它们的格式、区别、使用场合等,这样就可以在有限的学时内讲授更多的内容。

“精讲”是指在课堂上精练讲授,是充分发挥教师的主导作用的一种启发式的教学方法。例如,在给学生讲授C语言程序设计题目时,应精讲程序中的“功能实现”部分,然后,再以该部分为中心向上——“赋值部分、说明部分”和向下——“结果输出”扩展,最后根据程序的结构将其补充完整。从而可以培养学生一种灵活而自然的编程思路。对于“功能实现”部分“精讲”时,可以用恰当的例子,使其更加便于理解。例如,在讲解交换数a和数b时,可以假设数a和数b分别为两杯水,让学生来思考,如果要交换该两杯水,应如何处理呢?学生就会不假思索的告诉你,取一个空杯子,这样该问题就迎刃而解了,同时也加深了学生的记忆。

“勤练”是指学生在学习时勤思考、勤阅读、勤记忆、勤作业。这是发挥学生主体作用的重要表现形式。学生在遇见程序设计题目时,应根据题目的要求思考出功能实现的数学模型——数学实现方式,然后根据C语言的特点将其转换成相应的C语言的程序。在编程过程中,如果学生感到自己编写程序很困难,而阅读别人编好的程序时又觉得很简单,那么,就应该告诉学生,多阅读一些别人编写的程序,并多记忆一些“功能实现”的程序段,再经过多练习学会灵活运用这些“功能实现”的程序段。课后一般布置2~3道作业题,供学生“勤练”之用,并要求学生自己验证所做作业结果的正确性。

这些年来,我在教学中把主要精力用于“精选”内容的备课上,两节课堂讲课内容一般最少用一天即八节课的时间筹划讲稿。课堂讲授始终贯彻“精讲多练”的原则,两节课中理论讲授、例题精讲和课堂练习时间各占三分之一。课堂训练时,从易到难,循序渐进,以提问法为主。即开始时,可以先告诉学生解决问题的思想,然后让学生自己独立或以讨论的方式编写程序,最后随机提问学生,分析所提问学生编写的程序,从中将不足的地方予以详细讲解,引申出共性错误。经过一段时间的训练后,再给题目时,除非是很难的题目,否则,就让学生自己独立或以讨论的方式编写程序,然后再以随机提问的方式提问学生,并分析提问学生所编写的程序,从中将不足的地方予以详细讲解。这样,不但可以使课堂气氛活跃起来,而且可以培养学生独立分析问题和独立解决问题的能力。

参考文献

[1]雷学生.计算机语言课教学之我见[J].北华大学学报,2004,4.

[2]梁锦唐.课堂教学方法探略[J].有色金属高教研究,1995,2.

[3]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,1999,12.

猜你喜欢
C语言程序设计语句
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
“C语言程序设计”课程混合教学探索
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
基本算法语句
我喜欢