您好, 访客   登录/注册

关于C语言程序设计教学的一点思考

来源:用户上传      作者: 张玮炜 刘 冲

  摘要: C语言程序设计课程在高校的相关专业往往是编程的入门课程,从“门外汉”变成“门内汉”的过程不仅需要学习基础的概念、编程知识、编程方法,还需要能够把自己的智慧转换成计算机能够识别的代码,这个转换过程中思维方式也要发生一些变化,学习C语言、实现算法的过程的教学也需要对学生进行思维方式的引导和培养。
  
  C语言程序设计是计算机及信息管理专业的一门专业基础课,一般开在大一年级,课程教学过程中往往出现学生“听得懂、看得懂,编不出”的现象,也就是学生听得懂老师讲课,也看得懂书上或一些资料上的程序,但是到了让他们自己编程时,却编不出来的现象。针对这种现象,结合作者本人的教学经验,提出一些关于教学的思考。
  我们首先分析这种现象产生的原因,因为这是一个普遍现象,就要先分析学生的接受过程和学习能力了。
  C语言程序设计课程往往开在大一年级,绝大多数学生没有任何关于编程的基础,甚至于一些关于计算机的基础知识也似是而非,停留在对计算机的强大功能等表面的东西感兴趣,对于内部的原因不了解的感性认识上。刚开始他们很多人认为学编程类似于学习应用软件,较快的时间的学习就能够成为编程“高手”。而C语言程序设计作为入门的第一门课程,必须首次讲授关于编程的一些基本概念,比如常量、变量、数据类型、运算符、表达式等。这些内容相对显得枯燥一些,一部分性急的学生需要耐下心来继续学习,另外,由于这些内容是编程的基础,又要求学生深入掌握,对学生的心理就需要有所把握了。
  随着学习内容的推进,有些学生慢慢的跟不上了,能听得懂,自己编程则不知从何入手,究其原因,一方面是对算法没有掌握,一方面是对这门语言本身不太了解。算法是贯穿在整个编程过程中的,有了算法,也就有了编程的思路,学生对算法不理解或者掌握不够,直接影响编程,除此之外,对于把现成的算法变成C语言程序,许多学生虽然能编的出来,但是对解决问题的思路和方法不甚理解,如果没有给出现成的算法,就又不知如何是好了。这就要求教师在教学过程中,把算法讲透,用各种方法使学生理解算法,在这个过程中,还有一个关键的问题,就是思维的模式。
  计算机编程的思维不仅要求严谨,还要求能够符合编译器的能力。严谨的思维才能编出漏洞少的程序,符合编译器的能力则要求学生理解计算机能做什么,其在操作过程中是怎么做的,编译器能编译什么样的语句。当然具体操作过程是怎么做的并不需要知道具体二进制代码或命令,那不是C语言的研究范畴,这里需要学生理解的是计算机能够识别什么样的语句,虽然对常量、变量、运算符、表达式等学生已经有所了解和理解,但要把问题都分解到计算机能处理的语句的地步学生还不太适应,对于这种思维的培养和训练,作者认为是学习C语言的关键。算法本身没有这么细致,但是却是这种思维的精简的表达,对于要解决的问题,也是在计算机能识别什么能处理什么的基础上表达出解决的方法或步骤,为什么要细到这种程度,很多学生不清除,怎么细化到这种程度,很多学生一头雾水,由于对这种思维的不适应,很多学生自己考虑算法时,就表达不出来算法,当然编程序也跟着受影响。这种思维模式转变过来了,算法也就容易表达出来,程序也就可以转换过来了。这种思维模式的培养却是从学这门课开始,贯穿在整个C语言教学过程中的。
  学习C语言从引入常量、变量、运算符、表达式等基本概念的时候,思维已经进入编程的准备阶段,这个时候不仅要使学生理解这些概念本身是怎么回事,还需要让学生理解这些就是编程的素材,C语言解决所有的问题最终都要细化到语句,而语句就是这些内容组成的,怎么样能把这些常量、变量、运算符、表达式灵活的组合成解决问题的语句,这是编程的关键。就象我们如何把汉语的一个个单个的词汇组合成表达特定含义的语句一样 ,C语言的常量、变量、运算符、表达式相当于词汇,把它们组合成表达特别含义、执行特定内容的语句需要思维的处理和提升的过程,表达的最具体的就是程序,稍微粗一点就是算法了。而我们在结构化编程中,尤其是初学者,往往只能是从总体到具体、逐步细化、逐步分解的进行,有了计算机能够执行什么的清楚认识,写出算法往往就比较贴近实际。
  一个人如果知道很多的汉语词汇,但是不能把词汇连接成通顺的句子,那么就不能说这个人表达能力好。学习编程的过程中,如果知道具体的基本的概念和知识,而不能灵活的用来解决问题,就不能认为编程能力强了。因为计算机只是执行语句,不去主动解决什么问题,那我们编写程序,解决问题还需要思维的整理、方式、方法,当然这些方式、方法要能够在计算机上实现,就是编写算法的过程,教学过程也可以使学生理解这些方式,渐渐熟悉这种思维,熟悉编程语言。
  我们学习编程语言的时候很难象我们学习汉语一样,时时都有一个环境,那么只在课堂的时间去接触C语言,熟悉的进程必然较慢。课堂上的作用在于接触、理解,而要掌握则需要自己去试着使用的过程。也就是教师们常说的“C语言的编程能力不是看出来的 ,不是听出来的,而是自己动手练出来的”。教师在教学过程中,根据学生的接受能力、学习能力,化繁为简,学生可能能够接受的更快一些。作者个人的经验,打比方是个非常有效的办法,能够帮助学生对基本概念的理解,如对变量的理解,两个数交换的方法的理解、指针的理解等等。要让学生自己动手去编程序,除了课后布置的练习以外,课堂上的练习也是非常必要的。因为教师很难控制课后学生到底用了多长时间去编程、去思考编程,课堂上的练习又要占用大量时间,这和紧张的课时有些冲突,作者认为比较折中的办法是编程时教师多用板书,这样在板书过程中教师带动学生思维,学生能够跟着思考,部分代码教师可以特意空出来,告知学生这部分代码要做什么事,然后可以由学生补充完整。
  


转载注明来源:https://www.xzbu.com/2/view-424907.htm