徐 辉孙 侠
(1.安徽理工大学计算科学与工程学院 安徽 淮南 232001;2.安徽理工大学理学院 安徽 淮南 232001)
计算机编程语言层出不穷,多如牛毛,每种编程语言都有其特点,有其适用的场合。随着C++和C#的使用,C语言的应用范围被压缩了。但是必须看到,在控制领域,C语言因其“半高级语言”的优势,仍然在普遍使用[1,2]。在单片机、嵌入式系统中广泛使用,难以替代。著名的嵌入式实时操作系统μC/OS-II除了极少的和微处理器硬件交互的代码以外,其余全部用标准C编写[3]。因此,C语言的学习仍然是重要的。大部分高校都将C语言程序设计作为必修课,这里我们针对C语言的学习做一个探讨。
程序设计课程最忌的是照本宣科,只将语法。目前,多媒体教学在各类高校已经普及,上课时候可以直观的将要教授的内容展示给学生,并通过一系列声音、图形、图像的方式让原本枯燥的课堂教学变得活跃,调动学生积极性。但与此同时,有部分教师的课堂教学却变的古板了,甚至有“照ppt宣科”的情况出现。没有实例化的教学让课堂从活跃变得沉寂。因此,在C语言教学中,要充分发挥现代教学工具的作用,提高教学效率。可以在理论课教学中添加一些类比、对比的例子。比如,对于“循环”这一部分的教学。C语言有三种循环语句:for语句、while语句和do While语句。统一的是都需要循环控制变量,但每一种情况下,循环控制变量的变化确实不一样的。for语句的循环控制变量可以指定步长后自动变化,但另外两种语句却需要显式指定。无论如何,do while语句循环体都会执行一次,但另外两种情况则可能一次都不执行。这些相同之处和不同之处,通过比较的方式给出后,学生就容易掌握一些。因此,教师需要提炼理论教学中的知识点传授给学生。
对于任何一门工科课程,实验都是必不可少的重要环节,在某些时候重要性甚至不亚于理论教学。对于教师尤其是教学经验丰富的教师来说,可能在实验中极少出现被难住的情况。这样容易造成给学生丢几个实验,让他们去做好了,有问题问我。但是,对于层次不齐的学生来说,这样是难以达到理想效果的。精挑细选的实验可以让学生自觉自动的完成从而掌握理论教学的重点和难点。在实验教学中,有教师有意识的将极易出错的知识点放在同一个实验或者同一堂课的不同实验中,这样,发现问题后学生会有意思的做比较,有利于问题的解决并避免再出现相同的错误。这种“陷阱式”的实验教学取得了很好的效果,值得提倡[4]。
实验教学的另外一个方面是,教师要有意识的将后续课程中可能出现的问题在本课程的实验教学中体现出来,这样,在后续课程涉及到该知识点后就容易理解多了。比如,在C语言教学中,指针是一个最灵活的地方,也是C语言的精华所在。但是,目前课程后面的例子的设计和后续课程关联就不大,只是帮助理解而已。加上目前社会上有人可以的规避指针在程序设计中的应用,一些学生认为这个内容就是故意把课程加深,没有实际意义。本人在教学中结合嵌入式操作系统内核讲解中的问题,比如μC/OS-II在内存分配的时候用到的指针的知识[3],这样学生就容易理解灵活的C语言的指针的巧妙之处。
在高校篮球修课时常出现的是有学生考试的分数很高,但是根本不能上场打球。原因是考试时候很多都是单项进行的,比如运球、投篮。但是比赛是连贯进行的,相信不把单项的技巧串接起来永远不能成为科比。C语言教学有着异曲同工之妙。有学生在单独的理论学习和实验中取得了很好的成绩,但却不能使用C语言开发一个极小的项目解决实际问题。因此,需要结合实际设计综合性的课程设计。由于综合性的内容往往牵涉到数据结构的知识,而数据结构这门课程又常常在C语言程序设计课后面才开始。因此,部分教师担心学生不能胜任。其实,这是没有必要担心的。可以设计不需要复杂数据结构的综合性项目。比如,简单的队列和堆栈问题,完全没有必要将数据结构知识和C语言程序设计课程分的那么明显,学生也完全可以在学习C语言后掌握这一部分内容的。一个很好的综合性课程设计是让学生设计一个计数器。这是一个可难可易、可深可浅的项目。可以逐步推进,平滑的推进设计难度,很好锻炼学生的动手能力。
不少人认为C语言这门课程理论考核没有必要,只需要在实验时候看学生解决问题的能力就好。但事实是,理论考试必不可少。实验考核过程中学生有各种不同的方法解决同一个问题,但是有些知识点是很重要的,这样可能就规避掉了。这对于以后的项目开发是很不利的。因此,我本人的思路是采用四六开的方式。即理论考核占40%的分量,实践考核占60的分量。当然,也可以将学生平时的出勤率、学习态度放进综合分里,但是本人以为象征性的就行了。掌握知识才是王道,不同的学生有不同的学习方式,不必强求。
[1]彭雅琴.C语言实验教学探析[J].三江学院学报,2010(4).
[2]常村红,娄银霞.C语言教学改革初探[J].太原城市职业技术学院学报,2012(3).
[3]J.Labrosse.MicroC/OS-II∶The real-time kernel[M].US∶CMP Books,1992.
[4]赵英红.“陷阱式”教学法在C语言程序设计课程教学中的应用[J].滨州职业学院学报,2008(4).