首页 > 范文大全 > 正文

信息类专业C/C++语言教学规划

开篇:润墨网以专业的文秘视角,为您筛选了一篇信息类专业C/C++语言教学规划范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:针对信息类专业中C/c++教材内容及教学计划编排中的不足,分析就业市场对C/C++软件开发人员的基本要求,提出加强重要知识点的教学力度,合理安排教学计划的建议,以提高学生的专业知识和技能水平,为成功就业打下良好的基础。

关键词:面向对象的程序设计;内存分配;封装;STL;多线程技术;软件工程

现代操作系统的诞生和发展与C语言是密不可分的,因此C语言是非常重要的程序设计语言。C++在C的基础上增加了面向对象的概念,从而具备了现代编程语言的一切特征。C和C++是密不可分的,在计算机软件领域,提到C或者C++时,实际上都是指C/C++。对于计算机及信息类专业的学生,甚或对计算机软件从业人员,C/C++无疑占据着无可替代的核心位置。和C/C++语言本身的重要性相比,目前大多数高校的C/C++课程设置和教学内容却相对落后,这和教材建设滞后相关,也和教材编著者缺少应用实践经验有很大关系。

程序设计是一门实践性非常强的课程,因此整个教学环节应该以应用为导向,以上机实验为手段,不断强化和巩固各种基本概念和核心技术,才能培养出能胜任实际工作的合格毕业生,让学生在走向工作岗位的第一天就具备很强的竞争力。

现在,计算机和网络已经非常普及,这为教学提供了极为方便的实践手段,与其他专业相比具有天然的优越性。然而,也正因为计算机和网络的普及,竞争也变得异常激烈,仅仅掌握一点基础知识,满足于完成课本作业,已无法适应当前的就业形势。如何在激烈的就业竞争中胜出,是每个大学生从入学第一天起就必须正视和严肃面对的问题,也是每个高校教育工作者需要不断思考和探索的重大课题。

1以C++为重点,强调面向对象的程序设计思想

目前,大多数高校信息类专业将C和C++作为

两门课程分开教学,并且主要以C语言为主,C++甚至成为选修课程。这一方面是出于课时划分的需要,另一方面也和当前流行的教材相关。这样的划分虽然秉承了C语言和C++语言的发展历程,却忽略了现实需求。现代程序设计以对象为基本概念,以面向对象的设计为核心思想。面向对象的程序设计应该是程序设计的起点和基本要求,没有对象这个概念,软件设计无从谈起。

但是和Java等纯面向对象的编程语言不同的是,C++语言一开始就继承或者说兼容了C语言的几乎全部特征。因此,它并不是一个纯面向对象的程序设计语言,这大大增加了它的复杂性。必须强调的是,C++语言的复杂性虽然增加了学生学习的难度,但是正因为它兼容了C语言的语法特征,使其具备了直接操作内存的能力,从而成为开发系统级软件和大型软件的不二选择,其重要性也是其他语言不能比拟的。掌握了C/C++,就等于拥有了通向软件设计领域的金钥匙。另一方面,所有的程序设计语言都是相通的,掌握了功能强大、既能接近系统底层又具有高级语言全部特征的C/C++程序设计语言,再学习其他高级语言就会轻车熟路。

合理分配C和C++的教学时间,将重点转向C++,是一个艰难但重要的选择。这需要好的教材,也需要好的教学计划。C和C++是分不开的,不应该将其割裂开,要从起点就强调面向对象的概念。

在教材内容设置上,可以分为基础篇和高级篇,这样既利于学生循序渐进,也利于学时划分。基础篇应包括C和C++的基本概念和语法,如基本数据类型、指针、函数、类的基本概念,对象的生命周期、对象的内存映射等。高级篇应包括类的高级特征和复杂应用,并以最新的C++标准为基础,培养学生解决复杂和实际问题的能力。如何合理划分教学内容,需要不断地探索。高级篇的内容可以集中教学,也可以作为其他课程的实践部分进行。

