程序设计教程—用C++语言编程
作者 : 陈家骏 郑滔
出版日期 : 2004-08-30
ISBN : 7-111-14677-8
定价 : 32.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 350
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本教程以C++作为实现语言,介绍了基本的程序设计思想、概念和技术,意图使读者通过阅读,再加上必要的训练和实践,掌握程序设计的规律和步骤。所介绍的具体内容包括:数据类型、表达式、循环、子程序、递归、类/对象、继承、类属、输入/输出以及异常处理等。
  本教程对于程序设计初学者和具有一定设计经验的技术人员均有相当高的使用价值。

图书特色

图书前言

随着计算机应用领域的不断扩大、应用层次的不断加深,社会对计算机软件的需求急剧增长,这就导致了软件的规模不断扩大、复杂程度不断提高。如何设计出大量的满足用户需求的高质量软件是软件工作者所面临的严峻挑战。
  计算机程序是由计算机来执行的。这就使得计算机程序的编制(程序设计)不能完全以人的思维模式和习惯来进行,它往往要受到计算机解决问题的方式和特点的限制。除此之外,要编制出解决各种问题的程序,程序设计者往往还需要了解与问题领域有关的知识。这些都给程序设计带来一定的难度。
  有人认为程序设计是一门艺术,而艺术是基于人的灵感和天赋的。对于一些小型程序的设计而言,上述的说法可能有一些道理。但是,对于大型的、复杂的程序设计问题,灵感和天赋是不能很好地解决问题的,几十年的程序设计实践已证明了这一点。不可否认,程序设计需要灵感和天赋,它们往往在程序的一些局部设计上发挥着作用。但从总体上讲,程序设计是一门科学,它是有规律和步骤可循的。通过对程序设计的基本思想、概念和技术的学习,再加上必要的训练和实践,程序设计的规律和步骤是可以掌握的。
  从程序设计的发展历史来看,程序设计经历了从采用低级语言到采用高级语言、从以编码为中心到涉及软件生存周期的软件工程、从过程式到面向对象的发展过程。这一过程体现了人们对程序设计活动的不断认识和改进的过程,特别是从过程式程序设计到面向对象程序设计的发展,体现了人们对以自然的方式来描述和解决问题的需求,它使得解题过程更接近于人的思维方式。
  本教程以介绍基本的程序设计思想、概念和技术为中心,强调了数据结构、算法、过程抽象以及数据抽象等重要的程序设计思想。所介绍的具体内容包括数据类型、表达式、循环、子程序、递归、类/对象、继承、类属、输入/输出以及异常处理等。虽然本教程介绍的大部分程序设计思想、概念和技术是与语言无关的,但离开了具体的实现语言,很多内容会显得太抽象,无法体现具体实施过程及其所产生的实际效果。因此,本教程选择C++作为程序设计的实现语言。
  关于C++语言是否适合作为介绍程序设计时的实现语言,目前存在不同的看法。有人认为C++太灵活,以致会使得初学者感到无所适从。本教程之所以选择C++语言作为实现语言,首先是因为C++语言是一种流行的高级语言,很多人都在用C++编写实际的程序;其次,C++支持大部分基本的程序设计思想、概念和技术,其中包括对过程式及面向对象两种程序设计范型的支持。再有,与其他高级语言相比,C++语言具有简洁、灵活和高效等特点,这使得一些程序设计思想、概念和技术能够更好地实现。本教程以介绍基本的程序思想、概念和技术为主旨,C++服务于这个主旨,而不是相反,这样,初学者在使用C++时能够做到有的放矢。因此,本教程对C++的一些特殊的、用于解决非主流的程序设计问题的成分和技巧不予重点介绍。特别地,本教程对一些属于C++语言“文化”范畴的内容不予过分强调。另外,由于篇幅有限,本教程也不对属于C++标准库的内容做详细介绍。
  本教程既适合于程序设计的初学者使用,同时,对具有一些程序设计经验的人也有一定的参考价值。
  本教程的内容分成两大部分:第1章至第5章为第一部分,它们主要对一些基本的程序设计思想、概念和技术以及过程式程序设计的基本内容进行介绍;第6章至第12章为第二部分,它们重点介绍面向对象程序设计的基本内容。
  第1章介绍一些与程序设计有关的计算机基础知识,包括计算机的工作模型、软件开发的基本过程、程序设计范型、程序设计语言等内容。另外,还对C++的基本特点和词法进行了介绍。
  第2章对作为程序主要成分之一的数据及其基本操作进行介绍,包括基本数据类型、常量、变量、操作符及表达式等内容。
  第3章介绍程序的基本流程控制,包括顺序、分支及循环等控制结构,重点对循环程序设计进行了深入的阐述。另外,还对程序设计风格及结构化程序设计概念进行了介绍。
  第4章重点介绍一种重要的程序抽象机制:子程序,并介绍了子程序对功能分解、逐步精化程序设计技术的支持。内容包括过程抽象、子程序的参数传递机制、变量的局部性与生存期、标识符的作用域、递归以及函数名重载等概念。另外,还对基于多种环境的程序编写和程序调试技术进行了简要介绍。
  第5章介绍用于程序自定义类型的数据类型构造机制,包括枚举、数组、结构与联合、指针和引用等。其中,重点讨论了指针类型的作用和使用原则。
  第6章对作为面向对象程序设计核心内容的数据抽象机制—类/对象进行介绍。主要内容包括:什么是面向对象程序设计、面向对象程序设计的优势、类的定义、类成员的访问控制、对象的初始化和消亡处理、常量成员、静态成员以及友元等。
  第7章介绍程序设计语言的一种重要的多态机制—操作符重载。主要内容包括:操作符重载的必要性和基本原则、操作符重载的方法以及对C++语言的一些特殊操作符的重载。
  第8章介绍面向对象程序设计对软件复用的支持机制—继承。主要内容包括:继承的作用、单继承、继承方式、虚函数(成员函数的动态绑定)、抽象类、多继承以及面向对象程序设计对模块的支持。
  第9章重点介绍类属(泛型)程序设计的基本内容,包括函数模板和类模板。
  第10章对程序的输入/输出操作进行介绍。主要内容包括:基于I/O函数库的过程式的输入/输出和基于I/O类库的面向对象的输入/输出。
  第11章对C++的能够提高程序鲁棒性的异常处理机制进行介绍。
  第12章基于MFC类库,介绍了面向对象的Windows应用程序基本框架,让读者从中体会面向对象程序设计思想和技术的实际应用。
  本教程中加“*”标记的节在初次阅读时可以跳过。
  本教程的编写和完成得益于多方的帮助。首先,要感谢郑国梁教授对本教程编写工作的精心指导。在教程内容的选取、安排、用语的规范性等方面,郑老师都事无巨细地加以考虑,并检查了全文(包括教程中的每个例子程序)。正是在郑老师的长期熏陶下,作者获得了编写本教程所必备的专业知识和专业素质。其次,非常感谢尹存燕老师和戴新宇博士在本教程习题的设计和文字易读性方面所做的大量工作;感谢孙明欣同学对教程内容所做的检查工作,特别是对本教程初稿中一些概念上的模糊与谬误、内容安排的合理性与易读性以及在遵守C++标准规范方面所提出的建议;感谢胡昊博士和徐锋博士,作者对一些基本概念的理解是在与他们就相关问题的讨论中获得的。另外,还要感谢机械工业出版社的温莉芳女士对本教程编写工作的鼓励和支持。
  最后,要感谢我们的家人对本教程编写工作的理解和支持。感谢所有为本教程编写工作提供支持与帮助的人们。
  由于作者水平有限,加之时间仓促,书中内容的错误和疏漏在所难免,恳请读者不吝指出,以便于我们在今后的版本中进行改进。具体联系方式是:陈家骏,南京大学计算机科学与技术系,E-mail:chenjj@nju.edu.cn;郑滔,南京大学软件学院,E-mail:zt@nju.edu.cn。

