第1章 FORTRAN语言简介 1
1.1 FORTRAN的发展历史 1
1.2 FORTRAN的新发展 3
1.3 FORTRAN语言的特点 4
第2章 FORTRAN编译器的安装及使用 5
2.1编译器简介 5
2.1.1 Compaq Visual FORTRAN编译器 5
2.1.2 Intel Visual FORTRAN编译器 6
2.2 Visual FORTRAN的安装 7
2.2.1 Visual Studio 2010安装 7
2.2.2 Intel Visual FORTRANXE 2011安装 10
2.3 Visual FORTRAN的使用 11
2.3.1初次使用配置 11
2.3.2用Visual FORTRAN编写、编译运行程序 12
2.3.3用Visual FORTRAN调试程序 15
2.3.4利用Intel Visual FORTRAN移植Compaq VisualFORTRAN的工程 18
2.4本章小结 19
第3章 程序设计方法及程序算法 20
3.1程序设计方法简介 20
3.2算法的概念及特性 21
3.2.1算法的概念 21
3.2.2简单算法举例 22
3.2.3算法的特性 26
3.3算法的表示方法 27
3.3.1用自然语言表示算法 27
3.3.2用流程图表示算法 28
3.3.3三种基本结构 31
3.3.4用N-S流程图表示算法 34
3.3.5用伪代码表示算法 36
3.3.6用计算机语言表示算法 38
3.4本章小结 39
第4章 二进制及FORTRAN程序设计基础 40
4.1计算机中数据的表示方法 40
4.1.1计算机中的进位数制 40
4.1.2机器数和码制 42
4.2 FORTRAN字符集 44
4.2.1英文字母 45
4.2.2数字 45
4.2.3下划线 45
4.2.4特殊字符 45
4.2.5 FORTRAN中的关键字 45
4.3 FORTRAN书写格式 46
4.3.1固定格式 46
4.3.2自由格式 48
4.3.3兼容源程序格式 49
4.4 FORTRAN程序结构 50
4.4.1 FORTRAN程序单元 50
4.4.2 FORTRAN语句顺序 52
4.4.3空格的使用 53
4.4.4注释的书写 54
4.5 FORTRAN数值型常量及其类型 55
4.5.1整型常量 55
4.5.2实型常量 55
4.5.3复型常量 56
4.5.4字符型常量 56
4.5.5符号常量 56
4.6 FORTRAN变量 57
4.6.1变量的命名规则 57
4.6.2变量的声明 58
4.6.3整型变量 59
4.6.4实型变量 61
4.6.5复型变量 63
4.6.6字符及字符串 64
4.6.7逻辑型变量 66
4.6.8变量的初始化 67
4.7运算符及表达式 68
4.7.1算术运算符及表达式 69
4.7.2关系运算符及表达式 71
4.7.3逻辑运算符及表达式 73
4.8运算符优先级 76
4.9语句 76
4.9.1赋值语句 77
4.9.2 INCLUDE语句 79
4.9.3程序控制语句 80
4.10本章小结 81
第5章 输入输出及声明 82
5.1输入输出概述 82
5.2简单输入语句 82
5.2.1 READ语句输入形式一 83
5.2.2 READ语句输入形式二 84
5.2.3 READ语句使用注意事项 84
5.3简单输出语句 86
5.3.1 PRINT输出语句 86
5.3.2 WRITE输出语句 87
5.3.3表控输出语句注意事项 88
5.4格式化输入输出命令 89
5.4.1格式化输入输出语句概述 89
5.4.2数据格式编辑符 92
5.4.3控制格式编辑符 103
5.4.4字符串编辑符 108
5.5有名I/O列表 108
5.5.1 NAMELIST语句 108
5.5.2 NAMELIST语句示例 109
5.5.3 I/O实体 110
5.6程序举例 110
5.7本章小结 112
第6章 选择结构程序设计 113
6.1 IF语句 114
6.1.1单分支IF语句 114
6.1.2双分支IF语句 115
6.1.3多分支IF语句 117
6.1.4逻辑IF语句 119
6.2 SELECT CASE控制语句 120
6.3选择语句的嵌套 122
6.4其他程序流程控制语句 123
6.4.1 GOTO语句 124
6.4.2 PAUSE、 CONTINUE、STOP语句 125
6.5程序举例 126
6.6本章小结 131
第7章 循环结构程序设计 132
7.1循环结构控制程序设计概述 132
7.2带循环变量的DO语句 133
7.2.1 DO语句循环简介 133
7.2.2带循环变量的DO循环结构 133
7.2.3带循环变量的DO循环细节说明 135
7.2.4 DO循环的执行过程 138
7.2.5带循环变量的DO语句程序举例 138
7.3 DO WHILE语句 141
7.3.1 DO WHILE语句基本格式 141
7.3.2 DO WHILE语句的执行过程 141
7.3.3 DO WHILE语句使用举例 142
7.4循环流程控制语句 143
7.4.1 EXIT语句 143
7.4.2 CYCLE语句 145
7.5无循环变量的DO语句 146
7.6使用GOTO语句进行循环设计 147
7.7循环语句的嵌套 148
7.7.1循环嵌套的语法结构 148
7.7.2循环嵌套的执行过程 149
7.7.3循环嵌套的使用说明 150
7.8不同循环语句的区别与联系 153
7.9程序举例 154
7.10本章小结 159
第8章 数组 161
8.1数组概述 161
8.2数组的定义 163
8.2.1用类型说明语句定义数组 163
8.2.2用DIMENSION语句定义数组 164
8.2.3用类型说明语句和DIMENSION语句定义数组 165
8.3数组的引用 165
8.3.1数组整体引用 166
8.3.2单个元素的引用 166
8.3.3片段法引用多个数组元素 167
8.4数组元素的存储结构 169
8.4.1数组元素的存储结构 169
8.4.2数组存储结构的应用 171
8.5数组的赋值 172
8.5.1数组赋值语句 172
8.5.2 DATA语句 173
8.5.3数组构造器 176
8.6数组的输入输出 178
8.6.1一维数组的输入输出 178
8.6.2二维数组的输入输出 180
8.6.3多维数组的输入输出 183
8.7动态数组 183
8.7.1动态数组的定义 184
8.7.2动态数组空间的分配及释放 184
8.7.3动态数组的应用举例 185
8.8数组的运算 187
8.8.1数组的算术运算 188
8.8.2数组的逻辑运算 190
8.9数组的常用内在函数 192
8.9.1矩阵相乘函数 192
8.9.2向量点乘函数 193
8.9.3元素求积函数 193
8.9.4元素求和函数 194
8.9.5数组大小查询函数 194
8.9.6数组形状查询函数 194
8.9.7数组合并函数 195
8.9.8数组压缩函数 195
8.9.9数组转置函数 195
8.9.10数组最大值最小值函数 196
8.9.11数组最大值最小值定位函数 196
8.10数组操作语句 197
8.10.1 WHERE语句 198
8.10.2 FORALL语句 200
8.11数组应用举例 201
8.12本章小结 204
第9章 FORTRAN过程 205
9.1 FORTRAN程序单元概述 205
9.2语句函数 206
9.2.1语句函数的定义及引用 206
9.2.2语句函数使用注意事项 208
9.3函数子程序(FUNCTION) 209
9.3.1函数子程序的定义 209
9.3.2函数子程序的调用 210
9.4子例行子程序(SUBROUTINE) 211
9.4.1子例行子程序的定义 212
9.4.2子例行子程序的调用 212
9.5实参和形参之间的数据传递方式 214
9.5.1变量作为形参 215
9.5.2数组作为形参 217
9.5.3子程序名作为形参 221
9.5.4星号(*)作为形参 224
9.6特殊的参数属性 225
9.6.1 INTENT属性 225
9.6.2接口(INTERFACE) 227
9.6.3可选参数OPTIONAL 229
9.6.4改变参数位置的方法 231
9.7局部变量与SAVE属性 233
9.7.1变量的作用范围 233
9.7.2变量的SAVE属性 234
9.8公用存储单元与数据块程序单元 236
9.8.1公用语句(COMMON) 236
9.8.2数据块子程序(BLOCK DATA) 239
9.9特殊数组及可分配数组做子程序参数 240
9.9.1自动数组(AUTOMATICARRAYS) 241
9.9.2可分配数组做形参 241
9.9.3可分配函数子程序 243
9.9.4自动数组和可分配数组的比较 244
9.10特殊的过程类型 244
9.10.1递归过程(RECURSIVE) 244
9.10.2纯过程(PUREPROCEDURES) 247
9.10.3逐元过程(ELEMENTALPROCEDURES) 248
9.11内部过程 249
9.12过程中的其他功能 251
9.12.1 ENTRY语句 251
9.12.2另一个子程序的返回点 253
9.12.3内在函数做参数 254
9.13本章小结 255
第10章 文件及高级I/O应用 256
10.1文件基本概念 256
10.1.1设备号 257
10.1.2文件分类 257
10.1.3文件的构成——记录 258
10.1.4文件的存取方式 258
10.1.5文件的结构 258
10.1.6文件的定位 259
10.2文件基本操作语句 260
10.2.1 OPEN语句 260
10.2.2 CLOSE语句 264
10.2.3 READ语句 265
10.2.4 WRITE语句 267
10.2.5 INQUIRE语句 267
10.2.6 REWIND语句 269
10.2.7 BACKSPACE语句 270
10.2.8 ENDFILE语句 270
10.2.9 FLUSH语句 270
10.2.10 WAIT语句 270
10.2.11 EOF函数 270
10.3文件的使用 271
10.3.1有格式顺序存取文件 271
10.3.2有格式直接存取文件 275
10.3.3无格式顺序存取文件 277
10.3.4无格式直接存取文件 279
10.3.5二进制顺序存取文件 281
10.3.6二进制直接存取文件 285
10.4流访问模式 286
10.5异步输入输出 286
10.6与操作系统相关的I/O信息 287
10.7本章小结 287
第11章 结构体及指针 288
11.1派生类数据类型概述 288
11.2结构体的定义和引用 290
11.2.1结构体变量和结构体数组的定义 290
11.2.2结构体成员的引用 293
11.3结构体的初始化和使用 294
11.3.1在结构体声明中进行初始化 294
11.3.2使用赋值语句进行初始化 295
11.3.3使用输入语句进行初始化 295
11.3.4使用DATA语句进行初始化 296
11.3.5结构体数据输入与输出 298
11.3.6结构体数组的使用举例 299
11.4指针的概念和指针变量的定义 304
11.4.1指针的概念 304
11.4.2指针变量的定义 305
11.4.3指针变量的引用 305
11.4.4悬空指针和无法访问的内存 310
11.5指针与数组 310
11.5.1指向数组的指针 310
11.5.2指针数组 312
11.6指针与链表 313
11.6.1链表的概念 314
11.6.2建立链表 314
11.6.3插入结点 316
11.6.4删除结点 317
11.7本章小结 318
第12章 FORTRAN模块及面向对象程序设计 320
12.1模块概述 320
12.2模块的组成和使用 322
12.2.1模块的组成 322
12.2.2模块中的变量 322
12.2.3模块的公有属性和私有属性 324
12.2.4模块的使用 326
12.3面向对象的程序设计概述 328
12.3.1对象简述 328
12.3.2面向对象程序设计的特点 329
12.4模块的重载性应用 329
12.4.1子程序重载 330
12.4.2操作符重载 331
12.4.3赋值号重载 333
12.5继承性和多态性 334
12.5.1继承性 334
12.5.2多态性 337
12.6本章小结 337
第13章 FORTRAN数据结构及算法 338
13.1概述 338
13.1.1什么是数据结构 338
13.1.2基本概念和术语 340
13.1.3.逻辑结构和物理结构 341
13.1.4抽象数据类型 343
13.1.5 FORTRAN算法和算法特性 344
13.2排序 347
13.2.1冒泡排序 348
13.2.2选择排序 350
13.2.3插入排序 351
13.2.4希尔排序 353
13.2.5快速排序 354
13.3查找 356
13.3.1查找概述 357
13.3.2顺序表查找 358
13.3.3有序表查找 360
13.4本章小结 366
第14章 矩阵分解及特殊函数 367
14.1矩阵分解 367
14.1.1 Crout分解 367
14.1.2 Doolittle分解 370
14.1.3 Cholesky分解 372
14.2矩阵的特征值与特征向量 374
14.2.1乘幂法计算主特征值及其特征向量 374
14.2.2乘幂法2范数单位化方法 376
14.2.3 Rayleigh加速方法 378
14.2.4修正的Rayleigh加速方法 380
14.2.5 QR分解法 383
14.3 Bessel函数、Beta函数和Gamma函数 385
14.3.1第一类整数阶Bessel函数 385
14.3.2第二类整数阶Bessel函数 391
14.3.3 Gamma函数 397
14.3.4不完全Gamma函数 399
14.3.5 Beta函数与x2分布函数 402
14.4 FORTRAN 2008新增的内部函数 406
14.4.1 Bessel函数 406
14.4.2误差函数 406
14.4.3距离函数 406
14.4.4 Gamma函数 406
14.4.5欧式向量范数 407
14.5本章小结 407
第15章 解方程及方程组 408
15.1解线性方程组 408
15.1.1 Gauss消元法 408
15.1.2选主元消元法 410
15.1.3 LU分解法 413
15.1.4追赶法 415
15.1.5 Jacobi迭代法 418
15.1.6 Gauss-Seidel迭代法 420
15.1.7逐次超松弛迭代法 423
15.1.8最速下降法 425
15.1.9共轭梯度法 428
15.2非线性方程求根 431
15.3非线性方程组的数值解法 433
15.4本章小结 437
第16章 数值分析 438
16.1最小二乘与数据拟合 438
16.1.1 Cholesky分解法计算最小二乘 438
16.1.2 Householder镜像变换之QR分解 442
16.1.3 QR分解法计算最小二乘问题 445
16.1.4最小二乘曲线拟合 448
16.2多项式插值 452
16.2.1多项式插值之Lagrange插值 452
16.2.2多项式插值之Newton插值 454
16.2.3多项式插值之Hermite插值 456
16.2.4多项式插值之反插值 458
16.3数值微分 460
16.3.1中点公式 460
16.3.2 Richardson外推法 463
16.4数值积分 465
16.4.1复化梯形公式 465
16.4.2复化Simpson公式 467
16.4.3 Romberg积分 468
16.5三次样条插值 470
16.5.1三次样条插值之第一边界条件 471
16.5.2三次样条插值之第二边界条件 476
16.5.3三次样条插值之第三边界条件 480
16.6本章小结 486
第17章 常微分方程及方程组 487
17.1四阶Runge-Kutta法 487
17.2 Gill方法 492
17.3 Runge-Kutta法计算微分方程组 494
17.4 Adams-Bashforth三步三阶法 499
17.5 Adams-Bashforth四步四阶法 505
17.6三阶预测校正方法 510
17.7四阶预测校正方法 517
17.8本章小结 523
第18章 Coarray与并行计算 524
18.1什么是并行计算 524
18.1.1并行计算机 524
18.1.2并行编程模式 525
18.1.3并行语言 526
18.2 Coarray的历史 527
18.3 Coarray简介 527
18.4支持SPMD编程风格的Coarray 530
18.4.1程序镜像 530
18.4.2 Coarray数据声明与访问 530
18.4.3固有过程 531
18.5 Coarray FORTRAN简单实例 532
18.5.1一个实例 532
18.5.2设置镜像数目 533
18.6 Coarray FORTRAN高级实例 535
18.6.1基础知识 535
18.6.2镜像的引用 536
18.6.3高级实例——矩阵相乘 539
18.7本章小结 541
附录 FORTRAN内置函数 542
参考文献 548