2以内存分配和管理为核心,强化专业训练

由于具备了直接操作内存的能力,C/C++语言的功能变得十分强大,复杂性也大大增强。内存概念应该是编程学习和实践的核心,是教学与实践的重中之重。和内存相关的主要概念有:指针、引用、数组、结构、对象生命期、栈、堆、函数参数传递等。

现实中使用某软件时,经常会遇到“程序崩溃”现象。这几乎都是由于不当的内存访问引起的,其本质原因是程序中存在严重的逻辑错误。在编译时,编译者不一定能够及时发现这些错误,但在运行时,当错误逻辑被触发时,很有可能造成内存混乱,从而引起非法地址访问,进而导致程序崩溃。这种错误比一般的业务逻辑错误导致的计算结果不正确等问题更隐蔽、更致命。一个专业的程序员,必须在编写代码阶段就保证代码的高质量,不应该等出现问题再进行查找和排除。因此,在整个程序设计教学中,必须加强内存概念的理解,并不断地训练和巩固。

每个变量所代表的对象,无论是基本数据类型还是复杂对象,运行时都需要实例化,都需要占用内存。内存是何时分配的?分配了多少?何时释放?栈内存和堆内存的区别是什么?对象生命周期的本质是什么?函数调用的本质是什么?参数是如何传递的?函数返回值的本质是什么?这些问题在当前的教学中常常被忽略,而实际上,它们是每个合格的程序员必须深刻理解和准确回答出的问题。因为不理解这些概念,就不可能编写出正确高效的代码,设计出来的程序也一定是存在隐患甚至是错误百出的。在教学中,应该加强培养学生在这方面的专业素养。

3强调程序结构和高效封装,为职业级开发作准备

简单来说,程序的流程无非顺序、分支、循环三种。任何复杂、大型的程序,也是这些基本流程组成的。但是,编写程序时如何划分结构,合理地编写函数,做到代码的复用,用以上几种简单流程组合出一个结构清晰而又效率很高的程序,是考验编程者水平的关键,也是任何编程语言开发程序员都要面临的问题。不过,由于C/C++语言大多用于大型软件以及系统级软件的开发,强调程序结构的重要性显得更为迫切和必要。

编写程序就如同建筑师设计摩天大楼一样,既需要严谨的结构,也需要艺术性的加工。好的程序代码,阅读起来就像欣赏艺术品,给人美的享受。而劣质的程序,完全看不出编写者的思路,混乱复杂,这样的程序即使能够正确执行,也没有任何生命力。

现代编程技术强调的是高效性和可读性的结合。在不影响总体效率的情形下,以结构清晰、高可读性为第一要素,而强调封装正是这一要求的具体体现。所谓封装,有两个层次,一是函数的封装,二是对象的封装。函数封装主要是指将某个单一功能封装在一个函数内部。合理的函数功能定义有利于写出结构清晰的程序,有利于代码的复用,而将不相关的代码一股脑儿堆在一起,写出超大函数,则是函数封装的大忌。对象的封装就更重要了,这是面向对象程序设计中的核心问题。对象概念要定义清晰、明确,成员函数要功能单一,除非有充足的理由,所有成员变量都应设为私有,对象和外界打交道的唯一途径就是公共成员函数。封装对程序的维护至关重要,是现代程序设计的第一要素。

4掌握STL,理解和使用核心数据结构

标准模板库(Standard Template Library, STL)早已成为C++的标准。在商业软件开发中,它们是每个程序员都要时刻使用和深度掌握的,重要性不言而喻。

在数据结构课程中,学生会接触到栈、队列、链表、集合、映射、树、哈希表等常见数据结构。理解和掌握这些概念,对于简化程序设计,提高程序效率,程序的标准化、模块化设计至关重要。

