Fortran 程序基础
合集下载
Fortran-第一讲--第一章

1.3.1 声明部分
声明由不可执行语句组成 位于程序开头 定义程序名和程序引用的数据以及变量类型
PROGRAM语句用来指定程序的名字 程序名最长可达31个字符 由字母、数字和下划线任意组合而成 第一个字符必须是字母 如果存在PROGRAM语句,它必须是程序的第一个语句行 例:下列程序名是否有效,如无效则说明原因 new_program 3rd
无效的实数表示: -12.0E1.5
例
下列各组数在计算机里表示的值是否一样 4650. 4.65E+3 -12.71 -1.27E1 0.0001 1.0E4 3.14159E0 314.159E-3
1.5.3 字符类型
字符类型由字符串组成 字符常数是由单引号或双引号括住的字符串 在单引号或双引号之间括起来的部分称为字符文本, 字符文本可以采用任意计算机可以表示的字符,而 不受Fortran字符集限制 如果字符文本中含有单引号该怎么办?
这一转换仅仅是指参与操作的两个操作数类型 分别为实数和整数而言
表达式
1 2 3 1+1/4 1.0+1/4 1+1.0/4
结果
1 1.0 1.25
因为混合运算的情况是如此复杂,所以我们在程序中要尽量避免这种情 况发生
练习
下面的程序段的三个赋值语句是否正确,正 确写结果,错误说明原因 INTEGER :: i,j INTEGER, PARAMETER :: K=4 i = K **2 j = i/K K=i+j
简单地说:学完本章,你应该可以编写除函数以外的简单程序
1.1 Fortran字符集
正如英语的学习从abc开始,Fortran的学习 也是从字符集开始
第三章 Fortran基础、输入输出

第三章 Fortran程序设计基础、 输入输出及声明
二、Fortran的数据类型和数学表达式 1. Fortran的数据类型 (2)浮点数(Real) 浮点数的类型又分两种,单精度型和双精度型。 在个人计算 机中占用 有效位数 可记录的 最大数值 最小数值
单精度
双精度
32bits (4bytes) 64bits (8bytes)
Fortran是不区分大小写的语言。 指变量名和执行命令不区分,字符串是区分大小写的。
第三章 Fortran程序设计基础、 输入输出及声明
一、字符集和书面格式 2. 书面格式
Free Format(自由格式)
Fortran程序代码为以*.F90为扩展名的文件
Fixed Format(固定格式) Fortran程序代码扩展名为*.F或*.FOR的文件
使用2个bytes来存放整数的意思。
若在声明时没有特别赋值长短,通常编译器会默认使用长整型。
第三章 Fortran程序设计基础、 输入输出及声明
四、声明
1. 整数类型
若声明多个整型变量时,可以写在同一行,如 integer a,b,c 在Fortran中,声明变量时要注意的几个原则: (1)变量的名称以使用英文字母为原则,可以内含下划线或数字,但前缀必须 是英文字母。 (2)变量名字的长度,在77标准中最起码支持6个字符长,90标准中最起码支 持31个字符长。也就是说在Fortran77种变量长度最好是在1~6之间,在
1. 乘幂要连用两个星号,不能像手写的时候只要把数字写成上标 就行了,例如22必须写成2**2。 2. 乘号不能省略,手写的算式中(A+B)(C+D)和(A+B)*(C+D)是一 样的,但写程序时只容许第2种写法,所以像2*A也不能写成2A。 3. 除法用计算编写时没有下面的表示方法:
01章FORTRAN程序设计基础精品PPT课件

