易学C++

分類: 图书,计算机/网络,程序设计,C C++ C# VC VC++,
作者: 潘嘉杰编著
出 版 社: 人民邮电出版社
出版时间: 2008-6-1字数: 590000版次: 1页数: 356印刷时间: 2008/06/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115177421包装: 平装编辑推荐
一样的语言,不一样的学习方法。
形象的比喻,生动的讲解,重新诠释了学习语言的方法。实用的示例,完整的代码,为学习者量身打造的案例。易学、易懂、易于实践的知识结构,降低学习C++的门槛。
初学者的良师,程序员的益友。
本书是为C++程序设计学习者量身订做的辅导书。全书分为3篇。第一篇介绍了面向过程的程序设计,主要有基本语句、语法基础、函数机制和数据类型等内容。第二篇介绍了一些实用编程技巧,内容包括阅读代码、调试程序和简单的编程思想。第三篇介绍了面向对象的程序设计,主要有类和对象、对象生灭、友元、继承等内容。本书不仅仅是程序设计的入门教程,也是一位成功掌握程序设计的程序员的经验之谈。
内容简介
本书是为C++程序设计学习者量身订做的辅导书。全书分为3篇。第一篇介绍了面向过程的程序设计,主要有基本语句、语法基础、函数机制和数据类型等内容。第二篇介绍了一些实用编程技巧,内容包括阅读代码、调试程序和简单的编程思想。第三篇介绍了面向对象的程序设计,主要有类和对象、对象生灭、友元、继承等内容。书中常以形象的比喻来解释程序设计中的概念,通俗易懂,令读者印象深刻,更快地进入C++程序设计的大门。本书的内容涵盖了绝大部分常用的C++知识,可以作为大学计算机专业或非计算机专业的程序设计入门教材,也可供计算机爱好者自学使用。
目录
第一篇过程化的程序设计
第1章良好的学习开端
1.1软件与程序
1.2程序设计要做什么
1.3选好一种语言
1.4C++能够做些什么
1.5C语言、C++和Visual C++的关系
1.6学习程序设计的方法和必要准备
1.7总结
第2章Hello,World
2.1如何创建一个示例程序
2.2创建自己的Hello,World
2.3C++语言的输出与输入
2.4方法指导
2.5习题
第3章各种各样的“箱子”——变量
3.1会变的“箱子”——定义变量
3.1.1C++数据类型
3.1.2变量名
3.1.3变量的初始化
3.2常用的基本数据类型
3.2.1整型(Integer)
3.2.2实型(Real)
3.2.3字符型(Character)
3.2.4布尔型(Boolean)
3.3不会变的“箱子”——定义常量
3.4C++算术表达式
3.4.1赋值
3.4.2除、整除和取余
3.5“箱子”的转换——数据类型转换
3.5.1隐式转换
3.5.2显式转换
3.6方法指导
3.7习题
第4章要走哪条路——条件语句
4.1如果……
4.1.1条件——关系运算
4.1.2条件——逻辑运算
4.1.3&&和||的妙用
4.2否则……
4.2.1如果与否则
4.2.2如果里的如果——if的嵌套
4.2.3找朋友
4.3爱判断的问号
4.4切换的开关
4.4.1多路开关——switch
4.4.2巧用switch
4.5方法指导
4.6习题
第5章有个圈儿的程序——循环语句
5.1程序赛车
5.1.1循环语句for
5.1.2加加和减减
5.1.3巧用for
5.2退出比赛和进维修站
5.2.1退出比赛——break
5.2.2进维修站——continue
5.3圈圈里的圈圈
5.3.1C++循环的嵌套
5.3.2怎么让输出的东西更好看
5.4While循环
5.4.1当型循环
5.4.2导火索——do
5.5方法指导
5.6习题
第6章好用的“工具”——函数
6.1简单的“工具”——函数
6.1.1“工具”的说明书
6.1.2如何使用系统造好的“工具”
6.2打造自己的“工具”
6.2.1C++函数的声明
6.2.2函数的定义
6.2.3函数是如何运行的
6.2.4返回语句——return
6.2.5关于主函数
6.2.6同名同姓——参数定义
6.2.7函数存在的意义
6.3多功能“开瓶器”——函数重载
6.4自动的“工具”
6.4.1默认参数
6.4.2定义默认参数的顺序
6.4.3默认参数和重载函数的混淆
6.5给变量和参数起个“绰号”——引用
6.5.1引用的声明
6.5.2用引用传递参数
6.6*函数里的函数——递归
6.7方法指导
6.8习题
第7章好大的“仓库”——数组
7.1让计算机处理更多数据——使用数组
7.1.1C++中数组的声明
7.1.2数组的操作
7.1.3数组的初始化
7.1.4省略数组大小
7.2仓库是怎样造成的
7.2.1内存和地址
7.2.2C++数组在内存中的存储情况
7.2.3字符的存储情况
7.2.4字符数组在内存中的存储情况
7.3向函数传递数组
7.4C++二维数组
7.4.1线与面——一维数组和二维数组
7.4.2二维数组的声明和初始化
7.4.3省略第一维的大小
7.4.4二维数组在内存中的存储情况
7.4.5向函数传递二维数组
7.4.6二维数组转化成一维数组
7.5方法指导
7.6习题
第8章内存里的快捷方式——指针
8.1什么是指针
8.2C++中指针变量的声明和使用
8.2.1指针的类型
8.2.2指针变量的声明
8.2.3获取地址和指针变量初始化
8.2.4特殊的值——NULL
8.2.5指针的使用——间接引用
8.3指针的操作
8.3.1指针的加减运算
8.3.2指针的关系运算
8.4指针与保护
8.4.1对内存只读的指针
8.4.2指针型常量
8.5指针与数组
8.5.1数组名的实质
8.5.2指针数组
8.6指针与函数
8.6.1指针作为参数
8.6.2指针作为返回值
8.7更灵活的存储——堆内存空间
8.7.1如何获得堆内存空间
8.7.2有借有还,再借不难——堆内存的回收
8.8方法指导
8.9习题
第9章自己设计的箱子——枚举和结构
9.1我的类型我做主——枚举类型
9.2设计一个收纳箱——定义结构类型
9.3C++结构与函数
9.3.1结构作为参数
9.3.2结构作为返回值
9.4C++结构数组与结构指针
9.4.1结构数组
9.4.2结构指针
9.5自行车的链条——链表
9.6C++链表的实现
9.6.1链表的创建和遍历
9.6.2链表的查询
9.6.3插入结点
9.6.4删除结点
9.6.5清除链表
9.7方法指导
9.8习题
第二篇实战程序设计
第10章高效阅读程序代码
10.1整体把握法
10.1.1阅读C++代码的顺序
10.1.2整体把握语意
10.2经验法
10.3模拟法
10.4方法指导
10.5习题
第11章调试程序代码技巧
11.1再谈变量
11.1.1标志符
11.1.2C++全局变量和局部变量
11.1.3静态局部变量
11.1.4变量的作用域
11.1.5变量的可见性
11.2C++头文件的奥秘
11.2.1如何创建一个头文件
11.2.2C++程序中头文件的作用
11.2.3头文件和源文件
11.2.4细说#include
11.2.5#include中尖括号和双引号的区别
11.3更快更好地完成程序调试
11.3.1如何检查语法错误
11.3.2常见语法错误及解决方法
11.4最麻烦的问题——运行时错误
11.4.1见识运行时错误
11.4.2查找错误点
11.5调试工具——Debug
11.5.1设置和移除断点
11.5.2Go语句
11.5.3Debug窗口
11.5.4Watch窗口
11.5.5用Debug找到错误
11.6方法指导
11.7习题
第12章编写程序技巧
12.1程序设计的基本步骤
12.2三类C++编程问题
12.2.1算法实现
12.2.2匹配实现
12.2.3功能实现
12.3函数的递归
12.3.1什么是栈
12.3.2函数的调用机制
12.3.3小试牛刀——用递归模拟栈
12.3.4*递归的精髓
12.4方法指导
12.5习题
第三篇面向对象的程序设计
第13章初识对象
13.1对象的定义
13.2一个字符串也是对象
13.2.1奇妙的点
13.2.2对字符串的操作
13.3面向对象特点一:封装性
13.4从数组到向量
13.4.1向量的性能
13.4.2万用的模板
13.4.3对向量的操作
13.5方法指导
13.6习题
第14章再识对象
14.1类是一种数据类型
14.1.1类与结构
14.1.2类的声明与定义
14.2公有和私有
14.3成员函数
14.3.1成员函数的声明
14.3.2常成员函数
14.3.3成员函数的重载
14.3.4成员函数的定义
14.4对象、引用和指针
14.4.1对象的引用
14.4.2对象指针
14.5方法指导
14.6习题
第15章造物者与毁灭者——对象生灭
15.1麻烦的初始化
15.2造物者——构造函数
15.2.1构造函数的声明与定义
15.2.2带参数的构造函数
15.3先有结点,还是先链表
15.4“克隆”技术——拷贝构造函数
15.4.1拷贝构造函数
15.4.2默认拷贝构造函数
15.4.3拷贝构造函数存在的意义
15.5毁灭者——析构函数
15.6方法指导
15.7习题
第16章共有财产好朋友操作符
16.1有多少个结点
16.1.1静态成员数据
16.1.2静态成员数据的初始化
16.1.3静态成员函数
16.2类的好朋友——友元
16.2.1友元类
16.2.2友元函数
16.2.3使用友元的利与弊
16.3多功能的操作符——操作符的重载
16.3.1操作符作为成员函数
16.3.2操作符作为友元函数
16.3.3又见加加和减减
16.4方法指导
16.5习题
第17章 父与子——继承
17.1剑士弓箭手法师的困惑
17.2面向对象特点二:继承性
17.3继承的实现
17.3.1私有和保护
17.3.2一个简单的例子
17.3.3继承的方式
17.4子类对象的生灭
17.4.1子类对象的构造
17.4.2子类对象的析构
17.5继承与对象指针
17.5.1父类指针与子类对象
17.5.2猜猜它是谁——覆盖
17.6面向对象特点三:多态性
17.7多态与虚函数
17.7.1多态的实现
17.7.2无法实现多态的虚函数
17.8虚函数与虚析构函数
17.9抽象类与纯虚函数
17.10多重继承
17.11方法指导
17.12习题
第18章再谈输入与输出
18.1cout和cin真正含义
18.2输入输出的重定向
18.2.1输入重定向
18.2.2输出重定向
18.2.3无法被重定向的cerr
18.3文件的输入与输出
18.4更巧妙地输入和输出
18.4.1能整行输入的getline
18.4.2能读取判断末尾的eof
18.4.3能计数的gcount
18.4.4能设置域宽的width
18.5插入操作符的重载
18.5.1插入操作符
18.5.2插入操作符的常用重载方式
18.6方法指导
18.7习题
第19章万用的模板
19.1函数模板
19.1.1声明与定义函数模板
19.1.2函数模板与重载
19.2类模板
19.2.1类模板的声明和定义
19.2.2链表类模板实例
19.3方法技巧
19.4习题
第20章异常的处理
20.1亡羊也要补牢——程序出错处理
20.2处理异常
20.2.1尽力尝试——try语句
20.2.2抓住异常——catch语句
20.3抛出异常——throw语句
20.4方法指导
20.5习题
附录A常用保留字列表
附录B常见编译错误和解决方法
附录C参考答案
第2章
第3章
第4章
第5章
第6章
第7章
第8章
第9章
第10章
第11章
第12章
第13章
第14章
第15章
第16章
第17章
第18章
第19章
第20章
附录D参考文献
书摘插图
第一篇 过程化的程序设计
第1章良好的学习开端
本章主要讲述学习程序设计前需要了解的一些知识和学习程序设计的方法,并且对c++作简要的介绍。读者学好这一章,对日后的学习能够起到事半功倍的效果。
1.1软件与程序
随着计算机的普及和科学技术的发展,无纸化办公、计算机辅助设计(CAD,CompeerAidedDesign)和计算机辅助制造(CAM,CompeerAidedManufacture)已经渐渐走进我们的日常工作中。有了计算机的帮助,我们的工作效率得到明显的提升,设计人员只需要把数据输入计算机,就能显示出精确的结果,例如一个三维立体模型。当我们使用计算机的时候,有没有想过人类是如何让计算机做这些工作的呢?
其实,我们平时对计算机进行的操作是在与计算机软件(Software)打交道。计算机之所以能够帮助人类工作,离不开软件的支持。那么软件到底是什么?其实它是看不见摸不着,但却又能够通过计算机为用户所用的一种东西。打一个比方,计算机的各种硬件设备(Hardware)就像是人的肌肉,而软件就像是人的灵魂。少了软件这个灵魂,那么计算机只是一堆废铜烂铁。人们通过编写一款软件,来让计算机做一些事情。像我们用的Windows、Word、QQ等都是软件。
那么,软件和我们所说的程序(Program)又有着什么样的关系呢?首先,要弄清什么是程序。从初学者比较容易理解的角度说,程序是计算机执行一系列有序的动作的指令集合。通过一个程序,可以使计算机完成某一类有着共同特点的工作,如求解一个一元二次方程,或是找出一组数里面最大的一个数。而一款软件,往往是由若干个相关的程序、运行这些程序所需要的数据和相关文档(如帮助文档)等多个文件组成的。因此,要设计出一款软件,就必须从程序设计开始。
1.2程序设计要做什么
很多初学者会不解:程序设计到底是要做什么呢?我们该如何让计算机帮助解决问题呢?其实,要解决一些看似不同的问题,可以归纳为一种确定的过程和方法。我们把这种能够在有限的步骤内解决一类问题的过程和方法称为算法(Algorithm)。下面,我们以解一元二次方程为例,介绍求解的算法。
……
