石光华
摘要针对高职学生学习C语言结构化编程的困难,作者对高职计算机专业的“C语言程序设计”课程,在教学内容、教材建设、实训设计、网站建设和考核方式等诸多方面,进行了大胆的改革和探索,建立了基于案例驱动的结构化编程教学模式。本文具体论述了该模式的思想和方法。
关键词高职教育C语言结构化编程互联网
如何提高高职计算机类专业学生非图形模式下的结构化编程能力,是高职计算机教育中的一个普遍问题。作者通过三年的努力,对“C语言程序设计”课程在教学内容、教材建设、实训设计、网站建设和考核方式等诸多方面,进行了大胆的改革和探索,将电子教材、电子教案、学习论坛、编程工具、学习资料等,整合成为学习网站,在教学过程中通过论坛发布程序不同版本,实施案例驱动,课后通过QQ群进行辅导答疑,通过论坛、电子邮件进行作业提交批改,建立了基于案例驱动的结构化编程教学模式。本文具体论述了基于案例驱动的高职C语言结构化编程教学的过程和方法。
1教学内容
在课程设计上,针对高职计算机专业学制短,技能要求高的特点,提出了“一条线两阶段,三结构四循环”的教学模式。
“一条线”是指在一年级的编程教学课中,贯彻C语言一条线。曾经有一种观点,认为高职计算机专业的编程语言教学,直接从面向对象语言开始学习,可以节约时间。但是,70%的企业依然要求学生具备面向过程的结构化编程能力。考虑到企业的需求,结合后续的课程安排,我们决定在一年级的课程安排上,贯彻C语言“一条线”,即在第一学期,开设“程序设计基础”,第二学期,开设面向过程的“C语言程序设计”。
“两阶段指课程安排分为“程序设计基础”和“C语言程序设计”两个阶段。“程序设计基础”解决程序的基本结构,重点在建立学生的结构化程序的基本框架和概念;以C语言为基本语言,使学生能有实际操作的平台,但准确把握“把C语言作为伪语言”的原则,不让学生陷入C语言多变的泥淖,而把注意力放在结构化程序的基本结构上。“C语言程序设计”放在解决C语言的使用上,把握“C语言”是编程工具而不是研究对象的原则,根据企业的编程规范,对“C语言”进行简化,重点是如何使用C语言解决一般复杂程度的结构化编程问题。
“三结构”是指在一年的学习中,学生要学习三个成绩管理软件的编程,分别是基于一维数组、二维数组和动态结构数组。从企业实际应用来看,动态空间的使用,可以用动态数组解决。因此我们去掉了链表,重点是让学生写出有工程实际意义的结构化程序。
“四循环”是指编写基于“三结构”的每一个成绩管理软件过程中,教师发布四个以上的程序版本,引导学生改写、增加函数,让学生直观地看到软件的功能是如何一步一步构建起来的。
结构化程序设计的教学中,如何让学生建立起结构化程序的框架是很困难的。一个简单的成绩管理软件,代码就超过300行。对初学者来说,看懂超过100行的程序就需要很长时间,学生又如何能在短短的课堂时间里通过增加/改写函数来增加功能呢?这也就是很多学生学完了C语言程序设计,依然不能编写一个简单的应用程序的主要原因。我们发现通过论坛发布程序版本,利用工具软件BeyondCompare,比较不同的程序版本之间的差异,可以让学生直观地看到软件的功能是如何一步一步构建起来的,如图1所示。程序的第一个版本,就是一个主函数,不超过10行,只显示程序的几项功能菜单,学生很容易理解,然后通过发布第二个、第三个版本,每一个版本实现或改进一个菜单的功能,直到最后版本。
通过图1,我们可以看到程序功能的增加是由哪些代码实现的,而通过不断反复的比较,学生就可以掌握结构化程序设计的过程和方法。
在教学过程中,通过比较版本,让学生直观地看到复杂的程序功能是如何由简单的函数一个一个构成的。学生经过“程序设计基础”的课程设计,基本掌握主函数与模块函数的作用和相互关系,可以看懂超过100行的C语言源程序,理解基于一维数组的成绩管理系统;在“C语言程序设计”的课程设计中,学生对主函数与模块函数的理解更加深入,可以看懂超过300行的C语言源程序,理解基于动态结构数组的成绩管理系统,掌握主函数的设计方法,并按照规范的格式写出自己的函数。回想三年前,因为没有采用这种方法,只要是超过20行的程序,学生就普遍反映看不懂。由此可见,采用新的方法后,学生编程能力的提高十分明显。
2教材建设
2004年9月清华大学出版社出版了作者主编的21世纪高职高专规划教材《程序设计基础》,教材主要在三个方面进行了改革。
(1)强调把生活中的问题转化为程序的能力,使学生真正能够编写实用的程序
在教材编写思想上,重点放在培养学生把生活中的问题转变成为程序并进行处理的能力,强调转变讲授思路,推行引导学生首先想清楚“我要做什么?”,然后才教给学生“如何做”,最后上机进行验证的三步教学法。
在教材的编写风格上,对全书所有的例题进行了通盘的考虑,在循环、数组、函数和结构化设计等单元,所有的例子都有前后的联系,强调内容的前后衔接,特别注意工程规范的引入,在变量的命名、程序格式方面,均按工程要求进行。在案例选择上,全部采用工程实际和实际生活中的案例。
(2)提出了以“三大区域”为特色的c程序的基本框架
通过把一个基本的C程序从上到下分成预处理区、变量声明区、执行语句区“三大区域”为特色的C程序的基本框架,让学生树立正确的程序格式与规范。“三大区域”概念的提出,明确规定了程序的基本框架,让学生从一开始就按固定的格式进行编程,养成良好的编程习惯。
(3)提出了使用函数的“三大步九要素”的基本方法,建立使用函数的清晰框架
我们提出的使用函数的“三大步九要素”的基本方法,在教学中取得了很好的效果。
所谓“三大步”,是指我们在使用自定义的函数时,对函数进行声明、定义和调用。三大步按顺序进行。
所谓“九要素”,是分别指函数声明、定义、调用各有三要素共九点:函数声明的三要素:返回值的类型、函数的名字、形式参数。函数定义的三要素:形式参数、功能、返回值。函数调用的三要素:名字、实际参数、返回值。通过对“九要素”的理解掌握,学生能够建立起使用函数的清晰框架。
3实训设计
对高职学小的技能培养,实训是很重要的环节。我们采用了项目驱动的思想来设计实训项目,每一单元的实训,都是构成最终程序的不同版本,在“程序设计基础”头发布程序版本8个,“C语言程序设计”共发布程序版本10个,构成了实用的软件框架,学生相当于参与了一个中等复杂程度的软件开发,积累了经验。在今后的实际工作中,完全可以以此为模板,进行结构化程序的开发。
4网站建设
利用互联网技术,建立基于互联网的学习资源。2003年建立了“光华之窗”教学网站,在网站平台上,将电子教材、电子教案、学习论坛,编程工具、学习资料等,整合成为学习网站,设计了“程序设计基础”、“C语言程序设计”教学论坛,两年来积累了完整的教学过程资料。可以说,网站的建设和运行,为课程的质量提供了保证,避免了“课随老师走”的问题。
5考核方式
高职C语言的考试应该完全不同于传统的等级考试。等级考试的川发点是以C语言为研究对象,多以c语言本身的复杂多变性为难点。我们认为,使用C语言的能力才是重要的。我们采用形成性考核方式,参考学生学习过程中的表现,考核学生用程序解决实际问题的能力,取得了较好的效果。
通过在教学内容、教材建设、实训设计、网站建设和考核方式等诸多方面的改革和探索,充分利用互联网资源,建立了基于案例驱动的结构化编程教学模式。通过三届学生的实际运用,普遍提高了学生的编程能力。如2003级学生黄小明编写的“课堂警官”软件,在全国第九届“挑战杯”上,作为全国高职院校的唯一参赛选手,和清华、北大等国内外一流大学同台竞技,取得了三等奖的良好成绩。