的问题,因此应提供输出结果,否则算法就没有 实际意义。
16
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然 语言、一般流程图、N-S图等。前面例1.1~ 例1.2的算法是用自然语言──汉语描述的,其 优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常 用流程图表示算法。
17
1. 一般流程图
一般流程图是一种传统的算法描述方法,它用不同 的几何图形来代表不同性质的操作。例如,用矩形框 表示要进行的操作,用菱形框表示判断,用流程线将 各步操作连接起来并指示算法的执行方向。一般流程 图的主要优点是直观性强,初学者容易掌握。缺点是 对流程线的使用没有严格限制,如毫无限制地使流程 任意转来转去,将使流程图变得毫无规律,难以阅读。 为了提高算法可读性和可维护性,必须限制无规则的 转移,使算法结构规范化。
9
什么叫程序设计?
对于初学者来说,往往把程序设计简单地理解 为只是编写一个程序。这是不全面的。“程序设计” 反映了利用计算机解决问题的全过程,包含多方面 的内容,而编写程序只是其中的一个方面。使用计 算机解决实际问题,通常是先要对问题进行分析并 建立数学模型,然后考虑数据的组织方式和算法, 并用某一种程序设计语言编写程序,最后调试程序, 使之运行后能产生预期的结果。这个过程称为程序 设计。
x →max
i+1→i
n
n
输出max
20
2. 程序的三种基本结构
1966年Bohra和Jacopini提出了组成结构化算 法的三种基本结构,即顺序结构、选择结构和循 环结构。
《高级语言程序设计(Fortran)》
Tel: E-mail:
1
计算机是在“程序”的控制下进行自动工作的, 它解决任何实际问题都依赖于解决问题的程序。
16
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然 语言、一般流程图、N-S图等。前面例1.1~ 例1.2的算法是用自然语言──汉语描述的,其 优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常 用流程图表示算法。
17
1. 一般流程图
一般流程图是一种传统的算法描述方法,它用不同 的几何图形来代表不同性质的操作。例如,用矩形框 表示要进行的操作,用菱形框表示判断,用流程线将 各步操作连接起来并指示算法的执行方向。一般流程 图的主要优点是直观性强,初学者容易掌握。缺点是 对流程线的使用没有严格限制,如毫无限制地使流程 任意转来转去,将使流程图变得毫无规律,难以阅读。 为了提高算法可读性和可维护性,必须限制无规则的 转移,使算法结构规范化。
9
什么叫程序设计?
对于初学者来说,往往把程序设计简单地理解 为只是编写一个程序。这是不全面的。“程序设计” 反映了利用计算机解决问题的全过程,包含多方面 的内容,而编写程序只是其中的一个方面。使用计 算机解决实际问题,通常是先要对问题进行分析并 建立数学模型,然后考虑数据的组织方式和算法, 并用某一种程序设计语言编写程序,最后调试程序, 使之运行后能产生预期的结果。这个过程称为程序 设计。
x →max
i+1→i
n
n
输出max
20
2. 程序的三种基本结构
1966年Bohra和Jacopini提出了组成结构化算 法的三种基本结构,即顺序结构、选择结构和循 环结构。
《高级语言程序设计(Fortran)》
Tel: E-mail:
1
计算机是在“程序”的控制下进行自动工作的, 它解决任何实际问题都依赖于解决问题的程序。
第2章Fortran程序设计基础.ppt

第6章 子程序
• 子程序是构造大型程序的有效工具,一个实用程序(不 管是系统程序还是应用程序),一般都含有多个子程序。
• FORTRAN 90 中的子程序按子程序完成的功能划分有子 例行程序、函数子程序、数据块子程序等,按是否定义 在某个特定的程序单元内部来划分有程序单元子程序、 模块子程序以及内部(INTERNAL)子程序等,这些通称为 子程序。
FUNCTION SM(M,N,L) SM=0 DO I=M,N
IF (L>0) THEN SM=SM+I**L
ELSE
PROGRAM EXAM2
!开始主程序单元定义
WRITE(*,*)'S1=',SM(1,100,2) !调用函数子程序SM完成S1的计算
WRITE(*,*)'S2=',SM(100,140,3)
PROGRAM EXAM1B
INTEGER X
6.2 函数子程序
语句函数由于要求在一个语句中完成函数的定义,因而它只能解决一些较 简单的问题,当函数关系比较复杂,用一个语句无法定义时,语句函数就 无能为力了,这时需要用到函数子程序。
6.2.1 函数子程序的定义
函数子程序是以保留字 FUNCTION 开头,并以保留字 END结束的 一个程序段,该程序段可以独立存储为一个文件,也可以和调用 它的程序单元合并存储为一个程序文件。函数子程序的定义格式 是:
INTEGER F(X,Y)=X**2+Y**2 ! 定义了一个整型函数F
NF(X,Y)=X**2+Y**2 F
! 也同样定义了一个整型函数
2.语句函数的虚参
在语句函数定义语句中的函数参数称为虚参,他们本身是没有值的,只有在 函数调用时才用实际参数(称为实参)代替。实参或是常数、或是一个有确定 值的变量、或是一个可以计算值的表达式。虚参在形式上与普通变量相同, 一个语句函数中的虚参不能同名。不同语句函数中的虚参可以同名,虚参也 可以和程序中的变量同名。
• 子程序是构造大型程序的有效工具,一个实用程序(不 管是系统程序还是应用程序),一般都含有多个子程序。
• FORTRAN 90 中的子程序按子程序完成的功能划分有子 例行程序、函数子程序、数据块子程序等,按是否定义 在某个特定的程序单元内部来划分有程序单元子程序、 模块子程序以及内部(INTERNAL)子程序等,这些通称为 子程序。
FUNCTION SM(M,N,L) SM=0 DO I=M,N
IF (L>0) THEN SM=SM+I**L
ELSE
PROGRAM EXAM2
!开始主程序单元定义
WRITE(*,*)'S1=',SM(1,100,2) !调用函数子程序SM完成S1的计算
WRITE(*,*)'S2=',SM(100,140,3)
PROGRAM EXAM1B
INTEGER X
6.2 函数子程序
语句函数由于要求在一个语句中完成函数的定义,因而它只能解决一些较 简单的问题,当函数关系比较复杂,用一个语句无法定义时,语句函数就 无能为力了,这时需要用到函数子程序。
6.2.1 函数子程序的定义
函数子程序是以保留字 FUNCTION 开头,并以保留字 END结束的 一个程序段,该程序段可以独立存储为一个文件,也可以和调用 它的程序单元合并存储为一个程序文件。函数子程序的定义格式 是:
INTEGER F(X,Y)=X**2+Y**2 ! 定义了一个整型函数F
NF(X,Y)=X**2+Y**2 F
! 也同样定义了一个整型函数
2.语句函数的虚参
在语句函数定义语句中的函数参数称为虚参,他们本身是没有值的,只有在 函数调用时才用实际参数(称为实参)代替。实参或是常数、或是一个有确定 值的变量、或是一个可以计算值的表达式。虚参在形式上与普通变量相同, 一个语句函数中的虚参不能同名。不同语句函数中的虚参可以同名,虚参也 可以和程序中的变量同名。
第3章 Fortran程序设计基础

