APP下载

二本院校非计算机专业C++程序设计教学方法和策略

2013-08-15

中国科技信息 2013年3期
关键词:面向对象程序设计计算机专业

江 波

淮阴工学院计算机工程学院,江苏省淮安市 223003

引言

程序设计语言的教学是高等学校计算机基础教学中的一个重要组成部分,对于培养学生的逻辑思维能力、使用现代信息技术解决实际应用问题的能力具有重要的作用,同时也是全国和各省计算机等级考试二级的主要考核内容。C++作为一门重要的程序设计语言受到了很多高校的重视,除了计算机专业外,很多理工科专业特别是通信工程、电子信息工程、信息与计算科学等也大都采用C++作为学生的入门编程语言。C++语言还是电子信息类专业很多后续专业课程的基础,如数据结构、数学建模、操作系统、自动控制、单片机与嵌入式系统等。同时C++也是ACM国际大学生程序设计竞赛的主流编程语言。但相对于其他的计算机等级考试语言Visual Basic,VisualFoxpro,C和Java,C++具有很大的学习和使用难度,教学效果往往不佳, 从我校的调查结果看,历年来C++等级考试的通过率都明显低于其他编程语言。本文将从学生的现状和特点出发,深入分析影响大学非计算机专业C++教学效果的因素并给出相应的建议。

1 学生的基本情况和特点

作为普通二本院校,学生的基础相对薄弱,很多学生以前从未接触过程序设计,部分学生即使在高中学过一些简单的程序设计,但由于信息技术课程不是高考科目,很多中学不太重视,因此大部分学生对程序设计只具有一些表面上的粗浅认识,不具有实际的编程技能。而对于非计算机专业的大学生而言,这个问题更加突出,很多学生认为这门课程不是他们的专业范畴,从思想上缺乏足够的重视。

2 教学方法和策略

针对学生的实际情况,应该充分思考C++程序设计课程在非计算机专业教学体系中的地位和作用,和学生多交流,首先要从思想上提高学生的重视程度,同时为了切实的加强教学效果,作为教师还应该思考非计算机专业学生和计算机专业学生的不同点,在教学过程中加强对影响非计算机专业C++教学效果的因素的探索,采用因材施教的策略。

2.1 上课时应该立足基础知识的讲解。C++是一门非常复杂的语言,语法现象繁杂,知识点非常丰富,且知识更新较快。在教学中应该遵循80%~20%的原则,也就是最重要的和最常用的知识往往只占有20%的比重,而剩下的80%的知识点则不是很常用。作为教师应该向学生讲解这些最重要的知识点,如基本的数据类型、基本的运算符、基本的流程控制语句,指针和引用的概念、函数的概念、递归调用、类和对象的基本概念、公有继承、多态性、函数模板和类模板等。而其他一些不该太常用的细节性知识点则完全可以布置学生自学、不必在课堂上讲解。如函数的默认参数、内联函数、指向二维数组的指针、函数指针、多重继承等。否则学生在学习的过程中会陷入到细节的漩涡中,只见树木不见森林,且学习的过程中不易把握重点,同时也增加了学习负担,最终造成学生的厌学。这一原则对于非计算机专业的教学更加重要,非计算机专业学生学习编程的目的在于掌握C++解决本专业相关的实际应用问题,因此不要面面俱到,够用就好。同时很多高校都在精简课时,把握重要知识的教学能够保证在较少的课时内达到更好的教学效果。

