面向实践能力培养的C程序设计教学实践改革探讨

2011-12-31 00:00:00孙干
电脑知识与技术 2011年21期


  摘要:C程序设计是高职高专计算机相关专业的一门重要的专业基础课。它功能丰富、表达能力强、使用灵活方便、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。针对高职院校教师与学生普遍认为C程序设计课程难教也难学,实验教学中学生常出现听得懂、编不出的现象,分析问题存在的原因。文章从面向实践能力培养的C程序设计教学实践中教材和教学中存在的问题,教材内容的组织及教学内容的组织等方面阐述。实践证明,这些教学改革效果良好,不仅有利于培养学生学习兴趣,而且有利于培养学生分析问题与解决问题的能力。
  关键词:C程序设计;教材内容;教学内容;教学方法
  中图分类号:G642 文献标识码:A 文章编号:1009-3044(2011)21-5263-03
  《C程序设计》是高职高专院校计算机相关专业开设的一门专业基础课,是学习计算机及其他基础课如《数据结构》等课程的先修课。因此,提高这门课程的教学质量对于培养大学生的计算机技能至关重要。但是,对于初学者来说要在短时间内学好这门课程并不容易。在以前的教学实践中,就发现很多学生觉得这门课难懂而厌学,有些甚至失去了学习的信心,有的不知道学为何用而不感兴趣,教学效果一直都不是很理想。所以,如何进行C程序设计教材选择及教学内容改革是我们计算机教师应该研究的课题。
  1 程序设计教材和教学中存在的问题
  程序设计教材中实例不实,为解释语法而设计;语法堆砌,只见树木不见森林;忽视错误程序的分析与讲解。
  2 教材内容的组织
  1)教材的特点应该顺应时代发展,提升实验平台。
  2)教材特点要求内容紧密结合实践,实例兼趣味性和实用性。增加游戏类实例如猜数游戏,文曲星猜数游戏,扑克牌游戏等;趣味智力题类实例如国王的许诺,爱因期坦数学题,汉诺塔,骑士游历,八皇后问题等;实际生活问题类实例如:体型判断,身高测试,学生成绩管理,大奖赛现场统分,计算礼炮声响次数,存款预算等。
  3)教材特点还强调软件开发过程、算法设计、程序设计方法与编程技巧。注重程序测试与调试技术,错误案例分析和排错,程序的健壮性。每章小结中增加了常见错误的总结。一个程序多种编程方法,注重代码规范。在教材注明常见错误案例分析有变量初始化错误,类型匹配错误,死循环与死语句,越界访存错误,与0比较问题,缓冲区溢出问题,复杂情形的关系判断问题,内存泄漏问题,遗漏边界条件测试,使用野指针的问题,非所有控制分支都有返回值错误,参数非法问题,类型溢出错误,不良代码风格等问题。
  3 教学内容的组织
  3.1 C程序设计教学中以前存在的问题
  集中式的讲述(运算符、数据类型);语句的语法讲的多,注意事项一堆;忽略程序的“设计”过程(思维过程);举例死板、单一、分离;相关知识联系不紧密;过于依赖教材。结果导致学生学了不会编程,不会应用;考完试就忘了;学习兴趣逐渐淡化;学生不明白,却又问不出问题来。
  3.2 面向计算机专业的教学方法
  在强调基础知识的同时,注意在开发实际应用程序时具有重要作用的知识。如将程序范型、程序测试、代码验证与程序优化等内容引入课程。
  关注两部分学生的教学方法:面向大部分学生,对教材上的实例进行详细讲解,使其能够掌握基本的语法、理解教材上的实例,以解决一般类型的问题。另外,从教材习题或参考书中选取有一定难度和代表性的实例进行概要性的讲解,有助于提高学生学会利用基础知识的能力。还有面向一些比较突出的学生,给出一些综合性的实例如学生成绩系统的开发,给他们介绍解题思路,使其能够解决更复杂的问题,带动其他同学,增加编程兴趣。
  实际编程演示互动的教授方法:在课堂上实际编程演示,并运行结果。一方面要体现良好的程序设计风格和编程习惯,同时也反映了教师在编程时的思维过程,从注重结果转向注重过程和方法。大量地实践证明,学生对编程演示的过程兴致很高,为了进一步活跃课堂气氛,在编程过程中会有意设置Bug,当程序的运行结果与期望的结果不一致或者出现异常情况的时候,学生的注意力会更集中,此时可让学生分析问题的所在。此外,也可以通过对学生程序样例展示,鼓励学生的学习兴趣。
  3.3 非计算机专业的教学方法
  教学内容主要讲解数据类型,运算符与表达式,简单的C程序设计,程序的控制结构,函数,数组,指针,结构体和共用体,文件操作。
  1)采用案例——任务驱动的教学方法:“程序设计语言”强调的是“设计”,应当从“设计”入手,以程序设计思想与方法为核心,注重程序的编写过程,选择一个恰当的案例非常重要。案例的选择应当由浅入深,要做到精、准、易。精就是突出重点,目的明确;准就是能够反映欲教授内容的本质;易是简单易懂,不能把学生吓着。例如在讲授函数时,给出这样一个案例:“编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op操作数2 来计算表达式的值。指定的运算符为加(+)、减(-)、乘(*)、除(/)”。首先用一个简单的程序来实现:
  main()
  {floa