Fortran95 程序设计
彭国伦 编著
第3章
Fortran程序设计基础 Fortran程序设计基础
1
Fortran95程序设计 Fortran95程序设计
Fortran程序设计基础 第3章 Fortran程序设计基础
3-1 字符集
“字符集”-编写Fortran程序时所能使用的所有字符及符号。 基本的FORTRAN 95字符集:
Fortran95程序设计 Fortran95程序设计
Fortran程序设计基础 第3章 Fortran程序设计基础
3-7 Fortran简史 简史
Fortran的起源,1954年IBM的一项计划,John Backus 在 IBM704上开发程序。1957年交出第一套Fortran编译器, 从而诞生了Fortran语言。 Fortran ← Formula Translator 数学公式翻译 1966年美国国家标准局ANSI 统一了Fortran语言标准,即 Fortran66 1977年制订了新的F77,特点是引入结构化设计。 1992年公布F90,是F77的增集,加入面向对象、指针数组 等功能,并改良了语法编写格式。 1997年公布F95,是F90的修正版,并开始支持并行运算。 最新的200X仍未正式推出。
Fortran95程序设计 Fortran95程序设计
Fortran程序设计基础 第3章 Fortran程序设计基础
3-3 Fortran的数据类型 的数据类型
数据类型是指使用Fortran在计算机内存中记录文本、数值 等数据的最小单位及方法。 1. 整数(INTEGER) 长整形:32bits(4bytes)-231+1~231 短整型:16bits(2bytes)-215+1~215 -32768~ +32767 2. 浮点数(REAL) 单精度:32bits(4bytes)6~7位 ±3.4*1038 ±1.18*10-38 双精度:64bits(8bytes)15~16位 ±1.79*10308 ±2.23*10-308 3. 复数(COMPLEX) 复数由两个浮点数来做记录 单精度复数和双精度复数两种
彭国伦 编著
第3章
Fortran程序设计基础 Fortran程序设计基础
1
Fortran95程序设计 Fortran95程序设计
Fortran程序设计基础 第3章 Fortran程序设计基础
3-1 字符集
“字符集”-编写Fortran程序时所能使用的所有字符及符号。 基本的FORTRAN 95字符集:
Fortran95程序设计 Fortran95程序设计
Fortran程序设计基础 第3章 Fortran程序设计基础
3-7 Fortran简史 简史
Fortran的起源,1954年IBM的一项计划,John Backus 在 IBM704上开发程序。1957年交出第一套Fortran编译器, 从而诞生了Fortran语言。 Fortran ← Formula Translator 数学公式翻译 1966年美国国家标准局ANSI 统一了Fortran语言标准,即 Fortran66 1977年制订了新的F77,特点是引入结构化设计。 1992年公布F90,是F77的增集,加入面向对象、指针数组 等功能,并改良了语法编写格式。 1997年公布F95,是F90的修正版,并开始支持并行运算。 最新的200X仍未正式推出。
Fortran95程序设计 Fortran95程序设计
Fortran程序设计基础 第3章 Fortran程序设计基础
3-3 Fortran的数据类型 的数据类型
数据类型是指使用Fortran在计算机内存中记录文本、数值 等数据的最小单位及方法。 1. 整数(INTEGER) 长整形:32bits(4bytes)-231+1~231 短整型:16bits(2bytes)-215+1~215 -32768~ +32767 2. 浮点数(REAL) 单精度:32bits(4bytes)6~7位 ±3.4*1038 ±1.18*10-38 双精度:64bits(8bytes)15~16位 ±1.79*10308 ±2.23*10-308 3. 复数(COMPLEX) 复数由两个浮点数来做记录 单精度复数和双精度复数两种
第1章 FORTRAN程序设计基础

