计算机程序设计课程的科学教学方法①
2010-12-26彭珍
彭 珍
(华北科技学院计算机系,北京 东燕郊 101601)
计算机程序设计课程的科学教学方法①
彭 珍②
(华北科技学院计算机系,北京 东燕郊 101601)
为了更好的进行计算机程序设计课程的教学,达到培养优秀软件设计人才的目的,本文提出计算机程序设计课程的科学教学方法,所谓的“科学”就是摸清程序设计课程本身的矛盾及规律所在,以最恰当的方式方法化解矛盾从而解决问题。在分析程序设计课程目的、性质、地位、矛盾的基础上,结合实际教学经验,提出了程序设计教学中培养分析问题能力、逻辑思维能力及教授计算机语言三个方面的科学方法。
程序设计;科学教学方法;分析问题能力;逻辑思维能力;计算机语言
0 引言
程序设计是计算机领域中一门重要的软件技术,是其他软件技术的基础。并且程序设计课程在高等教育中占有重要的地位,也是对当代大学生们思维和智慧的一种培训。程序设计的矛盾主要体现在三个方面,这三个方面的矛盾也正决定了其学习的规律性所在。
我们目前教学中一般侧重于教授学习内容,这种教学方法没有解决程序设计中存在的矛盾也不符合其规律。本文提出的程序设计课程的科学教学方法正是要遵循和把握这些规律,有的放矢的采用一定的教学方法和手段,目的是更好地培养学生的程序设计能力,为国家培养出更多更好地软件设计人才。
1 程序设计课程
程序设计课程是伴随着计算机应用和程序设计语言的发展而发展起来的一门重要学科。几乎所有高等学校的每个专业都会把象 C、VB、VF语言这样的程序设计课程作为专业的必修课程,这说明了程序设计课程在高等教育中确立了不可缺少的公共基础课的地位。而且随着各具特色的高级程序设计语言 (C++、Java等)不断涌现,程序设计课程很快发展成为计算机专业的一门独立必修专业课程。这样的设置与程序设计课程的性质和作用是密不可分的。
程序设计是将人类分析问题的过程翻译成计算机所能理解的某种语言表达的可控制的有序步骤从而达到用计算机解决实际问题的目的。从这个定义中可以看出,程序设计课程是使用和开发计算机的重要工具,是大学生必备的一种计算机技能。而且,更重要的是对其思维的特殊训练和对其智慧的重大挑战。
由此,本文认为程序设计中主要存在这样三种矛盾:一是编程者能否以正确的思维去分析实际问题?二是是编程者能否将感性认识用较强的逻辑思维表达出来?三编程者是否掌握了某种计算机语言?这三种矛盾的存在决定了程序设计课程学习的困难性,同时也是对学习者思维能力、分析问题和解决问题能力、计算机语言掌握能力的一种锻炼。
2 程序设计课程的科学教学
上述的三个矛盾决定了程序设计课程的培养目标是除了要求学生掌握某种计算机语言,更要培养其分析问题能力、逻辑思维能力。所以计算机专业的教师在教学取向、教学方法上都要有所侧重。这就要求我们在进行程序设计课程的教授中以任务为驱动[1],即让学生在典型任务的驱动下展开学习,激发学生的学习兴趣;在这个前提下重点培养学生的分析问题能力、逻辑思维能力、计算机语言的编程能力。
一是分析问题能力的培养。分析问题是解决问题的前提,而理解问题任务是分析能力培养的最重要的第一步,还有关键的一点就是始终清楚问题任务的条件和目的。
1)培养学生理解任务要求的良好习惯。这一点非常重要。在实际教学过程中,时常有这样的现象发生,有些学生平时学习认真、反映很快,但每次考试成绩却很出乎意料。究其原因就是总是答非所问或者答不出要害。这类问题发生的很重要的一点就是对所给任务本身的理解并不到位,没有养成认真阅读题目的习惯,连任务要求都没有读明白,更不要谈分析问题和解决问题啦。所以,我们在程序设计课程讲授的过程中要时刻贯彻以“问题”为导向的原则,不要见到题目就去做,而是给学生留下足够的时间让他们自己去阅读、思考问题要求,培养学生认真阅读题目要求的好习惯。
2)始终抓住任务的条件和目的。在把任务弄清楚的前提下,如何分析这个问题呢?很大一部分同学都会先去想:以前遇到过类似的题目没有?以前的此类题目是怎么做的?课本上有哪些内容是此相关的?这样做其实已把自己陷入问题的陷阱里了。而最为关键的是分析问题时始终都要认清和牢记这道问题的两个方面:一是它已经给了我们什么?二是这道问题是为了解决什么?这样才不会只局限于已经学过的问题当中,才不至于只是机械而又死板地思考问题和解决问题,这样才能广开思路、因地制宜。
二是逻辑思维能力的培养。逻辑思维是人脑的一种理性思维活动[2],它能够把感性认识阶段(分析问题阶段)对任务的认识抽象成概念,运用概念进行判断,并按一定的逻辑关系进行推理,完成任务的求解,使得问题有律可循、有理可证。
1)分步要求、关联达标。一个程序设计过程往往需要分成若干步骤去完成,步骤之间是有逻辑关系可循的;每个步骤往往也需要多行程序代码来实现,每行代码之间也是有着因果关联的。分解步骤能够化繁为宜,利于理清思路,看清问题的解决趋向;关联推理能够承上启下,使得问题的解决有条不序。例 1,用 C语言实现三个实数小到大的排序。我们可以把这个问题的实现分为定义变量、输入数据、计算数据、输出结果四个步骤,如图 1所示。
关键第三步,即如何比较出三个数据的大小。我们可以采取三次两两比较的方法,如图 2所示。如何两两比较呢?第一次 n1与 n2比较,数值小的数放入变量 n1中;然后让 n1与 n3比较,同样数值小的数放入变量 n1中;前两次比较找到了三个数中的最小数,最后让 n2和 n3比较,从而找到次大数和最大数。
图 1 实现三个实数由小到大排序的四个步骤
图 2 实现计算数据的比较示意图
2)全面思考,严密推理。在具体的推理过程中必须对每步操作进行多角度、全方位的考虑,保证每步推理的严密性。比如,在实现三个实数小到大的输出的程序中,在三个 if语句都应该分别有对应 else语句,这是必须要考虑的。但是因为else语句中可以不做任何操作,所以可以省略。如果把三次比较的次序改变了,输出结果就是错误的;如果少了任何一次比较,输出的结果也是错误的。另外在对两个数进行比较交换的过程中,不能直接进行交换,而要通过引入第四个变量temp进行三次赋值即 (temp=n1;n1=n2;n2=tmep;),才可能实现正确的交换,如图 3所示。
图 3 两两交换的示意图
三是计算机语言的教授方法。计算机语言的学习像外语的学习一样,要从计算机的思维过程入手,而不能把重点放在语法上;还要注重计算机语言的编程风格和模块化的设计思想。
1)以算法为先导。程序设计的过程是逻辑思维的过程,设计的关键是寻找求解问题的算法[3]。这就决定了我们在讲授过程中,不要就语法将语法,那样可能造成学生明白程序,就是写不出来程序。而是要以“算法”为先导去组织每一课的教学,首先介绍算法的思维过程、步骤及规范,也就是先有个流程。然后具体到在算法中的每个过程的流程,再具体到每条语句应该怎么去写,语法要求是什么等等。最后把写好的程序输入计算机中进行运行和调试,在调试中再一次的理解语言知识的细节。最终达到实施语言的技能性培养和算法的科学性训练的目的。
图 4 模块化设计实现例 1的程序
2)养成良好的编程风格[4]。统一的编程风格有利于软件的协作开发,有助于提高程序的开发效率。比如:首先搭建出程序框架;缩进格式使得程序形成层次感便于理解,一般的编程环境会自动实现这一点,比如VC++开发环境;大括号的书写位置能够清楚地确认程序块的位置,建议放在括号的下一行;简洁规范的英文命名便于理解变量、函数的意义;必要的注视和文档能够帮助阅读、修改程序。
3)模块化设计思想[5]。对于一个程序在功能上可以划分为若干个函数模块,每个函数就象一个加工厂能够根据不同的输入,通过特定的功能加工,得到不同的结果,通过模块间的调用、参数传递完成整个功能设计。模块化思想就是在完成任何一个功能的时候,都不要局限在完成当前任务的简单思路上,想想这块功能是否可以通过简单的修改参数的方式在其他程序和应用环境下直接引用,这样就能极大避免重复性的开发工作,提高了程序开发的复用性。例 1中的三次比较交换的功能是一致的,只是参数不同,我们可以把这块功能提取出来作为一个函数模块 compare中,在主程序中只需调用这个函数就可以了。具体的程序代码如图 4所示。
当然,除此之外还要与创造性思维、逆向思维等方式相结合,才能达到事半功倍的效果。
3 结语
程序设计的教学不只是教给学生某种计算机语言,那样就失去了程序设计课程的目的和意义,更重要的是在进行程序设计过程中培养学生的信息素养,这才是授之以渔。要实现其培养目标,必须采用恰当的教学方法,教师们必须能够找到程序设计本身的内在矛盾 /规律;按照规律教授,把正确的规律教给学生;只有这样我们培养的学生才不至于仅仅只会写程序,还要具有一定的程序设计能力、良好信息素养的,具有一定思维能力、思考能力的优秀软件设计人才,甚至具有远大发展前途的软件管理人才。这才是科学的教学方法,才是科学教学方法的目的与意义。
[1]赵飞,荆光辉,张润泽 .如何培养大学新生计算机语言编程能力 [J].计算机教育,2007(5):13-15
[2]苏建元 .计算机学习中逻辑思维和系统思维能力的培养 [J].电脑知识与技术 (学术交流),2007(2):585-586
[3]谭浩强 .C程序设计 (第二版)[M].北京:清华大学出版社,2002
[4]李利国,王磊 .C语言编程风格之六大章法[J].成才之路,2007(2):60-61
[5]张亚红 .计算机程序设计课程理论教学方法探讨[J].中国科技信息,2007(19):250-251
Scientific TeachingM ethod on Computer Programm ing Courses
PENG Zhen
(Computer department,North China Institute of Science and Technology,Yanjiao Beijing-East 101601)
W ith the aim to teach better computerprogramming courses and cultivate excellent software talents,the paperproposed the scientific teachingmethod to computerprogramming courses.The scientific is to find out the contradictions and the laws in the programming cources and solve these problems in the most appropriate ways.Combined with the practical teaching experience,three scientific methods in programming teachingwas proposed that are to train the ability to analyze problems,foster the logic thinking ability and instruct computer language on the basis of the purpose,nature,status and conflicts of the courses.
programming;scientific teachingmethod;ability to analyze problems;logical thinking ability;computer language
G642.0
A
1672-7169(2010)04-0097-04
2010-9-13。
彭珍 (1981-),女,山东东明人,华北科技学院计算机系教师。