第1章 计算机逻辑概述 1
1.1 理解计算机的组成与操作 1
1.2 理解编程过程 3
1.2.1 理解要解决的问题 4
1.2.2 规划程序逻辑 4
1.2.3 编写程序 4
1.2.4 翻译程序为机器语言 5
1.2.5 测试程序 5
1.2.6 形成软件产品 6
1.3 理解数据层次 6
1.4 使用流程图符号和伪代码语句 7
1.5 使用和命名变量 10
1.6 使用标记值来结束程序 11
1.7 使用连接符 12
1.8 给变量赋值 14
1.9 理解数据类型 14
1.10 小结 15
习题 16
第2章 理解结构 19
2.1 理解非结构化spaghetti代码 19
2.2 理解三种基本结构 20
2.3 使用初始读 24
2.4 理解结构化要求的原因 27
2.5 识别结构 28
2.6.1 case结构 32
2.6 两个特殊的结构——case和do until 32
2.6.2 do until循环 33
2.7 小结 34
习题 35
第3章 模块、层次图和文档 38
3.1 模块、子程序、过程、 函数或方法 38
3.1.1 模块化提供了抽象 38
3.1.2 模块化支持并行工作 39
3.1.3 模块化支持软件重用 39
3.1.4 模块化易于识别结构 40
3.2 模块化程序 41
3.3 模块的嵌套调用 43
3.4 变量声明 44
3.5 建立层次图 45
3.6 理解文档 46
3.7 输出文档 47
3.8 输入文档 51
3.9 完全文档 53
3.10 小结 54
习题 54
第4章 写一个完整的程序 57
4.1 理解一个完整程序的主逻辑结构 57
4.2 家务管理任务 59
4.2.1 声明变量 59
4.2.2 打开文件 62
4.2.3 打印标题 63
4.2.4 读第一个输入记录 63
4.3 缩写程序主循环 66
4.4 执行结束任务模块中的任务 68
4.5 小结 68
习题 68
第5章 分支 71
5.1 用布尔表达式的值进行判断 71
5.2 运用逻辑关系运算的操作 73
5.3 理解AND(与)的逻辑关系 76
5.4 编写高效的AND分支 79
5.5 AND形式的组合分支 80
5.6 避免AND逻辑形式下的一般性错误 80
5.7 理解OR(或)逻辑关系 82
5.9 OR分支的效率问题 83
5.8 避免OR逻辑形式下的一般性错误 83
5.10 OR逻辑的组合分支 84
5.11 取值范围内的选择结构 85
5.12 使用范围(区域)检查的一般性错误 86
5.13 分支表格的应用 87
5.14 小结 92
习题 93
第6章 循环 97
6.1 理解循环的作用 97
6.2 利用循环控制变量控制while循环 98
6.3 使用计数器来控制循环 99
6.4 使用标记值变量的循环 102
6.5 减量循环 103
6.6 避免循环的一般性错误 104
6.7 for循环的使用 105
6.8 do until循环的使用 107
6.9 理解循环的共性 107
6.10 嵌套循环 109
6.11 利用循环进行求和 111
6.12 小结 113
习题 113
第7章 控制转移 116
7.1 理解控制转移的逻辑原理 116
7.2 执行单级控制转移 117
7.3 在控制转移模块中运用控制数据 120
7.4 运用合计执行控制转移 123
7.5 执行多重控制转移 127
7.6 执行页面转移 133
7.7 小结 135
习题 135
第8章 数组 138
8.1 理解数组 138
8.2 数组如何分配内存 138
8.3 用数组替代嵌套分支的使用 139
8.4 数组的声明和初始化 145
8.5 运行期数组和编译期数组 147
8.6 从文件中加载数组 149
8.7 在数组中查找对象 151
8.8 并行数组的应用 152
8.9 数组边界 154
8.10 使用提前退出,提高查找效率 155
8.11 数组的范围对象查找 157
8.12 小结 159
习题 160
第9章 多维数组的管理 164
9.1 理解记录排序的必要性 164
9.2 理解如何交换两个值 165
9.3 使用冒泡排序法 166
9.4 为数组大小使用变量来改进冒泡排序法 171
9.5 减少不必要的比较来改进冒泡排序 173
9.6 消去不必要的遍历数列来改进冒泡排序 174
9.7 使用插入排序法 175
9.8 使用选择排序法 176
9.9 使用索引文件 177
9.10 使用链表 178
9.11 使用多维数组 179
9.12 小结 182
习题 182
第10章 使用菜单和验证输入 184
10.1 使用交互式程序 184
10.2 使用单级菜单 185
10.3 编写黑盒代码模块 187
10.4 改进菜单程序 190
10.5 使用case结构管理菜单 192
10.6 使用多级菜单 194
10.7 验证输入 197
10.8 理解数据验证的种类 199
10.9 验证数据类型 199
10.13 小结 200
10.12 验证数据的表示 200
10.10 验证数据范围 200
10.11 验证数据合理性和一致性 200
习题 201
第11章 顺序文件的合并、匹配与更新 204
11.1 理解顺序文件和文件合并的必要性 204
11.2 为合并程序建立主逻辑和housekeeping()逻辑 205
11.3 创建合并程序的mainLoop()和finishUp()模块 206
11.4 修改housekeeping()模块以检查eof 209
11.5 主文件和事务文件处理 209
11.6 匹配文件来更新主文件记录域 211
11.7 允许单个主文件对应多个事务 214
11.8 更新顺序文件的记录 214
习题 220
11.9 小结 220
第12章 高级模块化技术和面向对象程序设计 223
12.1 理解面向过程程序中模块化和抽象的原理 223
12.2 向模块传递变量 226
12.3 从模块返回值 229
12.4 使用IPO表 229
12.5 理解封装的优点 229
12.6 面向对象程序的设计概述 231
12.7 类 232
12.8 实例化和使用对象 234
12.9 理解继承 235
12.10 多态 236
12.12 小结 238
12.11 面向对象程序设计的优点 238
习题 239
第13章 可编程的用户图形界面 241
13.1 理解事件驱动程序 241
13.2 用户触发行为和GUI组件 242
13.3 设计图形用户界面 243
13.3.1 界面应该是自然的和可预料的 243
13.3.2 界面应该有吸引力,容易看懂,并且不会分散人的注意力 244
13.3.3 在一定程度上,它对用户自定义应用程序有帮助 244
13.3.4 程序应当是宽容的 244
13.4 修改GUI组件的属性 245
13.5 开发一个事件驱动程序的步骤 245
13.3.5 CUI仅仅是达到目的的一种方法 245
13.5.1 理解问题 246
13.5.2 创建故事板 246
13.5.3 在对象词典中定义对象 247
13.5.4 定义屏幕间的关联 247
13.5.5 逻辑设计 247
13.6 面向对象的错误处理:异常跳转 248
13.7 小结 252
习题 253
第14章 程序设计 254
14.1 理解良好程序设计的要求 254
14.2 在分离的文件中存储程序组件 254
14.3 如何给变量和模块选取合适的名字 256
14.4.1 避免混淆不清的行隔断 257
14.4 规划模块的语句 257
14.4.2 使用临时变量将长语句缩短,增加程序的易读性和清晰度 258
14.4.3 在合适的场合使用常量 259
14.5 如何组织模块 260
14.6 减少模块的耦合性 260
14.7 增强模块的聚合性 262
14.7.1 功能聚合 262
14.7.2 顺序聚合 263
14.7.3 信息聚合 264
14.7.4 时间聚合、过程聚合、逻辑聚合和偶然聚合 265
14.8 保持良好的编程习惯和要求 265
14.9 小结 266
习题 266
15.1 系统建模的必要性 268
第15章 程序UML进行系统建模 268
15.2 什么是UML 269
15.3 如何使用用例图进行操作 270
15.4 使用类和对象图表 274
15.5 使用序列和协作图表 276
15.6 使用状态图表 277
15.7 使用活动图表 278
15.8 使用成员和配置图表 279
15.9 选择恰当的图表 281
15.10 小结 281
习题 281
附录A 一个较复杂的结构化问题 283
附录B 如何使用大的分支表格 290