您好, 访客   登录/注册

大学计算机专业C与C++程序设计语言开设探讨

来源:用户上传      作者:

  摘要:本文在比较分析了当前大学计算机专业C与C++程序设计语言的开设现状,以及C与C++语言异同的基础上,提出在大学计算机专业程序设计语言课程设置中直接开设C++的观点。并给出直接开设C++语言时的教学内容设置、教材选择参考和开设时间建议。
  关键词:C语言;C++语言;程序设计
  中图分类号:G642 文献标识码:B
  文章编号:1672-5913(2007)14-0022-02
  
  1引言
  
  大学计算机科学专业的程序设计语言课程,一般分为必修和选修两种。C和C++都作为必修课;而VB和Java等一般作为选修课。现在大多数高校计算机科学专业开设程序设计语言课程的顺序都是,先开C语言,再开C++语言。然而,我们在教学实践中发现,学生学习C语言程序设计,接受了“自顶向下,逐步求精”的模块化程序设计思想,在学习C++语言时,对C++语言的特色:类和模板所提供和支持的“自底向上”的面向对象程序设计思想,很难适应、理解、接受和掌握。同时,由于课时的压缩,两门语言都要开设,学时更显不足,致使学生两门语言课程都没有充分的时间学通、学透;更有甚者,正常的教学内容不能完成,学生一知半解、似懂非懂,课程的难点知识没有时间讲和学。这种结果直接影响后续课程(比如,数据结构)的学习;同时学生动手开发软件的能力也将受到影响。
  本文在分析比较C和C++程序设计语言异同的基础上,结合多年的教学实践经验,提出在大学计算机科学专业中,直接开设C++程序设计语言,不再开设C语言的观点。并根据作者的教学实践经验,给出直接开设C++时,教学内容、教材选择和开设时间的建议。
  
  2程序设计语言C与C++的比较
  
  2.1C与C++的共性
  C++是C的增强版,是在C的基础上增加了数据抽象和面性对象的程序设计这些新特点,很自然C++拥有C语言的基本功能。它支持结构化的程序设计,任何用C写的程序都可以在C++环境下运行。
  在C和C++语言中,标识符、变量、常量、基本数据类型、指针、表达式、运算符的优先级等的规定都相同。枚举类型和结构体类型的定义方法也相同。关系和逻辑运算、条件语句、循环语句这些控制流语句的定义和使用也都相同。C和C++中数组的定义和使用相同。函数的定义与调用基本相同,只是C++引入了引用参数。也正是由于引用参数的引入,使得C++的使用比C更方便。关于动、静态变量及其范围的规定在C和C++中相同。因此。可以说,C语言所拥有的功能,C++都有,而且也是C++的基本部分。但是,C++比C具有更强的功能,具有C所没有的特性――数据的抽象和支持面向对象的程序设计。同时,关于枚举变量,结构体变量的声明C++的语法约定更简洁方便。
  2.2C与C++的不同
  C与C++在程序设计的思想与规模、动态存储管理、文件使用、枚举和结构体类型、输入和输出,以及程序注释等方面存在差异。C++不仅具有C的所有功能,可以实现所有C语言所能实现的功能,而且C++的功能更强大,使用更简洁方便。因此,使用C语言设计程序所能解决的实际问题,使用C++语言设计程序也一定能够解决,而且实现起来更方便。
  2.3C++的特色
  C++最大的特色是提供了数据的抽象和实现数据抽象类型的机制――类,以及支持面向对象程序设计的封装、继承和多态等特性。由于类的出现,使得C++中的数据类型不再局限于系统所提供的固有类型,用户可以根据自己的实际需要设计创建新的数据类型。同时,由于类的使用,使得数据和操作被封装在具体的类中,实现了信息的隐藏。C++提供了两种构造新类的方法:继承和构成。这两种构造方法使得C++具有面向对象程序设计的特性。C++还提供了虚函数机制,这使得类的操作可以实现动态邦定。C++中的重载机制使得C++的使用更方便快捷和人性化。C++的模板使得C++具有多态特性。另外,C++的异常处理机制使得程序的调试变得容易和方便。还有C++的虚基类,使得它非常适合用来开发面向对象的程序。
  C++中的引用类型,使得函数的参数可以采用引用参数,避免了C语言中函数参数的单向值传递所带来的弊端。而且使用起来非常方便。
  C++还提供了作用域限定运算符(::),该运算符可用于解决名称冲突。还可用于指定标识符的有效范围,如名称空间中标识符的使用。
  标准C++还支持名称空间[3~5],除了系统提供的标准名称空间std外,用户还可以定义自己的名称空间。名称空间的使用给程序设计带来了很大的方便。
  C++的上述诸特色,显示了C++不仅能实现C程序设计语言所支持的结构化程序设计,而且还支持面向对象的程序设计。可以开发出更大更复杂的应用软件。
  以上C与C++的比较可见,C++的基本部分与C语言基本相同,而且C++的语法相对于C语言的语法更简洁方便易使用。因此,C++完全可代替C来完成程序设计,完全可以在大学计算机科学专业的本科生中直接开设C++程序设计语言课程,而不用先开设C语言,再开C++。这样,可以将节省出一部分学时分给C++课程,使得C++的学时更充足些,学生也掌握地更好些。
  
  3程序设计语言C与C++开设建议
  
  通过以上的分析比较,可见在高校计算机科学专业程序设计语言课程的开设中,可以不用开设C程序设计语言,而直接开设C++语言程序设计。
  C++的教学内容应该包括:基本知识部分:程序设计与问题解决概述;C++语法、语义以及程序开发过程;数值类型、表达式与输出;程序输入与软件设计过程;条件、逻辑表达式与选择控制;循环;函数;作用域和生命期;高级控制结构;固有数据类型和用户定义的简单数据类型。C++高级知识部分:结构体、数据抽象和类;数组;基于数组的表;面向对象的软件开发;指针、动态数据和引用类型;链结构;模板与异常;递归。
  C++课程开设时间放在一年级第二学期比较适宜。因为学生在第一学期已经学习了一些关于计算机的入门知识,对计算机科学有了一定的了解,这时开设C++程序设计语言,学生接受起来比较自然。而且直接学习C++语言,没有别的计算机语言的影响,学习起来更易于接受。C++的课时建议为周学时4,以保证学生有足够的学习、吸收和消化知识的时间。另外,这个学期开设C++可为学生后续专业课程(如,数据结构)的学习做铺垫。更重要的是作为计算机科学专业的本科生,在当前的形势下掌握C++这一通用的编成语言,不仅为将来的发展奠定良好基础;也为今后参与社会竞争打下坚实基础。
  以上观点的有效实施依赖于C++程序设计语言教材的选择。在选择教材时,必须选择适宜作为入门语言学习的C++教材。在此建议采用参考文献[3]中的教材――美国Jones and Bartlett Publishers出版的原版教材“Programming and Problem Solving with C++ (Third Edition/Fourth Edition)”。该教材知识讲述逻辑性强,内容安排循序渐进,讲解非常透彻清晰,是国内许多中文教材无法媲美的;而且没有任何先驱课程要求,学生学习起来很容易理解和接受,该教材是美国大学计算机及相关专业程序设计语言的入门教材,是美国最畅销的计算机科学教材,也是教育部推荐使用的计算机专业类影印版教材。作者在过去4年中使用该教材对计算机科学专业的学生讲授C++程序设计(双语教学)。4年以前作者曾多次讲授C语言程序设计。结合多年的教学实践,作者提出在大学计算机专业的程序设计语言课程设置中,直接开设C++程序设计语言的观点。关于教材的选择,也可选用其他一些翻译过来的国外优秀教材,如参参考文献[5]中的《C++大学教程》(第五版),该书是针对一学期的课程设置的,英文版在国外也是作为计算机专业的大学一年级教材;或者考文献[4]中的《C++核心思想》。作者的经验是最好选用国外原版教材,而且以参考文献[3]为最好。
  
  参考文献:
  [1] 谭浩强. C程序设计(第二版)[M]. 北京: 清华大学出版社, 1997.
  [2] 龚杰民, 金益民, 殷勇. 标准C语言程序设计及应用[M]. 西安电子科技大学出版, 1995.
  [3] Nell Dale, Chip Weems, Mark Heading. Programming and Problem Solving with C++(Third Edition)[M]. 美国: Jones and Bartlett Publishers, 2003.
  [4] [美]Cay Horstmann著, 晏海华等译. C++核心思想(第三版)[M]. 北京: 电子工业出版社, 2004.
  [5] [美]戴特尔等著, 张引等译. C++大学教程(第五版)[M]. 北京: 电子工业出版社. 2006.
  
  作者简介:谢娟英(1971-),女,陕西西安人,副教授,主要从事智能信息处理方面的应用研究。
  通信地址:陕西师范大学98# 邮编710062
  Tel: 029-85307830(home),13088965815
  E-mail: xiejuany@snnu.edu.cn
  资助项目:陕西师范大学“C++程序设计双语教学的研究与实践”评建项目(项目编号:992398)资助.

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