2.2 使用免费的且较新的集成开发环境。长期以来,我国大部分高校的C++程序设计教学和实验环境仍然使用Visual C++ 6.0版本。使用该软件的一个重要原因是首先该版本的软件在我国流行广泛,有很多的技术资料和图书可供学习和参考,学习和使用较为方便。另一个重要原因是我国的计算机等级考试采用该版本,因此日常教学也不得不使用该软件以应对考试。但是随着大学计算机基础教学的改革应该采用更新的教学和实验环境,理由如下。首先,Visual C++ 6.0作为上世纪末推出的发行版,不能够很好的支持C++国际标准,不利于培养学生编写出符合标准规范的C++程序;其次该软件是一个商业软件,而大部分高校的实验室和机房安装的都是盗版软件,存在版权问题;第三,该软件由于发布时间太长,不支持较新的Windows 7,Windows 8以及Windows Vista操作系统,在这些系统上安装和运行该软件会出现各种问题。因此建议采用较新的C++编译环境,可以采用微软的Visual C++2005/2008/2010等,这些软件提供了免费的express版本,既不存在版权问题,同时可以更好的支持C++国际标准,并且能够支持较新的Windows操作系统,作为教学和个人使用完成能够胜任需求。除了微软的免费C++环境外,还可以采用Cgywin等开源编译器,配套可以使用Eclipse等构建成一套开源的集成开发环境。这类软件同样支持最新的C++国际标准,同时和微软环境相比,还具有体积小巧易于使用等特点,且不需要安装庞大的.netframework,可移植性好,值得在高校大力推广。除了基于Windows系统学习C++,还可以在Linux等开源系统中学习和使用C++,绝大多数的Linux发行版中已经默认安装了gcc和g++编译器,可以编译C和C++程序,配合Linux系统中的vi编辑器可以实现一套完整的集成开发环境。当然,从计算机等级考试的角度,教师可以花适当的时间向学生介绍Visual C++ 6.0的基本使用。

2.3 首先将C++作为一个更好的C(C++ is first a better C)来使用,然后再过渡到面向对象的程序设计教学。有些教育界人士[1]认为C和C++是两种不同的程序设计语言,可以直接学习C++,而不需要先学习C,因此这类教材在编排上直接向学生灌输面向对象程序设计的思想。在学生还不清楚编程是怎么回事的情况下提出了一大堆面向对象程序设计的术语,如类、对象、继承、派生等,教学效果可想而知。这种观点可能来源于Java语言的教学思想,但实际上Java和C++是两种不同的编程语言,在Java中任何事物都是对象,所以即使编写一个简单的Hello World程序,都需要编程者了解面向对象的基本思想,这实际上增加了学习的难度,容易造成学生的危难情绪;而C++语言和C语言密切相关,C++语言完全兼容C(从0x11国际标准开始C++不完全兼容C),且C++中包含了面向过程编程和面向对象编程两种编程模式。先学习C++的面向过程的程序设计(与C兼容部分)有利于学生尽快掌握程序设计的基本思想和流程,对进一步学习C++的面向对象程序设计起到了很好的铺垫。同时这样的教学安排将C++中的难点进行了分散,有利于学生的学习和掌握。从另一个角度来说,面向对象的程序设计和面向过程的程序设计也不是对立的。在面向对象程序设计中,类中的方法本质上就是函数,设计的思想仍然遵循程序=算法+数据结构的模式。熟悉掌握面向过程的程序设计方法对于学习面向对象的程序设计能够起到促进作用。此外,通过这种教学模式,学生实际上掌握了两种编程语言(C和C++),在随后的计算机等级考试中学生可以根据情况选择参加C或者C++考试,并有利于学生参加全国计算机等级考试三级的上机考试(C程序设计)。从前几年的经验来看,很多采用面向对象模式教学的学生在参加计算机三级考试时,往往在C语言的上机考试部分栽跟头。

2.4 加强实验教学的力度和效果。C++本质上不是一门原理性课程而是一门实践课程。通过实验教学可以提高学生的编程能力以及解决实际问题的能力。和文科专业不同。电子信息类专业以及信息与计算科学的学生毕业后很多都从事和计算机相关的工作,提高他们的编程能力对于提高他们的就业能力具有重要的作用;对于选择继续考研的学生,编程能力也是一个非常重要的技能,所以加强实验教学的力度对于学生今后的发展具有重要的意义。从本科专业的学习来说,这些专业会涉及大量的数学计算,目前大部分高校都采用MATLAB作为实验平台,该软件同样存在版权问题或者购买成本太高,因此可以采用免费或开源的C++编译环境来代替。具体到实验课时的安排,一般可以将C++的理论课和实验课的课时比例安排在2:1或者1:1,另外在课余应该保证学生有充足的上机时间进行编程训练。在实验项目的选择上,应该适当增加面向过程部分的课时。理由有二:首先面向对象过程的程序设计部分是整个C++学习的基础,这部分掌握的好坏对于面向对象程序设计的学习有很大的影响,同时也会影响到学生的学习信心;其次:面向对象程序设计的初衷是解决软件危机,也就是复杂软件项目开发的可控性,而作为非计算机专业学生的编程入门学习,一般很难涉及复杂度太大的程序,因此面向对象的设计方案意义不大。对于非计算机专业,面向对象程序教学的作用在于引导学生熟悉面向对象的程序设计思想,熟悉C++中相应的基本语法,但在实验安排上不必花太多的时间。