n
i+1 →i 输出max
思考题
用N-S图描述求解以下问题的算法。 (1)将两个变量的值互换。 (2)判断一个数N能否同时被3和5整除。 (3) 输入三角形的三个边长,求三角形的面积。
三、程序设计方法
结构化程序设计
自顶向下 逐步求精 模块化
面向对象程序设计(OOP)
传统的程序设计是基于求解过程来组织程序流程。在 这类程序中,数据和施加于数据的操作是独立设计的, 以对数据进行操作的过程作为程序的主体。面向对象 程序设计则以对象作为程序的主体。对象是数据和操 作的“封装体”,封装在对象内的程序通过“消息” 来驱动运行。在图形用户界面上,消息可通过键盘或 鼠标的某种操作来传递。在对象内部的实现上,常常 使用结构化程序设计方法。
(3) N-S图
N-S图以三种基本结 构作为构成算法的基 本元素,每一种基本 结构用一个矩形框来 表示,而且取消了流 程线,各基本结构之 间保持顺序执行关系。 N-S图可以保证程序 具有良好的结构,所 以N-S图又叫做结构 化流程图。 输入max 1→i 当i≤9时 输入x x y x →max
x>max?
输入max
(1)一般Leabharlann 程图用不同的几何图形 来代表不同性质的 操作。例如,用矩 形框表示要进行的 操作,用菱形框表 示判断,用流程线 将各步操作连接起 来并指示算法的执 行方向。
1→i i≤9? y 输入x x>max? y x →max i+1→i n n
输出max
(2) 程序的三种基本结构
顺序结构。顺序结构是最简单的一种基 本结构,依次顺序执行不同的程序块。 选择结构。选择结构根据条件满足或不 满足而去执行不同的程序块。 循环结构。循环结构是指重复执行某些 操作,重复执行的部分称为循环体。
1_FORTRAN程序设计基础

起止框
1
流程线 0
有错
输入输出框 2 i=-1
y%400==0
连接点
Y i=1 2 y=y+1 N 3注释框 y>2500 Y 结束
判断框
i=1
2
N i=-1 2
处理框
FORTRAN程序设计
Page7
算法的表示方法:改进的流程图
三种基本结构
a Y A A B b 顺序结构 b 选择结构 a P N B A N a P Y P Y b 循环结构 (当型循环) b 循环结构 (直到型循环) a A N
程序与程序设计
程序设计方法+算法+数据结构+语言工具 =程序
分析问题+设计算法+编写程序+调试程序 =程序设计
FORTRAN程序设计
Page2
ቤተ መጻሕፍቲ ባይዱ
算法
广义的定义:为解决一个问题而采取的方法和步骤 计算机能够执行的算法:数值运算算法和非数值运算算法
FORTRAN程序设计
Page3
简单算法举例
例1.1 判断2000-2500年中每一年是否是闰年,将结果输出。
FORTRAN程序设计
!函数子程序 function area(a,b,c) implicit none real a,b,c,s,area s=(a+b+c)/2.0 area=sqrt(s*(s-a)*(s-b) & *(s-c)) return end
Page13
打开开发系统
看到的系统界面
判断闰 年的算 法的N -S图
FORTRAN程序设计
Page10
结构化程序设计方法
结构化程序:由三种基本结构组成的程序。 结构化程序的优点:便于编写、便于阅读、便于修改和维护 怎样编写结构化的程序: 自顶向下 逐步细化 模块化编程 结构化编码
Fortran程序设计基础