大多数教材会将C/C++作为教学语言,来讲解这些基本的数据结构。自己动手编写简单的代码并实现,有利于概念的理解和掌握。但在商业开发中,必须使用成熟的已成为C++标准的STL,作为这些数据结构的标准实现。要掌握和使用STL,首先要深度理解模板技术。模板技术是编程技术发展过程中的一次革命,它的出现极大地提高了代码的复用程度,同时保持了程序的效率。它和面向对象的技术相辅相成,类似而又不同,掌握好这两项技术就迈进了C++编程的核心领地。

5重视高级概念

目前,多核技术得到了普通应用,互联网早已普及到千家万户。在软件开发中,开发人员必须掌握多线程技术和网络技术,因此教师要着力加大这方面的教学,使学生的知识技能水平跟上时代的步伐。

多线程技术属于编程中的高级领域,对开发者要求较高。要掌握好多线程技术,必须有扎实的基本功,要深刻理解同步、事件等重要概念。在教学上,教师可结合操作系统等课程进行教学。

网络编程涉及到的知识也比较多,教师可配合计算机网络等进行教学。以前,这一领域显得比较高深,随着网络的普及,学生对许多概念都有感性的认识,在此基础上进行专业训练,已没有太多难度。

另外,数据库操作也是软件开发中必备的技术,教师可以结合数据库课程展开教学。

除了以上几点,和平台相关的一些技术,如Windows平台下的窗口、消息、注册表等技术,以及类Unix平台下的进程管理、进程间通信、文件系统等,也是非常重要的。对这些高级技术的学习不能仅停留在语言层面,要进一步熟练掌握,这对于立志进入软件开发行业的学生非常重要。

6重视职业接轨,强调软件工程

开发软件,不仅仅是写代码。写代码仅是其中的一个环节。一个完整的产品或项目开发过程,都要经历需求分析、方案设计、代码编写、系统测试、产品部署、产品维护等各个环节。要加强在各个环节的训练,提高职业素养,学生才能在就业竞争中占得先机,才能在工作岗位上快速进入状态。

这些训练可以安排在高年级,特别是毕业设计阶段来实施。教师要锻炼学生用学到的知识和技能解决实际问题的能力,要提高学生分析问题的能力,提高其综合设计水平。要训练和提高学生使用集成开发环境的能力、编译调试程序的能力、书写规范文档的能力、团队合作开发的能力。通过这些系统的训练,学生就基本完成了从学业到职业的接轨。

7结语

C/C++语言在计算机相关专业的教学中占据着及其重要的地位,在学生的就业技能储备中更是排在了十分优先的位置。因此,C/C++语言教学必须紧密结合实际,针对企业对员工知识水平的真实需求,在教学内容及课时分配等环节上进行重大而科学的调整,才可避免教育和就业需求之间的脱节。在教学内容的调整上,参考文献[1]至[4]等提供了十分重要的素材,本文中提到的几个方面则是重中之重。

参考文献:

[1] Scott Meyers. Effective C++中文版[M]. 侯捷,译. 武汉:华中科技大学出版社,2001.

[2] 侯捷. STL源码剖析[M]. 武汉:华中科技大学出版社,2002.

[3] Thomas H Cormen, Charles E Leiserson, Ronakd L Rivest,et al. 算法导论[M]. 潘金贵,顾铁成,李成法,等译. 北京:机械工业出版社,2007.

[4] Cay S. Horstmann,Gary Cornell. 最新Java 2 核心技术[M]. 王建华,董志敏,杨保明,等译. 北京:机械工业出版社,2003.

Research on C/C++ Language Teaching Planning For Information Major

ZHAO Gui-qin

(Technical School, Shanghai Jiao Tong University, Shanghai 201101, China)

Abstract: Current C/C++ teaching materials and plans in information major of most universities are far away from the basic requirements to the C/C++ software developers in market. This article presents that object-oriented programming, memory allocation and management, program encapsulation, STL, multithread, software engineering practice are necessary in teaching practice. These advances are useful for improving the adaptability of graduates to their first job.

Key words: object-oriented programming;memory allocation; encapsulation;STL; multithread; software engineering