第1章 计算机与信息社会 1
1.1 信息与信息服务 1
1.1.1 信息服务 1
1.1.2 数据是编码的信息 2
1.1.3 二进制信息编码 3
1.1.4 信息编码长度 4
1.1.5 信息互联网络和国际互联网 4
1.1.6 计算机发展的四代历程 6
1.1.7 大规模集成电路与摩尔定律 7
1.1.8 微型计算机 8
1.1.9 人和机器的双向互动 9
1.2 数字计算机的主要特征 10
1.2.1 计算机的基本组成 11
1.2.2 CPU和主存储器 12
1.2.3 数据——整数的二进制编码 14
1.2.4 程序——汇编程序语言及高级程序语言 17
1.3 国际互联网的构成 19
1.3.1 局域网和广域网 19
1.3.2 局域网与路由器 20
1.3.3 无线网 21
1.4 CPU的二进制算术运算和逻辑运算 22
1.4.1 定点数与浮点数 22
1.4.2 负数的表示法 23
1.4.3 CPU的二进制逻辑运算 26
1.5 习题 27
第2章 互联网与信息共享 29
2.1 互联网的历史发展 29
2.2 互联网的通信协议 30
2.2.1 通信协议栈 30
2.2.2 网络层协议 31
2.2.3 传输层协议 31
2.3 互联网上的应用 32
2.3.1 电子邮件收发 33
2.3.2 远程文件传输 33
2.3.3 网页浏览 34
2.3.4 即时通信 34
2.3.5 P2P文件共享 34
2.4 接入互联网 35
2.4.1 通过小区宽带或校园网接入互联网 35
2.4.2 通过ADSL接入因特网 38
2.5 组建自己的局域网 39
2.6 习题 42
第3章 计算机的基本组成 43
3.1 计算机的硬件组成 43
3.1.1 计算机的逻辑结构 44
3.1.2 计算机的主要部件 46
3.1.3 计算机外围设备 56
3.1.4 网络计算机 63
3.2 计算机的软件组成 64
3.2.1 系统软件 65
3.2.2 应用软件 67
3.3 计算机硬件与软件的协同工作 67
3.4 购买自己的计算机 69
3.4.1 选择硬件 69
3.4.2 安装操作系统 70
3.4.3 安装应用软件 70
3.5 有关计算机发展的人物和组织 70
3.5.1 图灵和图灵奖 70
3.5.2 冯·诺依曼 71
3.5.3 计算机界具有影响力的两大国际学术组织 72
3.6 习题 73
第4章 信息表示与信息输入输出 74
4.1 计算机能帮我们做什么 74
4.1.1 阅读与写作 74
4.1.2 音乐 75
4.1.3 图片 76
4.1.4 动画与电影 76
4.1.5 游戏 77
4.2 信息表示及信息输入输出 78
4.2.1 二进制信息编码 78
4.2.2 信息输入输出的本质 79
4.2.3 计算机系统的信息交换环境 81
4.3 信息的编码及其输入与输出 83
4.3.1 数值的表示范围和精度 83
4.3.2 指令编码 84
4.3.3 声音编码及其输入与输出 85
4.3.4 颜色编码及其展示 87
4.3.5 图形/图像编码及其输入与输出 88
4.3.6 字符编码及其输入与输出 93
4.3.7 动画/影像编码 105
4.3.8 基本的编码规则 106
4.3.9 复杂编码 106
4.4 多媒体技术 107
4.4.1 多媒体技术的基本概念 107
4.4.2 多媒体信息的压缩编码 109
4.4.3 多媒体应用软件 111
4.5 人机交互 112
4.5.1 图形用户界面 112
4.5.2 人机交互技术的发展 114
4.6 习题 116
第5章 信息存储 118
5.1 存储设备的性能指标 119
5.2 计算机存储系统的层次结构 120
5.3 磁盘的结构与工作原理 123
5.3.1 磁介质的存储原理 123
5.3.2 磁盘的盘片 124
5.3.3 磁盘的结构 125
5.3.4 磁盘的使用 128
5.4 其他存储设备 129
5.4.1 磁带及磁带机 129
5.4.2 光盘存储 131
5.4.3 闪存技术 133
5.5 习题 136
第6章 CPU的信息处理 137
6.1 图灵机 137
6.1.1 图灵机模型 137
6.1.2 图灵机计算举例 139
6.1.3 计算机科学理论的发展里程碑 142
6.2 指令系统 142
6.2.1 指令系统简介 142
6.2.2 指令编码 143
6.3 中央处理器 144
6.3.1 CPU的组成 144
6.3.2 指令的执行 146
6.3.3 程序中断 147
6.4 主存储器及其与CPU的信息交换 148
6.4.1 主存储器的组成 148
6.4.2 存储单元及存储地址 149
6.4.3 存储总线与数据传输 150
6.5 习题 151
第7章 计算机软件与硬件的协同工作 153
7.1 计算机中的信息资源与信息服务 153
7.1.1 硬件资源与软件资源 153
7.1.2 资源管理和信息服务 155
7.1.3 虚拟服务技术 155
7.2 操作系统 157
7.2.1 操作系统的主要功能和当前流行的操作系统类型 157
7.2.2 CPU管理和任务管理 159
7.2.3 I/O外部设备管理 160
7.2.4 存储资源管理 161
7.2.5 用户界面 164
7.3 文件系统 168
7.3.1 文件和文件夹 168
7.3.2 目录结构下的文件访问 171
7.3.3 硬盘的文件存储结构 173
7.3.4 Windows资源管理器 175
7.3.5 NTFS 176
7.4 Windows操作系统的维护管理 179
7.4.1 磁盘管理工具 180
7.4.2 磁盘碎片整理工具 181
7.4.3 视窗显示属性与高级外观设置 183
7.4.4 设备管理器 184
7.4.5 任务管理器与“开始”图标 185
7.4.6 添加和删除程序的工具 188
7.5 系统安全 189
7.5.1 信息加密 189
7.5.2 计算机病毒 190
7.6 习题 193
第8章 程序设计——入门篇 195
8.1 学习程序设计五要素 195
8.1.1 理解程序运行过程 195
8.1.2 程序设计语言 196
8.1.3 掌握一些基本的算法 196
8.1.4 学习完整的解决问题的过程 196
8.1.5 多做练习 196
8.2 程序设计的一般过程 197
8.2.1 分析问题寻求算法 197
8.2.2 程序设计 197
8.2.3 程序实现 198
8.2.4 程序正确性检验 198
8.3 程序设计语言 198
8.3.1 机器语言 199
8.3.2 汇编语言 199
8.3.3 高级程序设计语言 205
8.4 编程环境 208
8.4.1 基本概念 208
8.4.2 Visual C++ 209
8.5 程序阅读理解 213
8.5.1 Hello World 214
8.5.2 输入输出 215
8.5.3 表达式 216
8.5.4 分支语句 217
8.5.5 循环语句 220
8.5.6 判断语句 221
8.5.7 随机数 222
8.6 程序书写规则 224
8.6.1 变量的命名 224
8.6.2 语句的层次和对齐 224
8.6.3 注释 225
8.6.4 写程序的一些禁忌 226
8.7 习题 227
第9章 程序设计——基本框架 230
9.1 程序的基本框架 230
9.2 标识符和关键字 233
9.3 数据类型、常量和变量 234
9.3.1 数据类型 234
9.3.2 常量 235
9.3.3 变量 235
9.4 运算符和表达式 239
9.4.1 运算符 240
9.4.2 算术表达式 240
9.4.3 关系表达式 241
9.4.4 逻辑表达式 241
9.4.5 位运算表达式 241
9.4.6 赋值表达式 242
9.4.7 条件表达式 242
9.4.8 数据类型转换 242
9.4.9 运算符的优先级和结合性 243
9.5 语句 243
9.5.1 if-else 244
9.5.2 switch-case/default 246
9.5.3 for 248
9.5.4 while 250
9.5.5 do-while 251
9.5.6 break 252
9.5.7 continue 253
9.5.8 空语句 255
9.6 控制台输入和输出 255
9.6.1 数据输入 255
9.6.2 数据输出 256
9.6.3 一个包含输入输出语句的完整程序 257
9.7 初等算法(计数、统计和数学运算等) 257
9.8 习题 261
第10章 程序设计——数组和结构 263
10.1 数组 263
10.1.1 数组的定义 263
10.1.2 数组元素的赋值 264
10.1.3 数组的访问和遍历 264
10.1.4 例题 265
10.1.5 数组使用中的注意事项 270
10.1.6 多维数组 270
10.2 结构 273
10.2.1 结构类型和结构类型变量的定义 273
10.2.2 结构类型变量的访问与赋值 276
10.2.3 例题 276
10.2.4 结构使用中的注意事项 278
10.3 指针 278
10.3.1 指针的概念、定义和使用 278
10.3.2 指向结构和数组元素的指针 279
10.3.3 指针的加减法运算 280
10.3.4 指针应用的例子 281
10.4 字符串 281
10.4.1 字符数组、字符串和字符指针 281
10.4.2 字符串变量的初始化及输入输出 282
10.4.3 常用的字符串处理函数 284
10.4.4 字符串应用的例子 285
10.5 动态数组 286
10.5.1 动态数组的申请 286
10.5.2 动态数组的访问与赋值 287
10.5.3 动态数组空间的释放 288
10.5.4 内存分配释放的注意事项 288
10.5.5 使用动态数组的例子 289
10.6 文件的输入输出 292
10.6.1 创建文件 292
10.6.2 打开和关闭文件 292
10.6.3 从文件中读入数据 293
10.6.4 将数据写入文本文件 294
10.6.5 格式化文件输入输出 294
10.6.6 格式化文件输入输出例题 296
10.7 排序 297
10.7.1 起泡排序 297
10.7.2 插入排序 298
10.7.3 查找 299
10.7.4 顺序查找 299
10.7.5 二分法查找 300
10.8 习题 301
第11章 程序设计——函数 304
11.1 函数 304
11.1.1 函数的定义 304
11.1.2 函数的调用 305
11.1.3 参数传递和返回值 306
11.1.4 传值 306
11.1.5 传地址 308
11.1.6 返回值 308
11.1.7 全局变量和局部变量 310
11.2 模块化程序设计思想(问题分解与抽象) 312
11.3 递归 314
11.3.1 函数的递归调用 314
11.3.2 用递归的思想解决问题 314
11.4 样例程序 317
11.5 习题 320
第12章 问题分析与算法设计 323
12.1 算法的效率 323
12.1.1 二分搜索 323
12.1.2 选择排序和插入排序 326
12.2 计算复杂性 327
12.2.1 可计算与计算复杂性 327
12.2.2 时间复杂性 328
12.2.3 O符号 329
12.2.4 算法的时间复杂性分析 330
12.2.5 算法的空间复杂性 330
12.3 问题分析与算法优化 331
12.3.1 完全平方数 331
12.3.2 约瑟夫问题 332
12.3.3 哥德巴赫猜想 337
12.4 递归 340
12.5 动态规划 343
12.6 回溯 346
12.7 习题 350
参考文献 351