可以从第7列以后任何位置开始书写,但一行只能 写一个语句。语句区内的空格(不包括引号内字符 串中的空格)在编译时被忽略。
不使用,超过会被忽略,有的编译器会发出错误信 息
第一节 程序书写——固定格式
例2-4 固定格式的Fortran程序
1 2 3456
7至72
73至80
C
FIXCED FORMAT
*
已知a,b,c,求一元二次方程的根
例2-5 自由格式的Fortran程序
PROGRAM MAIN
REAL A,B,C,P,Q,X1,X2
A = 1.0; B = 3.0; C = -6.0
!一行书写多个语句,各语句之间用;分开
P = -B / (2.0 * A) Q = SQRT(B*B - 4.0*A*C)/& !下一行是续行
(2.0*A)
X1 = P + & &Q
X2 = P - Q
!下一行语句是续行 !此行是上一行的续行
WRITE (*, 10) X1, X2 10 FORMAT(1X, 2F6.2)
END
第二节 字符集和标识符——标识符
标识符是程序中变量、常量、例程等的名称 给变量、常量、函数等标识符命名时,必须以字母
开头,后面可接多达30个字母(A~Z、a~z)、 数字(0~9)或下划线(_) 只能以字母开头; 不能含有空格; 不区分字母大小写; 长度限定为31个字符(Fortran 77为6个字符); 避免与关键字、标准例程重名。
自定义数据类型(派生数据类型)
第三节 数据类型——整型
整型数的存储
01111111
27
11111111
215
不使用,超过会被忽略,有的编译器会发出错误信 息
第一节 程序书写——固定格式
例2-4 固定格式的Fortran程序
1 2 3456
7至72
73至80
C
FIXCED FORMAT
*
已知a,b,c,求一元二次方程的根
例2-5 自由格式的Fortran程序
PROGRAM MAIN
REAL A,B,C,P,Q,X1,X2
A = 1.0; B = 3.0; C = -6.0
!一行书写多个语句,各语句之间用;分开
P = -B / (2.0 * A) Q = SQRT(B*B - 4.0*A*C)/& !下一行是续行
(2.0*A)
X1 = P + & &Q
X2 = P - Q
!下一行语句是续行 !此行是上一行的续行
WRITE (*, 10) X1, X2 10 FORMAT(1X, 2F6.2)
END
第二节 字符集和标识符——标识符
标识符是程序中变量、常量、例程等的名称 给变量、常量、函数等标识符命名时,必须以字母
开头,后面可接多达30个字母(A~Z、a~z)、 数字(0~9)或下划线(_) 只能以字母开头; 不能含有空格; 不区分字母大小写; 长度限定为31个字符(Fortran 77为6个字符); 避免与关键字、标准例程重名。
自定义数据类型(派生数据类型)
第三节 数据类型——整型
整型数的存储
01111111
27
11111111
215
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组的基本操作
数组的定义 数组的引用 数组的赋值 数组的计算 数组的输入输出
数组的定义
类型说明 [::] 数组名([下标下界:]下标上界[,…])[,…] 如 real runoff(365) real runoff(12,31) real runoff(1:12,1:31) 数组下标下界缺省时,值为1
(3)引用数组片段 数组名(下标范围)
PROGRAM TEST IMPLICIT NONE ! 变量定义 REAL :: A1, A2,A3,A4,A5,B(5,5) READ(*, *)A1,A2,A3,A4,A5 ! 数组片断的引用 B(1,1:5) = A1 B(2,1:5) = A2 B(3,1:5) = A3 B(4,1:5) = A4 B(5,1:5) = A5
格式说明语句 format
写法:FORMAT (format-list)
如:
integer year, month, day
write(*, 15)year, month, day
15 format(3i8)
Fortran 三种常用运算
算数运算:算数运算符及算数表达式 关系运算:关系运算符及关系表达式 逻辑运算:逻辑运算符及逻辑表达式
1954:IBM 在 IBM 704 上发展 1957:IBM发表,Fortran → Formula Translator 1966:American Standards Association制定 Fortran 66
◦ 鉴于各家编译器无法相容,故统一标准 ◦ American Standards Association:美国国家标准局(ANSI)的前身 1978:ANSI 公布 Fortran 77 标准 ◦ 删去部分内容,新增逻辑与输入输出方面的功能 1992:国际标准组织 ISO 公布 Fortran 90 标准 ◦ 与 77 版本差异较大 ◦ 加入物件导向、提供指针与加強阵列功能、自由格式写作 1997:国际标准组织 ISO 公布 Fortran 95 标准 ◦ 加强并行运算 Fortran 200x
数组的运算包括数组之间的运算及数组元素之间的运算
数组的运算,如数组间的数学运算(+,-,*,/,**), 数组的合并、转置运算等,直接以数组为操作对象。
数组元素之间的运算多通过循环语句进行
数组的输入输出
数组的输入输出多通过do循环语句或隐式do循环语句进行
如 do i=1,12
do j=1,days(i)
下面是一些逻辑表达式的例子:
(A.GT.B).AND.(A.NE.C) (X.LT.-1.0).OR.(X.GT.1.0) .NOT.((A+C)*D.LE.0.0) (A.GT.B).EQV.(C.LE.D)
பைடு நூலகம்
等价于(A>B).AND.(A/=C) 等价于(X<-1.0).OR.(X>1.0) 等价于.NOT.((A+C)*D<=0.0) 等价于(A>B).EQV.(C<=D)
运算符定义 .GT. .GE. .LT. .LE. .EQ. .NE.
所代表的数学符号
> ≥ < ≤ = ≠
意义描述
大于 大于等于 小于 小于等于 等于 不等于
关系表达式是最简单的一种逻辑表达式,它的一般形式为: <关系运算量> <关系运算符> <关系运算量> 关系运算量可以是算术量,也可以是字符量。算术量可以是数值型常
Compaq Visual Fortran 6.5
固定格式(Fortran77,后缀.f;.for) 自由格式(Fortran90,后缀.f90)
在Fortran语言中,有五种基本的数据类型可供使用。他 们分别是整型(INTEGER)、实型(REAL)、复型 (COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)
END PROGRAM TEST
数组赋值
(1)赋值语句
数组对象 = value
(2)data语句(赋初始值)
data days/31,28,31,30,31,30,31,31,30,31,30,31/
(3)do循环
do i=1,12 do j=1,31 runoff(i,j)=0 enddo enddo
金鑫 2010.8.6
1
Fortran语言基础知识
2
数据类型及I/0格式
3 Fortran 基本语法结构及程序控制
4
数组操作
5
子程序及模块化
6
文件操作及批处理
7
Fortran 编程实例及分析
Fortran语言简介
作为一门诞生于上个世纪50年代后半期的高级计算机 语言,Fortran在这个C/C++、Java等新兴语言大行其道的 时代仍然活跃在人们的视野之中。Fortran语言的长项在 于数值计算,在科学研究和工程设计领域有着广泛的用途。 在描述数学语言的自然性方面,Fortran同现存的其他高 级语言相比有着明显的优势。对于科研工作者和工程技术 人员而言,Fortran语言的易学性和易用性是公认的。
最后进行逻辑运算,各个逻辑运算符的先后顺序是:.NOT.>.AND. >.OR.>.EQV.=.NEQV.。
如果逻辑表达式中有括号,则先进行括号内的运算。
程序流程控制的常用语句结构
判断If语句 goto语句 块if结构 do循环结构
常用结构
选择结构 循环结构
If语句
IF(逻辑表达式) 执行语句
块If结构
IF(逻辑表达式1) THEN THEN 块 ELSE IF(逻辑表达式2) THEN ELSE IF块 …… ELSE ELSE块 END IF
goto 语句
goto 语句标号
do循环语句
DO 循环变量 = 循环初值,循环终值[,循环增量] 循环体 ENDDO
当循环增量为1时,可省略
选择结构设计
块IF语句 多层嵌套块IF语句
循环结构设计
“当”型循环 “直到”型循环
其他程序控制语句 End Pause stop
实例分析
(1)1~100求和 (2)输入5个数,按大小排序
数组是Fortran语言中功能最为强大、运用最为灵活的一 种数据结构。在存储结构上,数组占用一片连续的存储单 元。程序中通过数组索引来对数组元素、片断进行操作。
表控格式输入、输出 格式输入、输出
格式输入输出控制符
常用控制符 i,f,a 写法: nIw;nfw.d; naw 如: integer year, month, day write(*, "(3i8)") year, month, day 又如: real runoff write (*, "(f9.2)") runoff
函数子程序( FUNCTION ) 子例行子程序(SUBRIOUTINE) 各子程序间的数据传递
函数子程序和子例行子程序是子程序的两种常用基本形式。 它们的共同特征就是作为数据处理过程的集合。但是这两 种子程序也不完全相同,函数子程序会返回一个函数值, 且通常不会改变哑元的数值。因此,函数子程序更像是数 学上的一个函数。而子例行子程序通常用于完成一项更为 复杂的任务,通过哑元或者其他手段返回几个结果,哑元 的数值通常会在程序的执行过程中改变。
其中,算数运算是Fortran的基本运算,其基本运算符包括+,-,*, /,**
关系运算
在实际的数学或工程问题中,经常会遇到比较两个数据谁大谁小的问 题。这就是一个关系比较的问题。在Fortran中,提供了进行这类操 作的运算符和表达式规则。
关系运算符也可以称作关系比较符,它是一个双目运算符。Fortran 中定义了六个基本的关系运算符
函数子程序的一般形式为: [prefix] FUNCTION name ([d-arg-list]) [RESULT (r-name)] ... END [FUNCTION name] 1.prefix说明项 prefix说明项是一个可选参数,可以使用如下两种形式来书写: type [keyword] 或 keyword [type] 2.d-arg-list d-arg-list表示函数的哑元列表。如果函数子程序不包含哑元,则哑
在Fortran77标准中,变量名不允许超过6个字符;在 Fortran90/95标准中,变量名不允许超过31个字符。
变量的定义及类型说明:
(1)类型说明语句
integer year, month, day
real runoff
character*10 station
(2)隐含约定
I~N 规则
对我们来说常用的数据类型为整型、实型、字符型
各数据分类分别包括常量及变量
变量名的作用是识别程序中的变量。Fortran中的变量名 命名有一定的规则,主要有以下几条。
变量名中只能包含26个英文字母和0~9十个数字;在 Fortran90/95标准中,还允许使用下划线“_”。
变量名的第一个字符必须是字母,不能是下划线“_”或 数字。
逻辑表达式的一般形式为:
<逻辑运算量><逻辑运算符><逻辑运算量>[<逻辑运算符><逻辑运算量>…]
同关系表达式不同,一个逻辑表达式中可以包括多个逻辑运算符,例如逻辑 表达式“A.GE.10.0.AND.A+C.GT.B+D.OR..NOT..TRUE.”中包含 了.AND.、.OR.、.NOT.三个逻辑运算符。在逻辑表达式中除了有逻辑运算符 外,还可以有关系运算符和算术运算符。
逻辑运算
Fortran语言中提供了5种逻辑运算符供程序员在编程时使用。新旧 Fortran标准中的逻辑运算符没有任何区别,每个运算符的左右两侧 都有一点“.”,书写时不可以省略。逻辑运算符中有的是双目运算 符,有的是单目运算符,使用中需要注意。
数组的定义 数组的引用 数组的赋值 数组的计算 数组的输入输出
数组的定义
类型说明 [::] 数组名([下标下界:]下标上界[,…])[,…] 如 real runoff(365) real runoff(12,31) real runoff(1:12,1:31) 数组下标下界缺省时,值为1
(3)引用数组片段 数组名(下标范围)
PROGRAM TEST IMPLICIT NONE ! 变量定义 REAL :: A1, A2,A3,A4,A5,B(5,5) READ(*, *)A1,A2,A3,A4,A5 ! 数组片断的引用 B(1,1:5) = A1 B(2,1:5) = A2 B(3,1:5) = A3 B(4,1:5) = A4 B(5,1:5) = A5
格式说明语句 format
写法:FORMAT (format-list)
如:
integer year, month, day
write(*, 15)year, month, day
15 format(3i8)
Fortran 三种常用运算
算数运算:算数运算符及算数表达式 关系运算:关系运算符及关系表达式 逻辑运算:逻辑运算符及逻辑表达式
1954:IBM 在 IBM 704 上发展 1957:IBM发表,Fortran → Formula Translator 1966:American Standards Association制定 Fortran 66
◦ 鉴于各家编译器无法相容,故统一标准 ◦ American Standards Association:美国国家标准局(ANSI)的前身 1978:ANSI 公布 Fortran 77 标准 ◦ 删去部分内容,新增逻辑与输入输出方面的功能 1992:国际标准组织 ISO 公布 Fortran 90 标准 ◦ 与 77 版本差异较大 ◦ 加入物件导向、提供指针与加強阵列功能、自由格式写作 1997:国际标准组织 ISO 公布 Fortran 95 标准 ◦ 加强并行运算 Fortran 200x
数组的运算包括数组之间的运算及数组元素之间的运算
数组的运算,如数组间的数学运算(+,-,*,/,**), 数组的合并、转置运算等,直接以数组为操作对象。
数组元素之间的运算多通过循环语句进行
数组的输入输出
数组的输入输出多通过do循环语句或隐式do循环语句进行
如 do i=1,12
do j=1,days(i)
下面是一些逻辑表达式的例子:
(A.GT.B).AND.(A.NE.C) (X.LT.-1.0).OR.(X.GT.1.0) .NOT.((A+C)*D.LE.0.0) (A.GT.B).EQV.(C.LE.D)
பைடு நூலகம்
等价于(A>B).AND.(A/=C) 等价于(X<-1.0).OR.(X>1.0) 等价于.NOT.((A+C)*D<=0.0) 等价于(A>B).EQV.(C<=D)
运算符定义 .GT. .GE. .LT. .LE. .EQ. .NE.
所代表的数学符号
> ≥ < ≤ = ≠
意义描述
大于 大于等于 小于 小于等于 等于 不等于
关系表达式是最简单的一种逻辑表达式,它的一般形式为: <关系运算量> <关系运算符> <关系运算量> 关系运算量可以是算术量,也可以是字符量。算术量可以是数值型常
Compaq Visual Fortran 6.5
固定格式(Fortran77,后缀.f;.for) 自由格式(Fortran90,后缀.f90)
在Fortran语言中,有五种基本的数据类型可供使用。他 们分别是整型(INTEGER)、实型(REAL)、复型 (COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)
END PROGRAM TEST
数组赋值
(1)赋值语句
数组对象 = value
(2)data语句(赋初始值)
data days/31,28,31,30,31,30,31,31,30,31,30,31/
(3)do循环
do i=1,12 do j=1,31 runoff(i,j)=0 enddo enddo
金鑫 2010.8.6
1
Fortran语言基础知识
2
数据类型及I/0格式
3 Fortran 基本语法结构及程序控制
4
数组操作
5
子程序及模块化
6
文件操作及批处理
7
Fortran 编程实例及分析
Fortran语言简介
作为一门诞生于上个世纪50年代后半期的高级计算机 语言,Fortran在这个C/C++、Java等新兴语言大行其道的 时代仍然活跃在人们的视野之中。Fortran语言的长项在 于数值计算,在科学研究和工程设计领域有着广泛的用途。 在描述数学语言的自然性方面,Fortran同现存的其他高 级语言相比有着明显的优势。对于科研工作者和工程技术 人员而言,Fortran语言的易学性和易用性是公认的。
最后进行逻辑运算,各个逻辑运算符的先后顺序是:.NOT.>.AND. >.OR.>.EQV.=.NEQV.。
如果逻辑表达式中有括号,则先进行括号内的运算。
程序流程控制的常用语句结构
判断If语句 goto语句 块if结构 do循环结构
常用结构
选择结构 循环结构
If语句
IF(逻辑表达式) 执行语句
块If结构
IF(逻辑表达式1) THEN THEN 块 ELSE IF(逻辑表达式2) THEN ELSE IF块 …… ELSE ELSE块 END IF
goto 语句
goto 语句标号
do循环语句
DO 循环变量 = 循环初值,循环终值[,循环增量] 循环体 ENDDO
当循环增量为1时,可省略
选择结构设计
块IF语句 多层嵌套块IF语句
循环结构设计
“当”型循环 “直到”型循环
其他程序控制语句 End Pause stop
实例分析
(1)1~100求和 (2)输入5个数,按大小排序
数组是Fortran语言中功能最为强大、运用最为灵活的一 种数据结构。在存储结构上,数组占用一片连续的存储单 元。程序中通过数组索引来对数组元素、片断进行操作。
表控格式输入、输出 格式输入、输出
格式输入输出控制符
常用控制符 i,f,a 写法: nIw;nfw.d; naw 如: integer year, month, day write(*, "(3i8)") year, month, day 又如: real runoff write (*, "(f9.2)") runoff
函数子程序( FUNCTION ) 子例行子程序(SUBRIOUTINE) 各子程序间的数据传递
函数子程序和子例行子程序是子程序的两种常用基本形式。 它们的共同特征就是作为数据处理过程的集合。但是这两 种子程序也不完全相同,函数子程序会返回一个函数值, 且通常不会改变哑元的数值。因此,函数子程序更像是数 学上的一个函数。而子例行子程序通常用于完成一项更为 复杂的任务,通过哑元或者其他手段返回几个结果,哑元 的数值通常会在程序的执行过程中改变。
其中,算数运算是Fortran的基本运算,其基本运算符包括+,-,*, /,**
关系运算
在实际的数学或工程问题中,经常会遇到比较两个数据谁大谁小的问 题。这就是一个关系比较的问题。在Fortran中,提供了进行这类操 作的运算符和表达式规则。
关系运算符也可以称作关系比较符,它是一个双目运算符。Fortran 中定义了六个基本的关系运算符
函数子程序的一般形式为: [prefix] FUNCTION name ([d-arg-list]) [RESULT (r-name)] ... END [FUNCTION name] 1.prefix说明项 prefix说明项是一个可选参数,可以使用如下两种形式来书写: type [keyword] 或 keyword [type] 2.d-arg-list d-arg-list表示函数的哑元列表。如果函数子程序不包含哑元,则哑
在Fortran77标准中,变量名不允许超过6个字符;在 Fortran90/95标准中,变量名不允许超过31个字符。
变量的定义及类型说明:
(1)类型说明语句
integer year, month, day
real runoff
character*10 station
(2)隐含约定
I~N 规则
对我们来说常用的数据类型为整型、实型、字符型
各数据分类分别包括常量及变量
变量名的作用是识别程序中的变量。Fortran中的变量名 命名有一定的规则,主要有以下几条。
变量名中只能包含26个英文字母和0~9十个数字;在 Fortran90/95标准中,还允许使用下划线“_”。
变量名的第一个字符必须是字母,不能是下划线“_”或 数字。
逻辑表达式的一般形式为:
<逻辑运算量><逻辑运算符><逻辑运算量>[<逻辑运算符><逻辑运算量>…]
同关系表达式不同,一个逻辑表达式中可以包括多个逻辑运算符,例如逻辑 表达式“A.GE.10.0.AND.A+C.GT.B+D.OR..NOT..TRUE.”中包含 了.AND.、.OR.、.NOT.三个逻辑运算符。在逻辑表达式中除了有逻辑运算符 外,还可以有关系运算符和算术运算符。
逻辑运算
Fortran语言中提供了5种逻辑运算符供程序员在编程时使用。新旧 Fortran标准中的逻辑运算符没有任何区别,每个运算符的左右两侧 都有一点“.”,书写时不可以省略。逻辑运算符中有的是双目运算 符,有的是单目运算符,使用中需要注意。