Fortran77和90/95编程入门
(中国科技大学天文与应用物理系,丁泽军编)
前言
Fortran语言为科大理学院本科课程。编者自2000年起对天文与应用物理系本科生讲授,由于国内尚没有一本完整综合了Fortran90与Fortran77的教材,故编写了此教程用于教学,主要内容源自于如下国内外最新Fortran90和经典Fortran77教材,并参考了Internet上诸多网页,在此向各位原作者(恕不详列)致谢。编者感谢研究生李会民的帮助。请留意本教程限于校内教学目的使用。
2001年10月
参考书目:(1&2为本课程的主要参考书)
1《Fortran90教程》(浙江大学出版社)(潘在元、张素素)
2《Fortran语言—Fortran77结构化程序设计》(清华大学出版社)(谭浩强、田淑清)
3《Visual Fortran编程指南》(人民邮电出版社)(邓巍巍、王越男)
4 “Fortran90编程”(http://www.media.kyoto-u.ac.jp\htomita\index.html)(日本京都大学福田博之)
5《Fortran
PowerStation4.0使用与编程》(北京航空航天大学出版社)(桂良进、王军、董波)
6 “Fortran90
Course Notes” (Univ. Liverpool, AC Marshell)
7《Introduction to
FORTRAN90》(Larry Nyhoff &
Sanford Leestma)
目录
第一章: Fortran语言程序设计初步
1.1 Fortran语言发展概况
1.1.1 Fortran的历史
1.1.2 学习Fortran的意义
a)
Fortran77?
b)
Fortran90!
1.2 Fortran程序简例
1.2.1 编程实例
a)
基本语句
b)
输出字符
1.2.2 Fortran程序的特点
1.3 Fortran程序的基本组成
1.3.1 字符集
1.3.2 源码格式
a)
固定格式
b)
自由格式
c)
文件名
1.3.3 程序组成
a)
程序总体构造
b)
程序单位
c)
程序体和语句顺序
d)
英文名
e)
标号和标签
1.4 数学运算
1.4.1 常量和变量类型
a)
常量
b)
变量
1.4.2 内在函数
1.4.3 算术表达式
a)
算术运算符和运算优先级
c)
表达式运算中的类型
d)
运算的误差
1.4.4 赋值语句
a)
算术赋值语句
b)
执行时的类型转换
1.5 Compaq Visual Fortran软件的使用
1.5.1 版本介绍
1.5.2 安装和运行
第二章: 改变程序流程
2.1
算法和流程图
2.1.1
算法
2.1.2
流程图
a)
传统流程图
b)
三种基本结构
c)
结构流程图
d)
伪代码表示的算法
2.2
逻辑运算
2.2.1
关系表达式
a)
关系运算符
b)
关系表达式
2.2.2
逻辑表达式
a)
逻辑量
b)
逻辑运算符
c)
逻辑表达式的运算
2.2.3
逻辑IF语句
2.3
选择结构
2.3.1
块IF构造
a)
块IF的组成和执行
b)
ELSE IF语句
c)
IF块构造
d)
IF构造的缺省形式
e)
IF构造的嵌套
2.3.2
多重选择和CASE构造
a)
整型
b)
字符型
c)
逻辑型
第三章: 循环结构
3.1
单纯循环
3.1.1
GOTO语句实现循环
3.1.2
有循环变量的DO构造
a)
DO语句和循环次数
b)
DO循环执行步骤
c)
循环终端语句
d)
停止语句
e)
DO循环嵌套
f)
DO循环规则
g)
隐DO循环
3.2
条件循环
3.2.1
无循环变量的DO构造
a) 一般形式
b)
EXIT语句
c)
CYCLE语句
3.2.2
DO WHILE语句
第四章: 数据结构
4.1
数据类型和属性
4.1.1
类型说明语句
a)
一般形式
b)
类型说明
c)
赋初值
d)
DATA语句
4.1.2
种别说明
a)
种别说明方法
b)
种别值
c)
种别函数
d)
常数种别
e)
整数的其他进制
4.1.3
属性说明
a)
属性
b)
PARAMETER属性
c)
DIMENSION属性
4.2
非数值型数据
4.2.1
逻辑型数据
a)
逻辑型变量
b)
逻辑赋值
4.2.2
字符型数据
a)
字符变量
b)
字符子串
c)
字符操作与赋值
d)
字符比较
e)
字符函数
4.3
派生数据类型
4.3.1
数据结构
4.3.2
派生类型
a)
派生类型定义
b)
缺省初始化
c)
结构构造函数
d)
应用
第五章: 数组
5.1
数组定义与类型
5.1.1
定义数组
a)
数组的描述
b)
数组元素
c)
数组片段
d)
三元下标
e)
向量下标
5.1.2
数组类型
a)
显示形状数组
b)
自动数组
c)
可调数组
d)
假定形状数组
e)
假定大小数组
f)
延迟形状数组
5.2
数组赋值与运算
5.2.1
赋值
a)
赋值方式
b)
数组的存储顺序
c)
与DO循环的差异
d)
RESHAPE语句
e)
WHERE构造
f)
FORALL屏蔽赋值
5.2.2
运算
a)
基本运算
b)
数组与数组
c)
数组与标量
d)
数组内在函数
e)
数组的输入输出
5.2.3
数组的动态分配
a)
可分配数组
b)
ALLOCATE语句
c)
DEALLOCATE语句
第六章: 过程和模块
6.1
程序单元结构
6.1.1
概述
6.1.2
主程序
6.1.3
过程
a)
外部过程
b)
内部过程
c)
内在过程
6.1.4
块数据
6.2
过程
6.2.1
什么是过程
a)
分类
b)
特性
6.2.2
外部过程
a)
子程序
b)
函数
d)
ENTRY语句
6.2.3
变元的性质
a)
INTENT属性
b)
SAVE属性
c)
关键字变元
e)
哑元改名
f)
INTRINSIC属性
6.2.4
其它过程
a)
内部过程
b)
递归过程
c)
类属过程
d)
多层调用
6.2.5
过程接口
a)
接口形式
b)
INTERFACE语句
c)
必需接口
d)
超载操作符
e)
自定义操作符
f)
超载赋值号
6.2.6
作用域
a)
作用域单元
b)
名称的作用域
6.3
模块
6.3.1
数据共享
a)
共享方式
b)
COMMON语句
d)
INCLUDE语句
e)
模块
6.3.2
模块的用法
a)
定义模块
b)
引用模块
6.3.3
模块的应用
a)
全局数据
b)
过程共享
c)
公用派生类型
d)
全局可分配数组
e)
抽象数据类型和超载运算
第七章: 输入输出和文件
7.1
输入输出编辑
7.1.1
输入输出语句
a)
相关语句
b)
WRITE语句
c)
PRINT和TYPE语句
d)
READ语句
7.1.2
I/O列表
a)
NAMELIST语句
b)
I/O列表实体
7.1.3
非格式输入输出编辑
a)
直接列表I/O
b)
名称列表I/O
7.1.4
格式化输出编辑
b)
输出规则
c)
可重复编辑描述符
d)
I编辑符
e)
F编辑符
f)
可变格式输出
g)
E编辑符
h)
G编辑符
i)
D编辑符
j)
L编辑符
k)
A编辑符
l)
B、O、Z编辑符
m)
EN、ES编辑符
n)
不可重复编辑描述符
o)
撇号编辑符
p)
H编辑符
q)
X编辑符
r)
纵向控制符
s)
斜杠编辑符
t)
反斜杠编辑符和美元编辑符
u)
T,TL,TR编辑符
v)
冒号编辑符
w)
P编辑符
x)
SP,SS,S编辑符
y)
输出格式指定和I/O列表
7.1.5
格式化输入编辑
a)
输入规则
b)
整数输入
d)
逻辑型和字符型数据的输入
e)
BN、BZ编辑符
f)
Q编辑符和可变格式输入
g)
输入格式指定和I/O列表
7.2
文件的存取
7.2.1
逻辑设备和文件
a)
逻辑设备
b)
外部文件
c)
内部文件
7.2.2
外部文件分类
a)
格式化文件
b)
无格式文件
c)
二进制文件
d)
顺序访问文件
e)
直接访问文件
7.2.3
文件记录的存取
a)
格式化顺序文件
b)
格式化直接文件
c)
无格式顺序文件
d)
无格式直接文件
e)
二进制顺序文件
f)
二进制直接文件
7.2.4
文件操作语句
b)
ENDFILE语句
c)
CLOSE语句
d)
文件指针定位语句
7.2.5
使用硬件设备
考试内容