首页 -> 2008年第5期

高职《C语言程序设计》课程教学的实践与心得

作者:杨天虎




  摘要:C语言是一门高级程序设计语言,使用广泛,表达能力强,目标代码运行效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,既可以用来编写系统软件,又可以用来编写应用软件。因此《C语言程序设计》课程在教学中占有重要地位。
  关键词:C语言;高职高专;教学过程
  
  《C语言程序设计》是高职高专院校计算机专业的一门核心专业基础课程,同时也是多数非计算机专业的主要选修课。该课程是一门实践性与应用性较强的课程,目的是培养学生算法设计的基本思想和程序设计的基本技能。课程的内容主要涉及C语言的基本概念、基本语法以及C语言程序设计的基本方法,在教学中既要重视严谨的系统理论教学,又要重视实践性环节和案例的讨论与分析,为以后有关课程的学习和从事软件开发奠定基础。以下是笔者在《C语言程序设计》课程教学过程中的一些经验和体会。
  提高教师自身素质教师首先要提高自身的政治素质和业务水平,及时了解国内外最新的科技成果并掌握C语言应用技术的发展方向。要不断拓宽知识面,具备一定的知识高度,同时不断研究与改进教学方法,理论联系实际,提高自身的教学水平。
  合理选择教材高职教育是针对岗位一线培养应用型、技能型人才的,而目前高职教育的C语言教材普遍存在的问题是结合岗位的针对性不强,技能训练的实践性不够。教材是提高教学质量的基础和前提,是学生系统学习知识的依据,一本好的教材应能培养学生的自学能力和独立思考能力,使学生能够依据教材理解课堂教学内容,深入了解本学科各个领域的知识。在选择教材方面应注重以下几个方面:(1)充分考虑高职高专教学的特色,理论知识要够用,注重理论联系实际,突出实用性。(2)语言表达要通俗易懂,在内容编排上尽量符合初学者的要求。(3)注意点与面的结合,注重基础与新技术的结合,使教材不仅是师生教与学的媒介,还是能够培养学生编程能力的工具。(4)在选择好的教材的同时,教师应积极编写符合实际教学需要的高质量的教材。
  明确C语言课程的教学目标,充分认识C语言的广泛用途《C语言程序设计》是高职高专学生学习程序设计的入门课程,也是计算机及电子信息专业的专业基础课程,目的是培养学生模块化程序设计的逻辑思维能力,掌握程序设计的基本语法规则和程序调试方法,具备初步的分析问题与解决问题的能力,为学生打下良好的程序设计基础。主要的教学目标包括:掌握C语言语法,能够熟练运用基本程序结构解决简单问题,理解模块化程序设计原则并能针对复杂问题进行合理分解,掌握基本算法分析与设计知识。
  1.作为计算机专业的基础课,目的是使学生掌握程序设计的基本方法并逐步形成正确的程序设计思想,能够熟练地使用C语言进行程序设计,具备调试程序的能力,为后继课程及其他程序设计课程的学习和应用打下基础。从Unix操作系统开始,C语言一直是重要的系统程序设计语言,尤其在嵌入式系统开发中,C语言正逐渐取代汇编语言成为主流语言。学生要在理解C语言的基础上更加专注于理解算法或者数据结构本身,而不至于被语言本身的复杂语法现象干扰,要强调C语言的实用性。另外,在掌握C语言的基础上,比较容易学习其他主流编程语言,学生通过对C语言的学习,可以获得针对基本程序结构的程序编写与程序调试知识。
  2.学生对C语言的熟练掌握可以在一定程度上降低后续计算机硬件技术基础课程的学习难度。计算机硬件技术基础课程中有很大一部分内容是对汇编语言的学习,同样作为面向机器模型的程序设计语言,C语言仅仅是抽象程度更高一些,其程序结构与汇编语言具有一定的相似性,C语言的编程经验对学生学习汇编语言会有很大的帮助。
  3.对于非计算机专业理工类学生而言,该课程有比较强的工业基础应用前景,C语言为用计算机解决实际问题提供了方法,是后续理论与实践教学的基础和重要工具,同时也是计算机二级考试所统一要求的课程之一。教学内容的改革应本着突出基础理论知识的应用和实践能力培养的原则,以应用为目的,以“必需、够用”为度,加强针对性和实用性。
  4.C语言功能丰富,使用灵活,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,能直接访问硬件;既可以用于编写系统软件,又可以用于编写应用软件,因而是国内外广泛使用的计算机语言。作为计算机专业的一门核心专业基础课,可以为学生后续有关课程的学习和从事软件开发奠定重要基础。
  注重教学过程,优化教学方法,把握教与学的关系高职高专C语言课程理论性强,概念性强,抽象而且复杂,在教学过程中要注意的问题主要有:培养学生对C语言的兴趣;教给学生正确的学习方法;加强实践教学环节;有效地组织课程设计;培养学生分析和解决实际问题的能力。教学过程是教师和学生的双边活动,只有既注重教,又注重学,才能真正做到教为学服务。教师所要做的就是传道、授业、解惑,开阔学生的思路,激发学生学习的积极性和主动性,激发反思,调动潜能,引导学生讨论,帮助学生解决遇到的问题,寓教于学。只有把握好教与学的关系,才能优化整个教学过程。
  1.案例教学法。C语言是应用性很强的一门课程,既有理论,又有实践,既讲方法,又讲动手能力。采用案例教学法可以改变“满堂灌”的做法,将学生的眼、手、脑全部调动起来,培养学生的学习兴趣。笔者将课程内容分为若干个主题,以程序设计作为贯穿各主题的主线,每个主题的教学过程由“要点讲解”、“自学/上机实践”和“疑难解答”三个阶段组成。通过案例分析,重点讲解程序设计的思想和方法,辅以语言知识的介绍;然后通过上机练习,包括基本训练(自测作业和主题作业)与综合训练(大型作业),教师针对学生暴露出的问题答疑解惑,结合案例教学,努力将C语言作为解决实际问题的工具,强化学生的编程能力,在分析程序与程序设计的过程中使学生逐步熟悉语法,应用语句,提高学生分析问题、解决问题的能力,由浅入深、由易到难、循序渐进地使学生在实践中掌握知识,培养程序设计能力,逐步理解和掌握程序设计的思想和方法。最终在课堂上教师扮演“主导”角色,而学生真正地成为“主体”。
  2.基于问题的教学。要真正掌握程序设计的思想和方法,运用语言解决实际问题,综合训练(大型作业)是不可或缺的。笔者让学生以小组为单位(每组2~3人),自由选题,然后围绕要解决的问题进行分析研究,查阅、自学相关的文献资料,确定技术路线和实施方案,组内分工,合作完成,最后分组答辩评分。整个过程以学生独立完成为主,教师只提供必要的辅导。经过这样的模拟实际软件开发的演练,不但提高了学生的学习兴趣,培养了学生问题求解和编程能力,还有利于培养他们探索与创新的能力。
  3.分层次教学。即标准化教学与个性化教学相结合,结合不同专业、不同班级学生的具体情况,制定各有特色的教案、讲稿和教学课件。既发挥群体智力优势,又充分发挥教师个体的教学风格特长,有利于提高教学水平。
  4.加强实验课与理论课的联系。在理论课上将上机实验任务题目进行讲解,也可以将案例算法作为实验内容。实验课程可以分为两部分,实验任务问题作为理论课的内容在课堂上讨论、讲述,确定实现算法。对于同样的题目,可以确定若干不同的算法,比较其优劣,分析其原因。上机实验的任务是完成已确定算法的编码实现和运行。这种做法相当于在教师带领下,对实验内容做了集体预习,贯彻了“算法重于语法,语法重于编码”的课程指导原则。同时,每个学期集中拿出一至两周时间进行课程设计,综合运用学过的知识,加强实践教学。学生只有通过大量的练习,才能真正掌握语言知识,培养程序设计能力,逐步理解和掌握程序设计的思想和方法,学会利用计算机解决实际问题。
  5.充分利用多元化、现代化的教学手段。在教学过程中应多方位应用现代教育技术手段,尤其是多媒体辅助教学手段与网络化辅助教学手段。在课堂教学中采用多媒体教学课件,加强直观教学,可提高学生的空间想象力。对C语言程序的调试过程及运行机制学生很难理解,很难想象其过程,如果将其做成课件,以动画的形式模拟其过程,学生就能很快地掌握。教师应从最简单的C语言程序的调试入手,详细演示C语言程序的调试过程与调试细节,同时让学生参与进来,实现教师与学生、学生与学生的双向交流和互动,提高学生的学习兴趣,加深学生的理解与记忆。要充分利用计算机网络开展网上答疑、网上测试、网络教学,及时解决学生在学习与生活中遇到的种种问题,使其检验自己本阶段的学习成果,加强对所学知识的吸收和消化。
  改革考核方式,强化应用能力《C语言程序设计》的考核应采用多种形式考核学生的知识掌握程度和实践能力,包括卷面考试与实验考核,要强调职业技能。实验考核可采用上机考试与平时训练相结合的方式,上机考试可以使用能自动组卷和评分的考试平台;平时训练包括作业和综合编程训练的完成情况。要强调实验的重要性,如果学生没有通过实验考核,课程成绩应记为不及格。该评价方法可以提前让学生体验全国计算机等级考试的过程,也可以促使学生在学习C语言的基本知识之外加强编程实践,使学生在掌握C语言语法知识的同时,也掌握程序设计的思想和方法,这样才能引导和督促学生多编程序,编出优秀的程序。
  
  参考文献:
  [1]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社,2005.
  [2]王燕.面向对象的理论与C++实践[M].北京:清华大学出版社,1997.
  [3]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997.
  [4]赵金萍.“任务驱动式”的《C语言程序设计》教学[J].计算机时代,2007,(8).
  [5]董志民,崔建平,肖利娜.《C语言程序设计》教学改革探索与实践[J].福建电脑,2007,(5).
  作者简介:
  杨天虎(1970—),男,1993年毕业于西北师范大学物理系,现为酒泉职业技术学院机电工程系讲师,2003年通过国家高级程序员考试,获得软件设计师资格,主要讲授《C语言程序设计》、《C++语言》、《数据结构》等课程。