第一章 导论 1
1.1 Ada的历史背景 1
1.2 Ada的产生过程 2
1.3 Ada的主要特点 3
1.4 一个简单的Ada程序 5
1.5 Ada_RTS编译系统 7
第二章 基础 10
2.1 词法元素 10
2.1.1 字符集 10
2.1.2 标识符 10
2.1.3 字面值 11
2.1.3.1 数值字面值 11
2.1.3.2 字符字面值 12
2.1.3.3 字符串字面值 12
2.2 编用 13
2.1.4 注解 13
2.3 类型说明与分类 14
2.4 对象说明与赋值 15
2.5 语句与分类 16
2.6 分程序与作用域 17
第三章 标量类型 20
3.1 子类型与派生类型 20
3.1.1 子类型 20
3.1.2 派生类型 21
3.2 整数类型 21
3.3 枚举类型 25
3.3.1 布尔类型 27
3.3.2 字符类型 28
3.4 实数类型 28
3.4.1 浮点类型 28
3.4.2 定点类型 30
3.5 表达式综述 31
第四章 流程控制 34
4.1 条件语句 34
4.2 情况语句 36
4.3 循环语句与出口语句 37
4.3.1 基本循环与出口语句 38
4.3.2 for循环 39
4.3.3 while循环 39
4.4 转移语句与标号 40
第五章 合成类型 42
5.1 数组类型 42
5.1.1 非约束性数组 42
5.1.2 约束性数组 43
5.1.3 数组聚集 43
5.1.4 数组类型的操作 44
5.2.1 简单记录类型 48
5.2 记录类型 48
5.2.2 记录的使用与操作 49
5.2.3 判别项记录类型 50
5.2.4 判别项约束 52
5.2.5 判别项记录的使用与操作 53
5.3 存取类型 54
6.1 子程序的形式 57
6.2 子程序体和返回语句 57
第六章 子程序 57
6.3 形式参数 58
6.4 子程序调用 60
6.5 子程序说明 62
6.6 运算符和‘一名多用’子程序 63
6.6.1 运算符 63
6.6.2 子程序的‘一名多用’ 64
6.7 子程序的应用 65
7.2 程序包规格说明 66
7.1 概述 66
第七章 程序包 66
7.3 程序包体 68
7.4 程序包实体的引用 70
7.5 私有类型 72
7.6 二叉树树叶计数问题 73
第八章 类属 78
8.1 说明与衍生 78
8.2 类属类型参数 81
8.3 类属子程序参数 83
8.4 一个通用集合程序包的例子 85
第九章 异常处理 88
9.1 异常处理 88
9.2 异常说明与引发语句 89
9.3 异常传播 91
9.4 异常的作用域 94
10.1 任务概念 98
第十章 任务 98
10.2 任务规格说明与任务类型 99
10.3 任务体 101
10.4 接受语句与任务间的会合 103
10.5 银行模拟问题 105
10.6 选择语句 110
10.6.1 选择等待 110
10.6.2 条件入口项调用 111
10.6.3 定时入口项调用 111
10.7 夭折语句与任务优先级 112
10.8 任务对象的存取类型 112
10.9 哲学家就餐问题 114
第十一章 程序结构和分别编译 118
11.1 Ada程序结构 118
11.2 上下文子句 119
11.3 编译单位的子单位 121
11.4 编译顺序和程序库 123
11.5 重命名说明 123
11.6 Ada程序结构的应用 125
第十二章 外部接口 128
12.1 输入输出 128
12.1.1 文件概念 128
12.1.2 文件管理 128
12.1.3 顺序文件和直接文件的输入输出 129
12.1.4 正文输入输出 130
12.1.5 低级输入输出 134
12.2 表示子句及中断 134
12.2.1 长度表示子句 134
12.2.2 枚举表示子句 135
12.2.3 记录表示子句 136
12.2.4 地址表示子句与中断 136
附录A Ada语法定义 138
附录B Ada小字典 146
附录C Ada—RTS编译系统的使用说明 151
附录D 程序实例 154
D.1 文件测试 154
D.2 “八皇后”问题 155
D.3 SHELL排序 158
D.4 “河内(HANOI)”塔问题 161
D.5 求素数 163
D.6 人员记录 164
D.7 统计考分 167
D.8 树遍历 169
D.9 逻辑运算测试 171
D.10 用并发任务寻找素数 175
D.11 哲学家就餐问题 177
D.12 交通仿真问题 180
附录E 练习答案 189