## 第1章 编程方式
本书旨在教会你如何像计算机专家一样思考。我喜欢计算机专家的思考方式,因为他们综合了数学、工程和自然科学的最佳特性。计算机专家像数学家一样,运用形式语言来表达思想(尤其是计算指令);又像工程师一样进行设计,将组件装配到系统里并对可替换的部件进行评估权衡;还像自然科学家一样,观察复杂系统的行为,形成假设并通过实验来证明预测。
__解决问题__是一个计算机专家应该具备的最重要的单一技能。该技能包括明确表述问题的能力,有创意地思考解决方案以及清楚准确地表述解决方案。人们后来发现,学习编程的过程是练习解决问题技巧的一个相当好的机会。这就是为什么本章叫做“编程方式”。
同时,本书的另一目的是帮助你准备计算机科学AP考试<sup>1</sup>。尽管我们可能并没有直接实现这一目标。比如,本书并没有很多类似AP考试题的练习。但从另一个角度说,如果你完全理解了本书中的概念和C++编程的细节,你就可以在考试中有一个良好的表现。
> 注释:<sup>1</sup> 编者注:AP考试全称AdvancedPlacement,是美国大学预修课程。由美国大学理事会主持,AP成绩不但可以抵扣成功申请美国大学的同学入学后相应课程的学分,而且AP成绩也是美国各大学录取学生的重要依据。
- 译者简介
- 作者简介
- 第1章 编程方式
- 1.1 什么是编程语言
- 1.2 什么是程序
- 1.3 什么是调试
- 1.4 形式语言和自然语言
- 1.5 第一个程序
- 1.6 术语
- 第2章 变量和类型
- 2.1 输出更多
- 2.2 值
- 2.3 变量
- 2.4 赋值
- 2.5 输出变量
- 2.6 关键字
- 2.7 运算符
- 2.8 计算顺序
- 2.9 字符类型的运算符
- 2.10 组合
- 2.11 术语
- 第3章 函数
- 3.1 浮点数
- 3.2 从double转换为int
- 3.3 数学函数
- 3.4 复合表达式
- 3.5 添加新的函数
- 3.6 定义和用法
- 3.7 多函数程序
- 3.8 形参和实参
- 3.9 形参和局部变量
- 3.10 多参数函数
- 3.11 带返回值的函数
- 3.12 术语
- 第4章 条件和递归
- 4.1 模运算符
- 4.2 条件执行
- 4.3 选择执行
- 4.4 链式条件
- 4.5 嵌套条件
- 4.6 return语句
- 4.7 递归
- 4.8 无限递归
- 4.9 递归函数的调用栈图
- 4.10 术语
- 第5章 带返回值的函数
- 5.1 返回值
- 5.2 程序开发
- 5.3 复合用法
- 5.4 重载
- 5.5 布尔值
- 5.6 布尔型变量
- 5.7 逻辑操作符
- 5.8 布尔函数
- 5.9 main函数返回值
- 5.10 多重递归
- 5.11信心的跳跃
- 5.12 更多的例子
- 5.13 术语
- 第6章 迭代
- 6.1 多次赋值
- 6.2 迭代
- 6.3 while语句
- 6.4 表格
- 6.5 二维表
- 6.6 封装和广义化
- 6.7 函数
- 6.8 更多封装
- 6.9 局部变量
- 6.10 更多广义化
- 6.11 术语
- 第7章 字符串和其他
- 7.1 字符串容器
- 7.2 apstring变量
- 7.3 字符串中的字符
- 7.4 长度
- 7.5 遍历
- 7.6 运行时错误
- 7.7 find函数
- 7.8 自定义find函数
- 7.9 循环和计数
- 7.10 递增和递减操作符
- 7.11 字符串拼接
- 7.12 apstring的可变性
- 7.13 apstrings的可比较性
- 7.14 字符分类
- 7.15 其他apstring函数
- 7.16 术语
- 第8章 结构体
- 8.1 复合值
- 8.2 Point对象
- 8.3 访问实例变量
- 8.4 操作结构体
- 8.5 将结构体作为参数
- 8.6 值传递
- 8.7 引用传递
- 8.8 矩形
- 8.9 返回结构体类型
- 8.10 将其他类型按引用传递
- 8.11 获取用户输入
- 8.12 术语
- 第9章 更多结构体
- 9.1 Time
- 9.2 printTime
- 9.3 对象函数
- 9.4 纯函数
- 9.5 const参数
- 9.6 修改器
- 9.7 填写函数
- 9.8 哪个最好
- 9.9 增量式开发VS规划
- 9.10 普遍化
- 9.11 算法
- 9.12 术语
- 第10章 vector
- 10.1 访问元素
- 10.2 复制vector
- 10.3 for循环
- 10.4 vector的长度
- 10.5 随机数
- 10.6 统计
- 10.7 随机数的vector
- 10.8 计数
- 10.9 检查其他值
- 10.10 直方图
- 10.11 单次遍历的解决方案
- 10.12 随机种子
- 10.13 术语
- 第11章 成员函数
- 11.1 对象和方法
- 11.2 print
- 11.3 隐式变量访问
- 11.4 另一个例子
- 11.5 第三个例子
- 11.6 更复杂的例子
- 11.7 结构体
- 11.8 初始化还是构造
- 11.9 最后一个例子
- 11.10 头文件
- 11.11 术语
- 第12章 包含对象的vector
- 12.1 复合形式
- 12.2 Card对象
- 12.3 printCard函数
- 12.4 equals函数
- 12.5 isGreater函数
- 12.6 包含Card对象的vector
- 12.7 printDeck函数
- 12.8 搜索
- 12.9 二分查找
- 12.10 vector和子 vector
- 12.11 术语
- 第13章 向量对象
- 13.1 枚举类型
- 13.2 switch语句
- 13.3 Deck
- 13.4 另一个构造函数
- 13.5 Deck成员函数
- 13.6 洗牌
- 13.7 排序
- 13.8 subdeck
- 13.9 洗牌和处理
- 13.10 合并排序
- 13.11 术语
- 第14章 类和不变式
- 14.1 私有数据和私有类
- 14.2 什么是类
- 14.3 复数
- 14.4 访问器函数
- 14.5 输出
- 14.6 支持复数运算的函数
- 14.7 支持复数运算的其他函数
- 14.8 不变式
- 14.9 先验条件
- 14.10 私有函数
- 14.11 术语
- 第15章 文件输入/输出和apmatrix
- 15.1 流
- 15.2 文件输入
- 15.3 文件输出
- 15.4 输入解析
- 15.5 数字解析
- 15.6 Set数据结构
- 15.7 apmatrix
- 15.8 距离矩阵
- 15.9 合适的距离矩阵
- 15.10 术语
- 附录A AP类的快速参考
- 版权声明
- 版权