目 录 2
第1章数据结构 2
§1.1线性数据结构 2
1.1.1线性表及其存储结构 2
1.1.2栈 5
1.1.3队列 9
§1.2链表和串 14
1.2.1 链表 15
1.2.2 串 27
§1.3非线性数据结构 30
1.3.1树的基本概念 30
1.3.2二叉树 33
1.3.3遍历二叉树 36
§1.4查找 37
1.4.1顺序查找 37
1.4.2折半查找 38
1.4.3 HASH法 39
§1.5排序 43
1.5.1插入排序 44
1.5.2 冒泡排序 45
1.5.3二路合并排序 47
§1.6递归 50
1.6.1递归定义 51
1.6.2递归算法 51
1.6.3递归的代价 54
§1.7实例 56
1.7.1迷宫问题 56
1.7.2Tower ofHanoi问题 59
1.7.3Huffman树 60
第2章编译初步 63
§2.1编译过程 63
§2.2词法分析 69
2.2.1 词法分析器的手工实现 69
2.2.2正则表达式和有限自动机 75
2.2.3词法分析器的自动产生 81
§2.3语法分析 85
2.3.1文法和语言 85
2.3.2语法树和二义性 88
2.3.3语法分析方法概述 90
2.3.4算符优先分析法 93
2.3.5递归下降分析法 96
§2.4中间代码生成 100
2.4.1中间代码的形式 101
2.4.2简单算术表达式和赋值语句的翻译 106
2.4.3布尔表达式的翻译 108
2.4.4控制类语句的翻译 114
2.4.5标号与GOTO语句 117
§2.5 符号表 118
2.5.1 符号表的内容及运算 119
2.5.2 Fortran语言符号表 119
§2.6运行时存储分配 121
2.6.1静态与动态存储方案 122
2.6.2 Fortran存储组织与分配 122
2.6.3 C语言的存储组织与分配 132
§3.1操作系统的基本概念 137
3.1.1什么是操作系统 137
第3章操作系统 137
3.1.2操作系统的分类 141
§3.2操作系统的基本功能 150
3.2.1 作业管理 151
3.2.2进程管理 153
3.2.3存储管理 162
3.2.4设备管理 167
3.2.5文件管理 170
3.3.1 IBM PC-DOS 174
§3.3微机常用操作系统举例 174
3.3.2 XENIX操作系统的使用 196
3.3.3 NOVELLNetware局域网络操作系统 220
§3.4 MS-DOS应用实例 244
3.4.1 MS-DOS的实时应用 244
3.4.2计时器应用举例 255
3.4.3双机通信的实现(RS232异步通信的实现) 263
第4章软件开发过程中对环境工具的要求 273
§4.1软件开发的一般过程 273
§4.2对环境及工具的要求 274
4.2.1 程序设计语言的比较及选用 275
4.2.2机器硬件配置对软件开发的影响 277
4.2.3 PC机系统配置 279
4.2.4扩展内存,扩充内存的使用 282
4.2.5系统软件的选用 283
§4.3软件工具概况 286
4.3.1 系统管理工具 287
4.3.2机器性能测试工具 292
§5.2编辑器的功能及实现思想 300
§5.1编辑器的引入 300
第5章面向程序设计语言的编辑工具 300
§5.3编辑程序的分类 302
§5.4常用通用编辑器介绍 303
5.4.1 DOS环境下的行编辑器Edlin及UNIX/XENIX 303
环境下的行编辑器ed 303
5.4.2两个典型的全屏幕编辑器vi和PE 319
§5.5嵌入到集成环境中的编辑器的使用 334
5.5.1 PCTool中的编辑功能(PCShell类似) 335
5.5.2Turbo系列集成环境下编辑器的使用 341
§5.6没有编辑工具时如何建立文本文件 345
§5.7如何选择编辑器 346
第6章语法分析及错误检测 348
§6.1概述 348
§6.2如何使源程序成为可执行的机器代码 348
§6.3一些常见编译错误的排除 349
6.3.1错误的表现形式 349
6.3.2几种常用的排错方法 350
6.4.1编译程序的组织及使用方法 351
§6.4利用语言处理程序调试程序 351
6.4.2用Turbo Pascal编译系统排错 352
第7章程序的动态调试 358
§7.1运行错误及纠错方法 358
7.1.1运行错误及原因 358
7.1.2如何纠正运行错误 362
§7.2逻辑错误及纠正方法 364
第8章软件工程 370
§8.1绪论 370
8.1.1软件危机 370
8.1.2软件的特点和分类 371
8.1.3软件生存周期 375
8.1.4软件质量 383
8.1.5软件开发讲究的原则 387
8.1.6软件开发中存在的几种偏见 391
§8.2需求分析 393
8.2.1需求分析的任务 393
8.2.2需求分析的内容 394
8.2.3需求分析的方法 395
8.2.4需求分析的文档 403
8.2.5评审 405
§8.3概要设计 405
8.3.1概要设计的任务 405
8.3.2软件结构与结构图 406
8.3.3软件设计的概念和原理 409
8.3.4设计准则 415
8.3.5面向数据流的设计方法 420
8.3.6概要设计应交付的文档 430
8.4.1详细设计的主要任务 433
§8.4详细设计 433
8.4.2详细设计思想 434
8.4.3详细设计方法 437
8.4.4模块开发卷宗 451
8.4.5详细设计评审 451
§8.5编码 452
8.5.1编码阶段的任务 452
8.5.2程序设计语言 452
8.5.3编码风格 456
§8.6软件测试 465
8.6.1测试的目的 466
8.6.2测试方法论 466
8.6.3测试步骤 468
8.6.4单元测试 468
8.6.5组装测试 472
8.6.6有效性测试 475
8.6.7测试用例设计 476
8.6.8测试文档 478
§8.7一个实例 478
参考文献 522