从程序设计本质入手,上好C语言的第一课
2014-02-22张吴波史旅华
张吴波 史旅华
[摘要]本文针对大学生学习C语言、编写C语言程序中的问题,分析了C语言程序设计第一堂课的重要性,阐述了以程序设计本质作为切入点,上好C语言第一堂课的观点。并提出了将将程序设计本质作为整个C语言教学的“纲”的做法。
[关键词]程序设计 第一堂课 C语言
[中图分类号]G642.0 [文献标识码]A
C语言程序设计是计算机专业学生进入大学后接触到的第一门专业基础课程。在该课程中主要讲授程序设计的基本方法和基本技能,学生对这门课程学习的效果直接影响对本专业技能掌握程度,也影响到他们后续专业课程的学习,甚至还会影响到学生对本专业的认可度。因此如何提高C语言程序设计的教学质量,切实提高学生的编程水平,是广大C语言教师最关心的课题。
我校C语言课程组总结了C语言教学的经验,分析了学生学习C语言过程中出现的问题。秉着从程序设计的规律出发,从第一堂的授课内容开始,对课程的教学内容和教学方法进行改革。
一、C语言的第一堂课的重要性
在大学的学习中,许多课程对学生来说都是一个全新、陌生领域的开放,这其中学生需要接受新的知识,新的思维方法,新的学习方法等等。正如C语言程序设计,是学生第一次接触计算机编程,第一次需要按照计算机思维方式思考问题,第一次使用形式化的语言进行设计。
正是因为这样,许多同学在学习C语言程序时,经常会出现这样的情况:在课堂上、在教师的引导下,学生“感觉”教师所讲授的内容都听明白了,看书时对书中所介绍的语法好像也是清楚了。但是合上书本却就感觉大脑一片“空白”,编写程序时不知如何下手。许多时候,教师在总结的原因是都归结为学生应该多加强练习,多编写程序。当然这是一个非常重要而且也是非常好的学习编写程序的方法。笔者认为,教师可以从另一个角度去分析其中的问题。
学生对于刚开始接触的新事物是非常陌生的,对于它究竟是“什么”是不清楚的。尤其对于刚接触编程的学生来说,C语言程序是什么,很多同学都是一个“模糊”的认识。当教师在授课过程中如果一味只讲解一些C语言的语法规则,而没有从本质上解决C语言程序设计是什么的问题时,学生对课程的理解是片面的。而这些问题的解决需要教师在第一堂课上,使学生对C语言程序设计有一个本质上的、清楚的认识。并通过这种认识,引导学生使用C语言进行程序设计。
因此,俗话说“好的开始等于成功的一半”,如果开了一个好头,那么对以后的教师的教学和学生的学习都是大有裨益的。如果从他们的第一堂开始,能够正确引导他们的学习C语言的方法,可以收到“事半功倍”的效率。
二、C语言的第一堂课的教学现状
通过调查发现,很多C语言的教师在对待的第一堂课时都没有足够的重视,大多都是先简单的自我介绍和学习C语言的重要性的介绍,以及课程内容的安排等;然后接着就是介绍C语言的程序的例子;再次就是引入C语言的语法规则,对语法规则进行讲解等。
这样的授课方式开门见山,可以直接使学生了解C语言的知识,但是如果掌握不好,可能会使学生陷入一个“语法旋涡”。学生在学习本课程时,可能都是为了学语法而去学语法,不知道这些语法规则如何用,应该用到什么地方。随着学习的深入,甚至可能会导致学生对程序产生恐惧感,令他们失去学习本课程的兴趣和信心。
三、第一堂课应该讲什么
第一堂课应该讲什么?如何讲?应该达到一个什么样的目的?笔者认为应该从授课内容的本质入手,使学生在第一堂课就清楚的认识到“程序”是什么,“程序设计语言”是的什么。为学生的学习指明一个方向,使他们能了解,在接下来的学习过程中应该怎么学。
C语言程序课程的主要目的是要传授学生如何使用C语言编写程序,因此在C第一堂课应该使学生了解程序、程序设计、程序设计语言的本质。通过第一堂的讲解使学生充分认识到编写程序、运行程序的过程,并消除对程序的陌生感。
(一)程序的本质的讲解
通过调查研究发现,学生在学习C语言程序设计时所出现的问题,都是可以归结为对程序的本质不了解。
但是,程序的概念对于学生来说又是一个非常熟悉的概念,在现实生活中处处都充斥着程序的例子,并且计算机程序的本质与生活中他们所碰到的“程序”的本质是一致的。因此,教师首先应该通过这些现实生活中例子,例如,“新生报到程序”、“请假程序”等,引导学生对程序的本质特征进行总结、分析,找出其中的特征。从而指出程序是“指为解决某一问题而既定处理步骤”、“程序是为了解决问题而存在的”、“存在一个‘程序的执行主体来按照其规定的步骤进行”、……。从而引出“C语言程序”的概念,并将其与生活中的程序实例进行对比,使学生能找到二者之间的“交点”,消除学生对“C语言程序”的神秘感。
(二)程序设计本质的讲解
虽然同学们在生活中都会接触到许多程序实例,但是许多同学平时都没注意“程序设计”的概念,认为程序设计似乎很神秘、很抽象的过程,尤其是把程序设计引入到计算机中之后。
因此在学生了解了程序的概念后,应该指出程序设计本质就是“设计程序”,即“为解决某一问题”而设计如何处理的一系列步骤。并且也需要结合现实生活中设计程序的例子,使学生充分认识程序设计的本质。例如可以指导学生设计一个程序,从一堆球中找出最重的球。
同时应该使学生认识的到:程序是指导、限定“程序的执行主体”如何执行过程的“蓝本”。为了能使“程序的执行主体”能按照程序正确的解决问题,设计程序者应该需要按照“程序的执行主体”的思维方式去思考问题。接着再指出计算机思维的特点,通过具体实例,明确告诉学生在编写C语言程序时,应该按照计算机的思维方式去设计解题步骤、编写代码等。这是许多学生在学习C语言时经常忽略了的,他们在编写程序时通常按照人类的思维习惯去看待问题,结果编写程序时自然处处“卡壳”,认为自己C语言总学不好,时间一长就对编写程序失去了信心。
(三)程序执行过程本质的讲解
计算机程序的执行归根到底是计算机按照指令序列中规定的操作对内存中数据进行处理。这部分内容属于计算机组成原理等硬件类课程的范畴,对于C语言的初学者来说很难认识、也很难理解的。教师应该在学生清楚了程序的概念后,抛出“冯.诺依曼原理”,并指出计算机的工作方式;深入浅出的引导学生认识到计算机程序中指令的概念以及指令执行的过程。
在这一部分内容的讲解过程中,应该将计算机执行程序代码的过程和人类执行程序的过程结合起来讲解。例如,可以使用计算机“计算两数相加”的例子,分析人类是如何其求和过程和计算机是如何完成求和的过程。在基础上进一步引出“内存”的概念,以及内存在计算机处理过程的作用,为后面“变量”、以及数据存储的讲解做好铺垫。
如果能使学生接受计算机执行程序的本质过程,对学生理解计算机系统和程序都是非常有好处的。因此,为了能帮助学生比较好的理解,对于课件中要求有生动的动画是必须的。通过动画的演示,展示计算机工作的过程,使学生可以有一个好的“感性认识”。
(四)程序语言本质的讲解
在学生了解了程序的概念后,应该指出“程序设计语言”的本质是“人”与“计算机”交流的工具。人们需要使用这样的工具将自己设计好的、限定计算机如何操作的想法与意图“告诉”计算机。其本质上C语言与学生熟悉的汉语、英语一样,其作用都是人们用来描述思维活动,向外界展示自己的意图。
同时通过与学习汉语、英语的方法作对比,指出C语言与其他语言一样,都有着严格的语法规则。人们必须按照这样语法规则,构建相应的“语句”,组成符合逻辑的“文章”。正式因为“文章”中的“语句”,程序运行时可以向计算机发出相应的“指令”,指导计算机如何执行,最终得到问题的解。
并且通过和自然语言的对比,可以指出学习C语言的目的和自然语言一样,也是如何将自己的想法传达给她的“受众”—计算机,编写程序的过程也是按照C语言的语法规则,表达自己思维的过程。同时也可以指出学生学习C语言和学习这些自然语言的方法是一样的,C语言的学习不能只是“语法”规则的学习,而是应该在掌握了“语法”规则后,必须使用这个语言工具,表达自己的意图,解决实际问题。而熟练的掌握这一过程,只有在不断的“实践”中才能完成。
(五)程序结构本质的讲解
在通过前面一系列的有关程序和程序设计的认识后,需要列举一些简单的C语言程序,分析这些程序实例的结构。指出一个C语言程序的基本结构是什么样的,程序结构的本质也是语法规则的一种。通过这些具体的程序实例,提出构成C语言程序最简单的“模板”,构建一个“填空”式的程序编写模式。使学生可以在课余按照这样的“模板”可以模仿编写一些简单的程序;也使学生可以按照这样的“模板”去阅读程序。
通过“填空”式的程序,可以增加学生学习程序设计的兴趣,规范学生编程习惯,降低学生的编程难度,同时也不自觉提高了学生编写C语言程序的能力。
四、需要注意的问题
在第一堂课中需要时刻注意到学生的接受能力的问题。因为此时的学生是一个刚刚接触程序的初学者,并且关于概念的讲解是一个比较抽象的过程。如果在开始时只是从理论上,将一些抽象的概念灌输给学生,而不注意学生接受能力,可能就会把学生堵在这些抽象概念的门外。甚至会造成其反的效果,降低了学生学习的兴趣。因此教师在授课时,需要能紧密结合学生身边的问题,使学生可以切身感受到这些概念,以一种他们非常熟悉的方式,去引导学生感知这些概念的内涵和本质,这一点教师上课时要注意的。
五、与后续课堂的衔接
第一堂课不能只是课程的开始,它应该是整个课程教学的“纲”,是整个课程教学的一个“指挥棒”。不能简单的把这些知识内容讲完了就可以了,应该把第一堂课的内容“辐射”到整个C语言课程的教学中。在后续的课堂教学时,需要时时紧密的结合这些本质概念,引导学生去学习,时时将知识点落脚到这些本质概念上来。引导学生使用这些本质概念去编写程序;使学生在编写程序时又能进一步体会其中的概念,以达到提高编程能力的目的。
例如,在讲解“变量”,紧密“内存”的概念,引导学生深刻体会“变量存储数据”在程序中的意义。例如在讲解“选择”、“循环”结构的程序设计,紧密围绕计算机工作过程和程序体现人类的思维过程进行讲解,引导学生体会流程控制的含义。在设计、编写程序时,围绕“C语言程序是指导计算机解决问题的步骤”,引导使用计算机的思维方式思考问题、分析问题、解决问题。
六、结束语
在第一堂课中,通过给学生传授程序设计过程中的各种本质概念,可以丰富课堂内容,提高学生对本课程的认识度,增加学生学习的兴趣,有利于学生编程能力的提高。同时也给学生的在后面的学习中,搭建了一个理论框架,为学生学习其他的语言,使学生做到“一通百通”,打下了一个良好的基础。
[参考文献]
[1]韦霖.谈谈中职教师如何上好基础会计第一堂课.中等职业教育.2012.5
[2]王洁.高等数学第一堂课的博弈.商丘职业技术学院学报.2011.2
[3]夏英俊.关于如何上好《高等数学》第一堂课的思考.科技资讯.2011.1
[4]关忠仁.C语言教学质量的思考与实践.计算机教育2007.3
[5]张长海.以程序设计为主线讲授“高级语言程序设计”课.计算机教育 2005.5
(作者单位:湖北汽车工业学院 湖北省十堰市)