第1章 软件的诞生与发展 1
1.1 软件的诞生 2
1.1.1 计算机的诞生 2
1.1.2 软件概念的出现与发展 3
1.2 程序设计语言 4
1.2.1 低级语言 4
1.2.2 高级语言 5
1.2.3 系统软件 9
1.3 软件工程 14
1.3.1 软件开发模型 14
1.3.2 软件开发方法 16
1.3.3 软件开发环境 18
1.3.4 软件技术回顾 19
1.4 常用的软件开发工具 19
1.4.1 Visual Basic开发工具 19
1.4.2 Visual C++开发工具 20
1.4.3 Java开发工具 21
1.4.4 Delphi开发工具 21
1.5 习题 22
1.5.1 简答题 22
第2章 计算机中信息的表示 23
2.1 常用数制及其相互转换 24
2.1.1 十进制数 24
2.1.2 二进制数 25
实例1:把二进制数1101.11转换成十进制数 26
实例2:把十进制数37转换成二进制数 26
实例3:把(0.6875)10转换成二进制数 27
2.1.3 八进制数 27
实例4:把(11101)2转换成八进制数 28
实例5:把(11101.1101)2转换成八进制数 28
实例6:将(56.103)8转换为二进制数 28
实例7:把(1111100111.111111)2转换成十六进制数 29
2.1.4 十六进制 29
实例8:把(3AD.B8)16转换成二进制数 30
2.1.5 其他进制数与十进制数之间的转换 30
实例9:把(17.26)8转换成十进制数 30
实例10:把(65535)10转换成十六进制数(辗转除以16取余) 30
2.2 计算机中数的表示 31
2.2.1 原码,反码和补码 31
实例11:已知X=6,Y=2,求X-Y 32
实例12:已知X=-19,Y=-30,求X+Y 33
2.2.2 数的定点和浮点表示 33
2.3 字符与汉字的编码 35
2.3.1 字符的编码 35
2.3.2 汉字的编码 37
实例13:将汉字“玻”的区位码转换成机内码 37
2.4 习题 38
2.4.1 简答题 38
第3章 数据名称 39
3.1 命名规则 40
3.2 给数据选择合适的名称 40
3.2.1 命名时要考虑的最重要问题 41
3.2.2 最佳名称长度 41
3.2.3 变量名中的反义词 42
3.3 特定数据类型命名 42
3.3.1 循环变量命名 42
3.3.2 状态变量命名 43
3.3.3 临时变量命名 44
3.3.4 逻辑变量命名 44
3.4 命名约定 45
3.5 应避免的名称 47
第4章 程序流程图的绘制 49
4.1 用流程图表示算法 50
4.1.1 流程图符号 50
4.1.2 流程图的三种基本结构 51
4.2 Visio 2003绘制流程图 52
4.2.1 绘制基本流程图 52
4.2.2 设置流程图元素的名称 54
4.2.3 为流程图加上编号 55
4.2.4 加入商用背景 56
4.2.5 加入配色方案 57
4.2.6 绘制一个完整的流程图 58
第5章 结构化程序设计 65
5.1 顺序程序设计 66
实例14:输入三角形的三边长,求三角形面积 66
实例15:求ax2+bx+c=0方程的根 67
5.2 选择(分支)结构程序设计 67
5.2.1 关系运算符和关系表达式 68
5.2.2 逻辑运算符和逻辑表达式 69
5.2.3 if语句 71
实例16:嵌套if语句的应用 73
5.2.4 switch语句 74
实例17:运输公司对用户计算运费 75
5.3 循环结构程序设计 76
5.3.1 while语句(当型循环) 76
实例18:利用while语句,编写程序计算1+2+3+…+100 77
实例19:利用while语句,计算1+1/2+1/4+…+1/50 79
5.3.2 do-while语句(直到型循环) 79
实例20:利用do-while语句计算1+1/2+1/4+…+1/50 80
5.3.3 for语句(当型循环) 80
实例21:编写程序,计算半径分别为0.5、1.5、2.5、3.5、4.5、5.5 mm时圆的半径 82
实例22:求正整数n的阶乘n!,其中n由用户输入 82
5.3.4 几种循环的比较 84
实例23:将50~100之间不能被3整除的数输出(用三种循环结构实现) 85
实例24:从键盘输入一个大于2的整数n,判断其是否为是不是素数 85
5.4.1 选择题 87
5.4 习题 87
5.4.2 编程题 88
第6章 数据结构中的线性表 89
6.1 为什么要学习数据结构 90
6.2 有关概念和术语 91
6.3 线性表 92
6.3.1 线性表的定义 93
6.3.2 线性表的基本操作 93
6.4 线性表的顺序存储及运算实现 94
6.4.1 顺序表上基本运算的实现 95
6.4.2 顺序表应用——划分 98
6.4.3 顺序表应用——合并与排序 99
6.4.4 顺序表的优缺点 100
6.5 线性表的单链表存储和运算 100
6.5.1 单链表 100
6.5.2 单链表上基本运算的实现 101
6.5.3 单链表应用举例 106
6.5.4 循环链表 107
6.6 双向链表 108
6.6.1 双向链表上插入的实现 109
6.6.2 双向链表上删除的实现 109
6.6.3 选择链表还是顺序表 110
6.7 习题 110
6.7.1 填空题 110
6.7.2 简答题 111
6.7.3 编程题 111
第7章 数据结构中的栈和队列 113
7.1 栈 114
7.1.1 栈的定义 114
7.1.2 栈的基本运算 114
7.1.3 顺序栈及运算 115
7.1.4 顺序栈操作的注意事项 117
7.1.5 链栈及运算 117
实例25:数制转换问题 119
7.1.6 栈的应用举例 119
实例26:栈与递归 120
7.2 队列 121
7.2.1 队列上进行的基本操作 122
7.2.2 顺序队的存储及运算 122
7.2.3 链队 126
7.3 习题 128
7.3.1 填空题 128
7.3.2 编程题 128
第8章 数据结构中的二叉树 129
8.1 二叉树的概念 130
8.1.1 二叉树的相关概念 130
8.1.2 链式存储结构 133
8.1.3 二叉树的基本操作及实现 135
8.2.1 二叉树的遍历方法及递归实现 137
8.2 二叉树的遍历 137
8.2.2 由遍历序列恢复二叉树 139
8.3 二叉树的应用 141
8.3.1 查找数据元素 141
8.3.2 统计出给定二叉树中叶子节点的数目 141
8.4 习题 142
8.4.1 填空题 142
8.4.2 简答题 142
第9章 常用的程序设计算法 143
9.1 算法的概念 144
9.1.1 算法的直观认识 144
9.1.2 算法的特征 145
9.1.3 Algorithm(算法)一词的由来 146
9.1.4 算法的表示方法 146
实例27:求三个数中的最大值 147
实例28:百钱买百鸡问题 147
实例29:算法的时间复杂性 148
9.1.5 算法分析 148
实例30:空间复杂性 149
9.2 查找 150
9.2.1 基本概念与术语 150
9.2.2 静态查找表 152
实例31:顺序查找 152
实例32:有序表的折半查找 153
9.2.3 动态查找表 156
实例33:二叉排序树插入操作和构造二叉排序树 157
9.2.4 哈希表查找(杂凑法) 159
实例34:哈希表 159
实例35:常用的哈希函数——直接定址法 160
实例36:常用的哈希函数——除留余数法 160
实例37:常用的哈希函数——数字分析法 161
实例38:常用的哈希函数——折叠法 161
实例39:处理冲突——开放定址法之线性探测法 162
9.3.1 基本概念 163
实例40:处理冲突——开放定址法之二次探测法 163
9.3 排序 163
9.3.2 插入排序 164
实例41:直接插入排序 165
实例42:折半插入排序 166
实例43:表插入排序的重排 170
实例44:希尔排序(Shells Sort) 171
9.3.3 快速排序 173
实例45:非递归算法实现的快速排序 173
实例46:递归算法实现的快速排序 174
9.3.4 选择排序 175
实例47:简单选择排序 175
9.4 几个有趣的算法 177
9.4.1 汉诺塔的算法 177
实例48:汉诺塔 177
实例49:斐波那契数列 180
9.4.2 斐波那契数列的算法 180
9.4.3 杨辉三角的算法 182
实例50:杨辉三角 182
第10章 数据库程序设计基础 185
10.1 数据库简介 186
10.1.1 历史上的数据库 186
10.1.2 数据库的构成 187
10.1.3 查询和索引 189
10.1.4 为什么要使用索引 189
10.1.5 索引的原理 190
10.1.6 主键 190
实例51:创建Access数据库Info.mdb 191
实例52:建立表之间的关系 196
10.1.7 ODBC数据源 198
实例53:建立连接到info..mdb的ODBC数据源 199
10.2.1 最常用Select语句 202
10.2 从数据库中获取所需的部分数据 202
实例54:创建查询查看Select语句执行结果 203
实例55:组合式的字段列表 205
实例56:给字段起别名 205
10.2.2 带条件表达式的Select语句 206
实例57:模糊查找 207
实例58:使用“Where字段名称Between值1And值2”格式 208
实例59:使用“Where字段名称In(值1,值2,…)”格式 208
实例61:按照多个字段排序 209
10.2.3 具有排序功能的Select语句 209
实例60:按照某个字段排序 209
实例62:按照字段的降序排序 210
10.2.4 表之间的连接 211
实例63:从两个有关系的表中筛选数据 211
10.3 选取合适的数据库应用程序开发工具 212
10.3.1 几种编程语言的数据库性能比较 212
10.3.2 选择开发工具的几点建议 213
第11章 网络编程基础 215
11.1 计算机网络的发展 216
11.1.1 计算机网络发展的阶段划分 216
11.1.2 计算机网络的定义 219
11.1.3 计算机网络的发展方向 219
11.2 计算机网络的设备和分类 220
11.2.1 常用的计算机网络设备 220
11.2.2 计算机网络的分类 222
11.3 网络服务和相关概念 225
11.3.1 常用的网络服务 225
11.3.2 IP地址 228
113.3 子网掩码 230
11.3.4 网关 230
11.3.5 域名 231
11.4 OSI模型 231
11.4.1 物理层 232
11.4.2 数据链路层 232
11.4.3 网络层 233
11.4.4 传输层 234
11.4.5 会话层 234
11.4.6 表示层 235
11.4.7 应用层 235
11.5 通信协议 235
11.5.1 协议的关键 235
11.5.2 标准 236
11.5.3 TCP/IP协议 238
11.5.4 TCP/IP模型 238
11.5.5 了解TCP/IP核心协议 241
11.5.6 Windows Sockets简介 245
11.6 开启WWW服务 246
11.6.1 搭建运行平台 246
11.6.2 制作自己的动态网页 249
11.6.3 WWW服务的相关技术 250
附录A 习题答案 251