作者简介

陈家骏 郑滔:陈家骏: 男,1963年生。于南京大学获博士学位,现为南京大学计算机系教授,博士生导师。主要从事软件工程和自然语言处理领域的研究工作,曾多次参加国家/省科技攻关项目、国家/省自然科学基金项目和国家863高科技项目的研究与开发,研究成果多次获得省部级科研奖励。具有多年的实际软件开发和程序设计课程教学的经历。目前正在主持国家863项目“奥运多语言智能信息服务系统关键技术及示范系统研究”中的“受限领域日汉机器翻译技术研究”子课题的研究与开发。点击进入[URL=http://cs.nju.edu.cn/people/chenjiajun/index.html]作者主页[/URL]。
郑滔: 男,1966年生。于南京大学获硕士学位,现为南京大学软件学院副教授。主要从事软件工程和嵌入式系统领域的研究工作。曾多次参加国家/省科技攻关项目、国家/省自然科学基金项目和国家863高科技项目的研究与开发,研究成果两次获得部级科技成果二等获。具有多年从事实际软件开发和程序设计以及编译技术课程教学的经历。目前正在主持手持智能设备的研究与开发。

图书目录

第1章  概述
1.1  计算机的工作模型
1.1.1  硬件结构
1.1.2  软件
1.2  程序设计
1.2.1  程序设计范型
1.2.2  程序设计语言
1.2.3  程序设计的步骤
1.3  C++语言
1.3.1  C++的特点
1.3.2  C++程序的基本结构
1.3.3  C++语言的词法
1.3.4  C++程序设计环境
1.4  小结
1.5  习题
第2章  基本数据类型和表达式
2.1  数据类型概述
2.2  C++基本数据类型
2.3  数据的表现形式
2.3.1  常量
2.3.2  变量
2.3.3  变量值的输入
2.4  操作符(运算符)
2.4.1  算术操作符
2.4.2  关系与逻辑操作符
2.4.3  位操作符
2.4.4  赋值操作符
2.4.5  其他操作符
2.5  表达式
2.5.1  表达式的构成与分类
2.5.2  操作符的优先级和结合性
2.5.3  表达式中的类型转换
2.5.4  表达式的副作用问题
2.5.5  表达式结果的输出
2.6  小结
2.7  习题
第3章  程序的流程控制—语句
3.1  语句的分类
3.2  表达式语句
3.3  复合语句
3.4  选择语句
3.4.1  if语句
3.4.2  switch语句
3.5  循环(重复)语句
3.5.1  while语句
3.5.2  do-while语句
3.5.3  for语句
3.5.4  三种循环语句的使用原则
3.5.5  循环程序设计实例
3.6  转移语句
3.6.1  break语句
3.6.2  continue语句
3.6.3  goto语句
3.7  空语句
3.8  程序设计风格
3.8.1  结构化程序设计
3.8.2  关于goto语句
3.9  小结
3.10  习题
第4章  过程抽象—函数
4.1  子程序
4.1.1  过程抽象
4.1.2  子程序间的数据传输
4.2  函数
4.2.1  函数的定义
4.2.2  函数的调用
4.2.3  函数的参数传递
4.3  变量的局部性
4.3.1  全局变量与局部变量
4.3.2  变量的存储分配(生存期)
*4.3.3  基于栈的函数调用的实现
4.3.4  C++程序的多模块结构
4.3.5  标识符的作用域
4.3.6  名空间(namespace)
4.4  递归函数
4.4.1  递归函数的定义
4.4.2  递归函数的作用
4.4.3  递归与循环的选择
4.4.4  递归函数实例
4.5  函数名重载
4.6  带缺省值的形式参数
4.7  内联函数
4.8  条件编译
4.8.1  基于多环境的程序编制
4.8.2  程序调试
4.9  标准库函数
4.10  小结
4.11  习题
第5章  构造数据类型
5.1  枚举类型
5.2  数组类型
5.2.1  一维数组
5.2.2  二维数组
5.2.3  数组的应用
5.3  结构(struct)与联合(union)
5.3.1  结构
5.3.2  联合(共同体)
5.4  指针类型
5.4.1  指针的基本概念
5.4.2  指针作为形参类型
5.4.3  指针与动态变量
5.4.4  指针与数组
5.4.5  函数指针
*5.4.6  多级指针
5.5  引用类型
5.6  小结
5.7  习题
第6章  数据抽象—类
6.1  从面向过程到面向对象
6.1.1  什么是面向对象程序设计
6.1.2  为什么要面向对象
6.1.3  面向对象程序设计的基本内容
6.2  类的定义
6.2.1  数据成员
6.2.2  成员函数
6.2.3  成员的访问控制:信息隐藏
6.3  对象
6.3.1  对象的创建和标识
6.3.2  对象的操作
6.3.3  this指针
6.4  对象的初始化和消亡前处理
6.4.1  构造函数与析构函数
6.4.2  成员对象的初始化
6.4.3  拷贝构造函数
6.5  const成员函数
6.6  静态成员
6.7  友元
6.8  小结
6.9  习题
第7章  操作符重载
7.1  操作符重载的必要性和基本原则
7.2  作为成员函数重载操作符
7.3  作为全局(友元)函数重载操作符
7.4  几个特殊操作符的重载
7.4.1  赋值操作符=
7.4.2  数组元素访问操作符(或下标操作符)[]
7.4.3  类成员访问操作符->
7.4.4  动态存储分配与去配操作符new与delete
7.4.5  自定义类型转换操作符
7.4.6  函数调用操作符()
7.5  小结
7.6  习题
第8章  继承—派生类
8.1  继承的概念
8.2  单继承
8.2.1  单继承的定义
8.2.2  在派生类中对基类成员的访问
8.2.3  继承方式
8.2.4  派生类对象的初始化和赋值操作
8.2.5  单继承的实例
8.3  虚函数
8.3.1  多态性
8.3.2  虚函数
8.3.3  纯虚函数和抽象类
*8.3.4  虚函数动态绑定的实现
8.4  多继承
8.4.1  多继承的必要性
8.4.2  多继承的定义
8.4.3  名冲突
8.4.4  重复继承—虚基类
8.5  类作为模块
8.5.1  类模块的组成
*8.5.2  Demeter法则
8.6  小结
8.7  习题
第9章  类属机制—模板
9.1  函数模板
9.2  类模板
9.3  模板的复用
9.4  小结
9.5  习题
第10章  输入/输出(I/O)
10.1  概述
10.2  控制台I/O
10.2.1  基于I/O函数库的控制台I/O
10.2.2  基于I/O类库的控制台I/O
10.3  文件I/O
10.3.1  基于I/O函数库的文件I/O
10.3.2  基于I/O类库的文件I/O
10.4  字符串I/O
10.5  小结
10.6  习题
第11章  异常处理
11.1  异常的概念
11.2  C++异常处理机制
11.2.1  try、throw以及catch语句
11.2.2  异常处理的嵌套
11.3  小结
11.4  习题
第12章  实例—面向对象的Windows应用程序框架
12.1  Windows应用程序的基本结构
12.1.1  应用程序的用户界面
12.1.2  消息驱动的程序结构
12.2  MFC类库(Microsoft Foundation Class library)
12.2.1  面向对象的Windows应用程序结构
12.2.2  MFC对面向对象的Windows应用程序的支持
12.2.3  Visual C++的应用向导(AppWizard)和类向导(Class Wizard)12.3  小结
12.4  习题
例子索引
图表索引
参考文献
附录  ASCII字符集及其编码

教学资源推荐
作者: 赵宏,陈旭东,马迪芳
参考读物推荐