2.5 关于教材的选择。

选择一本好的教材对于提高教学质量以及学生学习效果具有很重要的作用。但各种教材编写的出发点以及适用人群不尽相同。有些教材更多的面向重点高校的计算机专业学生,这类教材的特点是体系结构完整,面向对象设计的思想方法介绍的比较深入,且包含了很多前沿的C++内容,如STL(标准模板库)[1];有些教材则更多的面向计算机等级考试,以考试通过率为出发点,较好了分析了考试的题型和解题要点。从二本非计算机专业学生的实际情况出发,最好选用先面向过程、后面向对象的传统教学方式[2],要求突出基础知识,例题和习题难度适中,同时语言简洁流畅,图文并茂;每个例题都要用运行结果,以便于学生上机实验和模仿;最好配套有电子教案ppt,便于教师教学。另外考虑到C++的实验教学,最好能有配套的实验教材,提供详细的实验步骤和操作流程,采用先例题后上机实验的写作方式。教学实践表明,谭浩强教授的C++程序设计系列教材在实际教学中效果较好[3]。

2.6 学时安排策略。相关的非计算机专业包含了信息与计算科学、物联网工程、通信工程、信息管理与信息系统等,其中信息管理与信息系统隶属于管理类学科,其他专业属于工科。因此在教学设计和学时安排上应该有所调整。对于管理类学生原则上严格遵循计算机等级考试的范围讲解,不易太多扩展,而工科学生可以根据学时在讲解基本知识的基础上适当讲解C++中的特色知识点,如简单的STL或者一些开源的GUI设计框架,如QT、GTK等。建议的学时安排为管理类理论48+实验24,工科类理论64+实验32。

2.7 考试改革。传统的C++程序设计课程考试模式为闭卷笔试。这种考试方式的特点是注重语法考核,强调知识点的记忆,对实际编程能力检测能力较弱。近年来逐步改为在线考试,考试题目来源于预先构建的试题库。考试的题型包括传统的选择题、填空题和判断题,以及较新的程序阅读填空,但没有采用完全独立编程的方式。这有利于计算机自动阅卷,但仍不能真实的体现学生的编程水平,因此可以借鉴全国计算机等级考试的模式,加大程序阅读填空的分量,同时添加程序阅读改错以及完全独立编程的试题比重,从而更好的引导学生学习。除此之外,可以加大平时实验的考核比重,如期末成绩占总分的70%,平时实验占总分的30%。

3 效果

遵循以上的教学原则和经验,通过几年来对信息与计算科学、物联网工程、通信工程、信息管理与信息系统等多个非计算机专业的教学实践,收到了较好的教学效果。学生普遍克服了心理障碍,增强了学习信心,提高了学习兴趣,部分同学喜欢上了程序设计,并在考研时选择了计算机专业;另外有部分同学坚持在课余进一步学习C++或者其他编程语言,并在学校和淮安市组织的大学生程序设计大赛中获奖;这几年学生对任课教师的评教也很高,多年来一直是优秀。

4 结语

C++是一门重要的基础课程,对后续专业课程的学习具有重要的意义。本文从二本院校非计算机专业角度出发,根据多年的教学经验谈了一些肤浅的经验和体会,希望能够对从事C++教学的教师提供一些借鉴。当然,不同学校有不同的特点,今后应该进一步听取学生的意见和建议以便取得更好的教学效果。

[1]钱能.C++程序设计第二版[M].清华大学出版社,2005

[2]钱能.C++程序设计教程修订版[M].清华大学出版社,2009

[3]谭浩强.C++程序设计[M].清华大学出版社,2004

猜你喜欢

面向对象程序设计计算机专业
GEE平台下利用物候特征进行面向对象的水稻种植分布提取
新工科背景下计算机专业创新创业人才培养探究
中职计算机专业产教融合混合式教学研究与实践
“以赛促学,以赛促教”促进计算机专业教学理念创新与实践研究
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
面向对象方法在水蓄冷PLC编程中应用分析
高职高专院校C语言程序设计教学改革探索
面向计算机专业的电路与模电教学方法研究
基于面向对象的车辆管理软件的研制与开发