第1章 程序设计灵魂——算法 1
1.1 程序设计基础知识 2
1.2 算法的概念 2
1.2.1 算法基本特征 2
1.2.2 算法设计目标 3
1.3 算法的描述 4
1.3.1 用自然语言表示 4
1.3.2 用传统流程图表示 4
1.3.3 用N-S流程图表示 6
1.3.4 用伪代码表示 7
1.4 程序设计方法 7
1.4.1 结构化程序设计 7
1.4.2 面向对象程序设计 9
1.4.3 计算思维 10
习题1 10
第2章 FORTRAN90基础知识 11
2.1 FORTRAN90的发展及特点 12
2.1.1 FORTRAN语言的发展概况 12
2.1.2 FORTRAN90语言的特点 13
2.2 固有数据类型及常量 14
2.2.1 固有数据类型 14
2.2.2 常量 15
2.3 变量 17
2.3.1 变量的概念 17
2.3.2 变量名 18
2.3.3 变量类型 18
2.4 FORTRAN90的字符集 20
2.5 FORTRAN90的标准函数 20
2.6 算术表达式 22
2.6.1 算术运算符与优先级 22
2.6.2 算术表达式中的类型转化 23
2.6.3 整数的除法 24
习题2 24
第3章 简单结构程序设计 26
3.1 FORFRAN90程序分析 27
3.2 赋值语句 29
3.3 简单的输入输出语句 31
3.3.1 简单的输入语句 32
3.3.2 简单的输出语句 36
3.4 带格式的输入输出 41
3.4.1 格式编辑符 41
3.4.2 格式输入与格式输出 49
3.5 参数说明语句 52
3.5.1 类型说明中的PARAMETER属性 52
3.5.2 PARAMETER语句 53
3.6 其他常用语句 54
3.6.1 PROGRAM语句 54
3.6.2 END语句 54
3.6.3 STOP语句 55
3.6.4 PAUSE语句 55
3.6.5 程序设计举例 55
习题3 58
第4章 选择结构程序设计 63
4.1 关系表达式 64
4.1.1 关系运算符 64
4.1.2 关系表达式 64
4.2 逻辑表达式 66
4.2.1 逻辑运算符 66
4.2.2 逻辑表达式 66
4.2.3 逻辑赋值语句 68
4.3 逻辑IF语句 69
4.4 块IF结构 70
4.4.1 简单的块IF结构 70
4.4.2 块IF结构的嵌套 72
4.4.3 块IF结构的命名 74
4.4.4 多重条件的IF结构 74
4.5 CASE结构 78
4.5.1 CASE结构的格式 78
4.5.2 CASE结构的执行过程 79
4.5.3 CASE结构的命名 81
4.6 程序设计举例 82
习题4 85
第5章 循环结构程序设计 95
5.1 概述 96
5.2 GOTO语句 96
5.3 有循环变量的DO循环结构 97
5.3.1 有循环变量的DO循环结构的语法格式 97
5.3.2 有循环变量的DO循环结构的执行过程 98
5.3.3 有循环变量的DO循环结构的程序举例 100
5.4 重复DO循环结构 105
5.4.1 重复DO循环结构的语法格式 105
5.4.2 EXIT语句 106
5.4.3 CYCLE语句 107
5.5 DO-WHILE循环结构 109
5.5.1 DO-WHILE循环结构的语法格式 110
5.5.2 DO-WHILE循环结构的执行过程 110
5.5.3 DO-WHILE循环结构的程序举例 111
5.6 循环的嵌套 113
5.6.1 循环嵌套的概念 113
5.6.2 嵌套DO循环的说明 115
5.6.3 循环嵌套程序举例 116
5.7 循环结构程序设计举例 118
习题5 123
第6章 子程序 128
6.1 概述 129
6.2 函数子程序 130
6.2.1 外部函数子程序的定义 130
6.2.2 外部函数子程序的调用 130
6.2.3 内部函数子程序 132
6.3 子例行子程序 134
6.3.1 外部子例行子程序 134
6.3.2 外部子例行子程序的调用 135
6.3.3 内部子例行子程序 137
6.4 虚参数的INTENT属性 138
6.5 标识符的作用域 139
6.5.1 全局标识符 139
6.5.2 局部标识符 139
6.6 虚参数与实参数之间的数据传递 140
6.6.1 变量作为虚参数 140
6.6.2 子程序名作为虚参数 142
6.6.3 子程序应用举例 143
习题6 147
第7章 数组 152
7.1 概述 153
7.2 一维数组 153
7.2.1 一维数组的定义 153
7.2.2 一维数组的逻辑结构和存储结构 154
7.2.3 一维数组元素的引用 154
7.2.4 一维数组的输入与输出 155
7.3 二维数组 156
7.3.1 二维数组的定义 156
7.3.2 二维数组的逻辑结构和存储结构 157
7.3.3 二维数组元素的引用 158
7.3.4 二维数组的输入与输出 158
7.4 数组的操作 161
7.4.1 数组的赋值 161
7.4.2 数组的运算 161
7.4.3 对数组进行操作的内在函数 163
7.4.4 数组片段 164
7.4.5 数组元素赋初值 165
7.5 动态数组 166
7.5.1 动态数组的定义 166
7.5.2 动态数组的使用 167
7.6 数组在子程序中的应用 168
7.6.1 显式形状数组 168
7.6.2 假定形状数组 169
7.6.3 假定大小数组 170
7.6.4 数组作为虚参 170
7.7 数组的应用举例 172
习题7 180
第8章 字符型数据处理 186
8.1 字符型数据的运算 187
8.1.1 字符运算符及字符表达式 187
8.1.2 字符型数据的比较 188
8.1.3 用于字符型数据处理的内部函数 190
8.2 字符子串 191
8.2.1 字符子串的引用 191
8.2.2 字符数组与字符数组的子串 192
8.3 字符型数据的应用举例 193
习题8 196
第9章 派生类型 201
9.1 派生类型的定义 202
9.2 派生类型变量的定义 203
9.3 派生类型的使用 204
9.3.1 派生类型变量成员的引用 205
9.3.2 派生类型变量的赋值与运算 205
9.3.3 派生类型变量的输入与输出 206
9.4 派生类型应用举例 207
习题9 211
第10章 模块与接口 217
10.1 模块的定义 218
10.2 USE语句 219
10.3 接口 220
10.4 超载和定义操作符 223
10.4.1 类属子程序 223
10.4.2 超载赋值号 227
10.4.3 超载运算符 229
10.4.4 用户定义的运算符 231
10.4.5 超载固有函数 232
10.5 模块应用举例 233
10.5.1 共享数据 234
10.5.2 共享派生类型 235
10.5.3 共享动态数组 235
10.5.4 共享自定义数据类型及运算 236
习题10 238
第11章 指针与递归 244
11.1 指针的概念 245
11.1.1 数据结构的概念 245
11.1.2 指针变量的定义 245
11.1.3 目标变量及其定义 246
11.1.4 指针赋值语句 246
11.1.5 指针变量使用举例 247
11.2 指针的使用 250
11.2.1 指针的状态 250
11.2.2 NULLIFY语句 250
11.2.3 动态变量 251
11.2.4 动态变量的举例 251
11.2.5 ASSOCIATED固有函数 254
11.2.6 悬空指针和无法访问的内存 255
11.3 指针数组 256
11.4 链表 258
11.4.1 链表的概念 258
11.4.2 链表的创建 259
11.4.3 链表的插入 260
11.4.4 链表的删除 262
11.4.5 链表的输出 264
11.4.6 一个链表抽象数据类型 264
11.5 递归及其应用 268
11.5.1 递归的概念 268
11.5.2 递归函数 269
11.5.3 递归子程序 272
习题11 274
第12章 文件 280
12.1 文件的基本概念 281
12.1.1 记录 281
12.1.2 文件 281
12.1.3 逻辑设备 282
12.2 文件操作语句 282
12.2.1 文件的打开 283
12.2.2 文件的关闭 284
12.2.3 文件的查询 284
12.2.4 文件的输入输出语句 286
12.3 文件的操作 286
12.3.1 有格式顺序存取文件的操作 286
12.3.2 有格式直接存取文件的操作 289
12.3.3 无格式文件的操作 290
12.4 文件的应用举例 292
习题12 299
第13章 科学计算 301
13.1 概述 302
13.2 数理模型 302
13.3 计算方法 303
13.4 程序的数据结构和功能单元 305
13.4.1 实际问题的编码表示 305
13.4.2 程序的单元设计 306
13.5 功能单元的程序实现 310
13.5.1 SUBROUTINE INPUT的程序代码 310
13.5.2 SUBROUTINE FORMEQ的程序代码 312
13.5.3 SUBROUTINE GAUSS(A,B,N,EPS,IC)的程序代码 313
13.5.4 SUBROUTINE OUTPUT的程序代码 314
习题13 317
参考文献 319