第一篇 概述篇 1
第1章 FORTRAN概述 1
1.1 FORTRAN起源 1
1.2 Windows下FORTRAN编译器的使用 2
1.2.1 安装Compaq Visual FORTRAN 2
1.2.2 创建第1个FORTRAN工程 3
1.2.3 在FORTRAN工程中添加源代码 5
1.2.4 在FORTRAN工程中新建源文件 7
1.2.5 在Compaq Visual FORTRAN中编译源文件 8
1.3 Linux下常见的FORTRAN编译器 10
1.4 常见编译器性能比较 12
1.5 常用编译器 12
1.5.1 UltraEdit 13
1.5.2 ZionEdit 14
1.5.3 gEdit 15
1.6 第1个FORTRAN程序——Hello!FORTRAN 90/95 16
第二篇 基础语法篇 17
第2章 FORTRAN语法基础 17
2.1 程序书写格式 17
2.1.1 固定格式(Fixed Format) 17
2.1.2 自由格式(Free Format) 19
2.1.3 兼顾两种格式的代码写法 21
2.2 字符集 21
2.3 空格的使用 22
2.4 注释格式 23
2.5 命名方式 24
2.6 程序单元和语句顺序 25
第3章 简单输入与输出 27
3.1 输入和输出概述 27
3.2 简单输出语句 27
3.2.1 PRINT语句的表控输出 28
3.2.2 WRITE语句的表控输出 28
3.2.3 表控输出的特点 29
3.3 简单输入语句 30
3.3.1 READ语句的表控输入形式一 31
3.3.2 READ语句的表控输入形式二 31
3.3.3 表控输入的特点 32
第4章 常量和变量 35
4.1 数值型常量及其类型 35
4.1.1 整型常量 35
4.1.2 实型常量 35
4.1.3 复型常量 36
4.1.4 常量的存储形式 36
4.1.5 符号常量 37
4.2 数值型变量及其类型 37
4.2.1 数值型变量概述 37
4.2.2 使用系统默认的隐含约定 38
4.2.3 使用类型说明语句声明 39
4.2.4 用隐含说明语句声明 39
4.2.5 数值型变量声明及其应用 40
4.3 字符型常量及变量 40
4.3.1 字符型变量概述 41
4.3.2 定义形式一 41
4.3.3 定义形式二 41
4.3.4 定义形式三 42
4.3.5 定义形式四 42
4.3.6 字符型变量声明及其应用 43
4.3.7 子字符串的概念 44
4.4 逻辑型常量及变量 45
4.5 变量的初始化 46
4.6 赋值语句 48
4.6.1 何为赋值 48
4.6.2 赋值过程的类型转换 49
第5章 种别和属性 51
5.1 种别概述 51
5.1.1 种别的概念 51
5.1.2 种别的使用 52
5.2 种别值和种别函数 52
5.2.1 整型数据的种别 52
5.2.2 实型数据的种别 53
5.2.3 复型数据的种别 53
5.2.4 逻辑型数据的种别 53
5.2.5 字符型数据的种别 53
5.2.6 种别函数 54
5.3 常数种别和进制 54
5.3.1 非字符型常数的种别说明 54
5.3.2 字符型常数的种别说明 56
5.3.3 数据的进制说明 56
5.4 属性说明 57
5.4.1 对象的属性 57
5.4.2 常用属性说明 58
第6章 常用内部过程 60
6.1 内部过程概述 61
6.2 常用数学函数 61
6.2.1 绝对值函数 61
6.2.2 指数函数 61
6.2.3 正弦函数 62
6.2.4 余弦函数 62
6.2.5 反正弦函数 62
6.2.6 反余弦函数 62
6.2.7 正切函数 63
6.2.8 反正切函数 63
6.2.9 自然对数函数 63
6.2.10 常用对数函数 63
6.2.11 取整函数 64
6.2.12 求余函数 64
6.2.13 取符号函数 64
6.2.14 最大值函数 65
6.2.15 最小值函数 65
6.3 常用字符函数 65
6.3.1 字符与数值转换函数 65
6.3.2 字符串长度函数 66
6.3.3 子字符串位置索引函数 66
6.3.4 字符串验证函数 67
6.3.5 尾部空格除去函数 67
6.3.6 字符大小比较函数 67
6.4 常用系统过程 68
6.4.1 CPU时间函数 68
6.4.2 日期和时间函数 68
6.4.3 系统时间过程 69
6.4.4 随机数生成过程 69
第7章 运算符及表达式 70
7.1 算术运算 70
7.1.1 算术运算符及其优先级 70
7.1.2 算术表达式 70
7.1.3 算术表达式中的类型转换 71
7.1.4 算术运算的误差 73
7.2 关系运算 74
7.2.1 关系运算符 74
7.2.2 关系表达式 75
7.3 逻辑运算 76
7.3.1 逻辑运算符 76
7.3.2 逻辑表达式 76
7.3.3 逻辑表达式的运算秩序 77
7.4 字符运算 77
第8章 程序流程控制 80
8.1 算法与流程 80
8.1.1 算法 80
8.1.2 传统流程图 81
8.1.3 基本程序结构 83
8.1.4 用伪代码表示算法 85
8.2 选择结构 87
8.2.1 判断语句IF和分支选择语句SELECT CASE 87
8.2.2 判断语句IF的基本用法 87
8.2.3 判断语句IF实现多重判断 90
8.2.4 IF语句的嵌套 93
8.2.5 IF语句的特殊用法 95
8.2.6 SELECT CASE语句的用法 97
8.2.7 SELECT CASE语句的应用 98
8.3 循环结构 103
8.3.1 基本的DO构造 103
8.3.2 无条件循环与DO语句 105
8.3.3 条件循环与DO构造 108
8.3.4 循环的署名 112
8.3.5 循环的嵌套 113
8.3.6 DO循环规则 115
8.3.7 隐式DO循环 116
8.4 循环的控制 117
8.4.1 EXIT语句 117
8.4.2 EXIT语句与条件循环 118
8.4.3 EXIT语句与无条件循环 120
8.4.4 CYCLE语句 121
8.5 再论GOTO语句 123
8.5.1 无条件GOTO语句 123
8.5.2 计算GOTO语句 125
8.5.3 赋值GOTO语句 125
8.5.4 GoTo语句的应用 126
8.6 程序结束、终止和暂停 127
8.6.1 程序结束(END) 127
8.6.2 程序终止(STOP) 128
8.6.3 程序暂停(PAUSE) 129
第三篇 高级语法篇 133
第9章 FORTRAN中的数组 133
9.1 数组的定义 133
9.1.1 定义形式一 133
9.1.2 定义形式二 134
9.1.3 定义形式三 134
9.1.4 定义形式四 134
9.1.5 数组定义的特点 135
9.2 数组的引用方式 135
9.2.1 引用数组元素 135
9.2.2 引用数组整体 136
9.2.3 引用数组片段 137
9.3 数组的存储 138
9.3.1 数组的存储结构 138
9.3.2 数组存储结构的应用 139
9.4 数组的类型 141
9.4.1 显形数组 141
9.4.2 特殊的显形数组——自动数组 142
9.4.3 特殊的显形数组——可调数组 143
9.4.4 显形数组的不足 145
9.4.5 假定形状数组 146
9.4.6 假定大小数组 146
9.4.7 延迟形状数组 148
9.5 数组的动态分配 150
9.5.1 自动数组与可分配数组 150
9.5.2 可分配数组的分配与释放 151
9.5.3 可分配数组的应用实例 152
9.6 数组赋值 153
9.6.1 数组赋值语句 154
9.6.2 数组构造器 155
9.6.3 DATA语句 157
9.7 数组的输入输出 160
9.7.1 一维数组的输入输出 160
9.7.2 二维数组的输入输出 161
9.7.3 其他高维数组的输入输出 162
9.8 数组的运算 163
9.8.1 算术运算 163
9.8.2 逻辑运算 166
9.8.3 关系运算 167
9.9 常用内在函数 168
9.9.1 内部基本函数 168
9.9.2 矩阵乘积函数 169
9.9.3 向量点乘函数 170
9.9.4 元素求和函数 170
9.9.5 元素连乘求积函数 171
9.9.6 数组大小查询函数 171
9.9.7 数组形状查询函数 172
9.9.8 数组合并函数 172
9.9.9 数组压缩函数 172
9.9.10 数组形状扩展和重构形函数 173
9.9.11 数组转置函数 173
9.9.12 去端移动函数 174
9.9.13 循环替换函数 175
9.9.14 最大值元素定位函数 175
9.10 FORTRAN 90/95的数组操作语句 176
9.10.1 WHERE语句和WHERE构造 177
9.10.2 FORALL语句 181
第10章 FORTRAN程序单元 185
10.1 主程序 185
10.2 语句函数 186
10.2.1 语句函数的定义 187
10.2.2 语句函数的引用 189
10.3 函数子程序 190
10.3.1 定义函数子程序 191
10.3.2 调用函数子程序 192
10.3.3 函数子程序示例——进制转换 192
10.3.4 函数子程序示例——分形 194
10.4 子例行子程序 196
10.4.1 定义子例行子程序 197
10.4.2 子例行子程序示例 198
10.5 子程序的多入口点和多折返点 199
10.5.1 ENTRY语句与多入口点 199
10.5.2 子程序的多折返点 201
10.6 FORTRAN 90/95中的特殊子程序类型 203
10.6.1 RECURSIVE属性 203
10.6.2 PURE属性 206
10.6.3 ELEMENTAL属性 206
10.7 数据块程序单元 208
10.7.1 定义数据块子程序 208
10.7.2 使用数据块子程序 208
10.7.3 数据块子程序示例 208
10.8 子程序的参数 209
10.8.1 参数传递规则 210
10.8.2 子程序的接口 213
10.8.3 接口块使用情况 219
10.8.4 INTENT属性应用 220
10.8.5 关键字变元 222
10.8.6 可选择变元与OPTIONAL属性 223
10.8.7 哑元改名 225
10.8.8 INTRINSIC属性 226
10.8.9 数组作为参数 227
10.8.10 过程作为参数 232
10.9 局部变量和SAVE属性 235
10.9.1 变量的作用范围 235
10.9.2 SAVE属性 237
第11章 高级输出与输入 241
11.1 输入输出语句的格式化设置 241
11.2 输入输出语句与格式语句 242
11.2.1 WRITE语句引用格式说明语句 242
11.2.2 PRINT语句引用格式说明语句 242
11.2.3 READ语句引用格式说明语句 242
11.2.4 第1个输入输出综合应用 243
11.3 格式编辑符概述 245
11.4 数据格式编辑符 245
11.4.1 I编辑符 245
11.4.2 F编辑符 246
11.4.3 E编辑符 247
11.4.4 D编辑符 248
11.4.5 A编辑符 249
11.4.6 L编辑符 249
11.4.7 G编辑符 250
11.4.8 B、O、Z编辑符 251
11.4.9 EN、ES编辑符 252
11.5 控制格式编辑描述符 253
11.5.1 X编辑符 253
11.5.2 纵向走纸控制符 254
11.5.3 斜杠编辑符 255
11.5.4 T、TL和TR编辑符 256
11.5.5 冒号编辑符 257
11.5.6 P编辑符 257
11.5.7 SP、SS和S编辑符 258
11.5.8 BN、BZ编辑符 258
11.6 字符串编辑符 259
11.6.1 撇号编辑符 259
11.6.2 H编辑符 260
11.7 编译器扩展的格式编辑描述符 260
11.7.1 反斜杠“\”编辑符和美元“$”编辑符 260
11.7.2 可变格式编辑符 261
11.8 I/O列表 262
11.8.1 NAMELIST语句 262
11.8.2 I/O列表实体 266
第12章 文件操作 267
12.1 文件与逻辑设备 267
12.1.1 逻辑设备 267
12.1.2 外部文件 268
12.1.3 内部文件 269
12.2 外部文件分类 271
12.2.1 有格式文件 272
12.2.2 无格式文件 272
12.2.3 编译器支持的二进制文件 272
12.2.4 顺序存取文件 273
12.2.5 直接存取文件 273
12.3 文件操作语句 273
12.3.1 操作语句概述 273
12.3.2 OPEN语句 274
12.3.3 CLOSE语句 278
12.3.4 OPEN语句和CLOSE语句示例 279
12.3.5 READ和WRITE语句 280
12.3.6 REWIND语句 283
12.3.7 BACKSPACE语句 283
12.3.8 ENDFILE语句 284
12.3.9 INQUIRE语句 285
12.4 文件存取 291
12.4.1 文件的构成——记录 291
12.4.2 记录的组合 294
12.5 有格式顺序存取文件 296
12.5.1 有格式顺序存取文件的创建 296
12.5.2 有格式顺序存取文件的查询 299
12.6 有格式直接存取文件 304
12.6.1 简单有格式直接存取文件的建立 305
12.6.2 复杂有格式直接存取文件的建立 306
12.6.3 有格式直接存取文件的查询 307
12.7 无格式顺序存取文件 309
12.8 无格式直接存取文件 311
12.8.1 无格式直接存取文件的创建 312
12.8.2 无格式直接存取文件与同类有格式文件的区别 312
12.9 二进制顺序存取文件 314
12.9.1 二进制文件的创建 315
12.9.2 二进制顺序存储文件的查询 315
12.10 二进制直接存取文件 321
12.10.1 二进制直接存取文件的创建 321
12.10.2 二进制直接存取文件的读取 322
12.11 硬件设备的使用 323
第13章 FORTRAN指针 325
13.1 指针的基本概念 325
13.1.1 定义指针 325
13.1.2 定义指针范例 325
13.2 指针的基本应用 326
13.2.1 指针的基本用途 326
13.2.2 指针与变量的关系 327
13.2.3 动态分配和释放指针空间 329
13.2.4 指针状态的查询和更改 330
13.2.5 指针分享存储空间 332
13.3 指针与数组 333
13.3.1 指针指向数组 334
13.3.2 动态分配指针数组 336
13.4 指针与过程 337
13.4.1 指针与过程的示例 337
13.4.2 在指针与过程中使用模块 340
13.5 指针的简单应用 341
13.6 指针与链表概述 344
13.7 单向链表 344
13.7.1 单向链表的基本概念 345
13.7.2 节点的定义 345
13.7.3 节点的引用 347
13.7.4 链表的建立 348
13.8 双向链表和环状链表 350
13.8.1 双向链表的建立 351
13.8.2 环状链表的建立 354
13.9 链表的基本操作 356
13.9.1 插入及删除操作 356
13.9.2 插入及删除操作实例 357
13.9.3 链表空间的释放 362
13.9.4 遍历、查找及更新 365
第四篇 应用篇 373
第14章 基本数值算法举例 373
14.1 常用数值积分算法 373
14.1.1 矩形法 374
14.1.2 梯形法 374
14.1.3 Simpson法 376
14.1.4 数值积分计算子程序的应用 378
14.2 简单线性代数问题 380
14.2.1 Gauss消去法求解线性方程组 380
14.2.2 Gauss Jordan消去法求解线性方程组 384
14.3 非线性函数求解 387
14.3.1 迭代法 387
14.3.2 牛顿迭代法 388
14.3.3 二分法 390
14.3.4 弦截法 392
14.3.5 非线性函数求解子程序的应用 394
14.4 常微分方程的基本解法 400
14.5 插值与拟合 406
14.5.1 拉格朗日多项式插值法 407
14.5.2 牛顿前向插值法 409
第15章 文件处理举例 414
15.1 临时文件的应用 414
15.1.1 主程序 414
15.1.2 随机数生成子程序 415
15.1.3 素数挑选和文件重写子程序 415
15.1.4 素数判断子程序 416
15.2 多个文件的处理 417
第16章 搜索与排序 420
16.1 搜索算法 420
16.1.1 顺序搜索 420
16.1.2 二分搜索 423
16.1.3 散列搜索 426
16.2 排序算法 429
16.2.1 冒泡法 429
16.2.2 选择排序法 433
16.2.3 快速排序法 436