fortran讲义习题ppt整合
合集下载
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-第十一讲55页PPT

SUBROUTINE localsub1(var1,var2)
...
END SUBROUTINE localsub1
END PROGRAM main
递归过程
RECURSIVE SUBROUTINE sub() RECURSIVE FUNCTION f() 例:
RECURSIVE INTEGER function fact(n) RESULT(answer) IMPLICIT NONE INTEGER :: n IF (n>=1) THEN answer=n*fact(n-1) ELSE answer=1
例如:
REAL,POINTER :: p
REAL,TARGET :: a=3.
p=>a
运行结果称指针p与变量a相关联
p单元内存储的是变量a在内
p=4
存中的地址
修改的是p指向的内存单元的值
等价于
a=4
REAL,POINTER :: p1,p2
REAL,TARGET :: a=3.,b=4. p1=>a p2=>p1 此时p2的值? Pointer1=>Pointer2
用数组的处理方法是有一定的局限性的, 如果向量的每个维度不是同一类型,就不 适合了
下面我们从简单的二维向量的处理开始学 习如何在模块中声明派生数据类型以及使
问题:创建一个包含二维向量数据类型的 模块以及两个完成向量加减法的函数
第一步: 创建一个容纳二维向量的派生数据类型: TYPE :: vector REAL :: x REAL :: y END TYPE vector
声明变量
因为自定义的数据类型是由内置数据类型 组成的,所以,也称之为派生数据类型
第2章 Fortran程序设计基础PPT课件

SUBRO UTINE 、MO NEY 、< = 都是非法的。
一般情况下,记号之间需留有空格。例如:100CONTINUE 是非法的, 因为标号100 和关键字 CONTINUE 是两个独立的记号。
有的记号间的空格是可选的,例如:END PROGRAM 和 ENDPROGRAM是 合法的。
四. 注释
END
注释行
注:其中处于同一水平位置的各语句之间没有严格的前后 顺序,而不同的行则表示了严格的在程序当中出现的前后 顺序。
语句顺序的一般原则:
程序段的段头语句,只能ຫໍສະໝຸດ 现在每个程序段开始的位置。如: PROGRAM、FUNCTION、SUBROUTINE、BLOCK、DATA、MODULE等;
如果出现USE语句,则只能出现在段头语句之后、其他语句之前; IMPLICIT NONE语句应紧跟在USE语句之后,在其他说明语句之前; FORMAT语句和DATA语句也可以放置在可执行语句中间,不过把DATA
* 固定格式是为配合早期使用穿孔卡片输入程序所发明的 格式, 这里介绍固定格式,只是让大家对 Fortran 77 程序有所了解,建议大家在编写程序时采用前述地自由 格式。
* 固定格式尽管有其过多的限制,但由于具有一定的规范 性,方便程序的编写和检查。
二、自由格式
自由格式是Fortran 90之后的新写法,是目前最流行的书写格 式,取消了许多限制。没有规定每行的第几个字符有什么作用。
固定格式说明:
一行共80列,分为4个区: 第1-5列,标号区,可以空白,也
可以出现符号;
第6列,续行标志区,可以空白( 无续行),非0字符(续行 );
第7-72列,语句区,语句区的书写 可以从任意一列开始,空白 编译时被忽略,一行只能书 写一个语句;
Fortran PPT课件 (6)IF基本用法

.EQV.
.NEQV.
两边的表达式逻辑运算结果相同,整个表达式成立
两边的表达式逻辑运算结果不相同,整个表达式成立 运算优先级低于大于小于和等式的运算符号
2.2 IF分支结构
OR “或者”,只要一边成立即为真
2.2 IF分支结构
【.NOT.】 只跟一个ห้องสมุดไป่ตู้达式在后面,把原本的逻辑结果取反 (.not. 3>5) !3>5 不成立,经过.not.取反为‘真’ (.not. 1<2) !1<2成立,取反后为‘F’
2.2 IF分支结构
【.EQV.】
逻辑A TRUE TRUE FALSE FALSE
逻辑B TRUE FALSE TRUE FALSE
A .EQV. B TRUE FALSE FALSE TRUE
(1>3 .EQV. 2>3) (1>3 .EQV. 2<3)
!两边都不成立,表达式为真 !两边结果不同,表达式为假
2.2 IF分支结构
各种运算符的优先级
运算类别 括号 算术运算符 运算符 ( ** *, / +, .GT. , .GE., .LT., .LE. ,.EQ. , .NE. .NOT. .AND. .OR. .EQV., .NEQV. ) 优先级 1 2 3 4 5 6 7 8 9
关系运算
集合逻辑运算
endif逻辑成立执行这一块代码逻辑不成立执行这一块代码双分支条件22if分支结构模块内的执行语句后缩便于阅读和分辨22if分支结构fortran90fortran77判断是否?相等?
2.2 IF分支结构
IF基本用法
IF(逻辑判断式) THEN … 逻辑成立时,才会执行这里的程序代码 … … END IF
fortran教程.ppt

N-S 图——结构化流程图 S=0
例2 用N-S图表示
N=1
S+1/N= S
N+1= N
直到N>100为止
打印 S 值
例1 用N-S图表示
N=0 T=0
输入 A A+T →T N+1 →N 直到N≥100 为止 打印 T
例3
L=1
N=1
S=1
SUM = 1
L+2 → L
-S → S
N+1 → N
SUM+S/L →SUM
(3)输入一个数给“收入变量”A
(4)将A和T的值相加,其和值放在变量T中 A+TT;
(5)使N的值加1,即N+1 N(N的值表示已累加数据的个数)
(6)若N﹤100,则返回(3)继续执行以后各步,否 则转到执行(7)
(7)打印出总和T的值
以上算法体现“迭代”的思想—计算机算法的最大特 点
例2 求 1
将高级语言程序(源程序)转换为机器语言程序(目标程序)
的工作由“编译程序”来完成。 编译
执行
高级语言程序
机器指令目标程序
计算结果
编译程序 (预先存如电脑)
裸机
用户源程序
操作系统
高级语言编译系统
计算机系统与操作系统关系示意图
§ 1-2 算法(Algorithm)与程序设计(Programming)
1. 近50年的丰富积累,资源不浪费,对原有程 序向下兼容。而C语言与Matlab才20多年
2. FORTRAN书写和语法要求严格,更适合于 严谨的科学计算。而C对数组不提供越界检查, 容易出错,而且不容易查出
3. FORTRAN 90~95可以直接对矩阵和复数进行 运算。而C语言则要用多重循环
Fortran结构体PPT课件

program clerkrecord
implicit none
integer :: k, i
type clerk
! 定义结构体类型
integer num
character(15) name
real sal
end type clerk
type (clerk), dimension(150):: cl ! 定义结构体数组
TYPE STUDENT
CHARACTER(15) NAME
INTEGER
MARK
INTEGER
GRADE
END TYPE STUDENT
TYPE (STUDENT)::STRE (N)
INTEGER I, N, KEY
I=1
DO WHILE((STRE (I)%MARK.NE.KEY).AND.(I.LE.N))
i=1
do while (stre(i)% MARK <new% MARK. and. i<=N)
i=i+1
end do
do j=N, i, -1
stre(j+1)=stre(j)
end do
stre(i)=new
end
12
! 顺序查找
SUBROUTINE SORT_SEARCH(STRE, N, KEY)
read *, cl(i).sal end do do i=1, 150 if(cl(i).sal<500) then ! 打印 工资<500的职工信息 及计数
k=k+1 print*, cl(i).num, " ", cl(i).name, " ", cl(i).sal end if end do Print *, k end
FORTRAN语言第2章共8章PPT课件

1.交替使用法, ″I ′ m a student″ ′He said:"I am feeling well." ′
2.重复使用法, ′I′′m a student′ "He said:""I'm feeling well."""
21
字符串内字符的个数称为字符串的长度。长度为0的字
符串称为空串。在字符串内部的空格是有效字符,并 占有一个字符的位置。例如, ′ABC ′和′A B C ′ 是两个不同的字符串。前者字符串的长度为3,后者为 5。 字符串中的一个西文字符占据一个字节的存储空间, 一个汉字(含汉语标点符号)占据2个字节的存储空间, 且按两个西文字符计算长度,如字符串‘中国’的长 度是4 。
“,”、“:”和空格; (F77中整数的空格被忽略,而F90及以上版本
整数加入空格将产生错误)
(2)整型常量不能有小数点;
(3)正负号和数字之间可以保留空格。
9
第一节 FORTRAN常量
三、FORTRAN常量 1、整型常量
整型数据:微机支持4种kind_Value:1,2,4,8 (1) 范围: -128~127 (2) 范围: -32768~32767 (3) -2147483648~2147483647(-231~231-1) (4)-9223372036854775808~9223372036854775807 Integer F77默认kind_Value的值为2
PARAMETER(PI=3.1415926,g=9.81) 该语句定义了两个符号常用PI和g,在该程序单位内,PI 代表3.1415926,g代表9.81。
parameter为特有的常量定义标识,要定义的项必须 放在()内,如果有多项,每项之间要用逗号隔开。
2.重复使用法, ′I′′m a student′ "He said:""I'm feeling well."""
21
字符串内字符的个数称为字符串的长度。长度为0的字
符串称为空串。在字符串内部的空格是有效字符,并 占有一个字符的位置。例如, ′ABC ′和′A B C ′ 是两个不同的字符串。前者字符串的长度为3,后者为 5。 字符串中的一个西文字符占据一个字节的存储空间, 一个汉字(含汉语标点符号)占据2个字节的存储空间, 且按两个西文字符计算长度,如字符串‘中国’的长 度是4 。
“,”、“:”和空格; (F77中整数的空格被忽略,而F90及以上版本
整数加入空格将产生错误)
(2)整型常量不能有小数点;
(3)正负号和数字之间可以保留空格。
9
第一节 FORTRAN常量
三、FORTRAN常量 1、整型常量
整型数据:微机支持4种kind_Value:1,2,4,8 (1) 范围: -128~127 (2) 范围: -32768~32767 (3) -2147483648~2147483647(-231~231-1) (4)-9223372036854775808~9223372036854775807 Integer F77默认kind_Value的值为2
PARAMETER(PI=3.1415926,g=9.81) 该语句定义了两个符号常用PI和g,在该程序单位内,PI 代表3.1415926,g代表9.81。
parameter为特有的常量定义标识,要定义的项必须 放在()内,如果有多项,每项之间要用逗号隔开。
第一章FORTRAN程序设计基础精品PPT课件

第二章
FORTRAN程序设计基础
计算机是在“程序”的控制下进行自动工作 的,它解决任何实际问题都依赖于解决问题的程 序。
学习FORTRAN程序设计的目的,就是要学 会利用FORTRAN语言编写出适合自己实际需要 的程序,让计算机完成自己指定的任务。
本章将介绍:
• 程序设计的基本概念
• FORTRAN 语言的发展
1. 一般流程图
一般流程图是一种传统的算法描述方法,它 用不同的几何图形来代表不同性质的操作。例 如,用矩形框表示要进行的操作,用菱形框表 示判断,用流程线将各步操作连接起来并指示 算法的执行方向。一般流程图的主要优点是直 观性强,初学者容易掌握。缺点是对流程线的 使用没有严格限制,如毫无限制地使流程任意 转来转去,将使流程图变得毫无规律,难以阅 读。为了提高算法可读性和可维护性,必须限 制无规则的转移,使算法结构规范化。
例1.1 求 u x y x y
其中
a2 b2 ab xa2 b2 ab
这一题的算法并不难,可写成:
a b
y
a
4
b
a b
(1)从键盘输入a、b的值。
(2)如果a<b,则 xa2b2,yaa bb,
否则 xa2b2,y 4 。
(3)计算u的值。
ab
(4)输出u的值。
ab ab
例1.2 输入十个数,要求找出其中最大的数。
(3) 有效性。算法中的每一步操作必须是可执行 的。
(4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。
(5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然语言、一般流 程图、N-S图等。前面例1.1~例1.3的算法是用自然语言── 汉语描述的,其优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常用流程图表示算 法。
FORTRAN程序设计基础
计算机是在“程序”的控制下进行自动工作 的,它解决任何实际问题都依赖于解决问题的程 序。
学习FORTRAN程序设计的目的,就是要学 会利用FORTRAN语言编写出适合自己实际需要 的程序,让计算机完成自己指定的任务。
本章将介绍:
• 程序设计的基本概念
• FORTRAN 语言的发展
1. 一般流程图
一般流程图是一种传统的算法描述方法,它 用不同的几何图形来代表不同性质的操作。例 如,用矩形框表示要进行的操作,用菱形框表 示判断,用流程线将各步操作连接起来并指示 算法的执行方向。一般流程图的主要优点是直 观性强,初学者容易掌握。缺点是对流程线的 使用没有严格限制,如毫无限制地使流程任意 转来转去,将使流程图变得毫无规律,难以阅 读。为了提高算法可读性和可维护性,必须限 制无规则的转移,使算法结构规范化。
例1.1 求 u x y x y
其中
a2 b2 ab xa2 b2 ab
这一题的算法并不难,可写成:
a b
y
a
4
b
a b
(1)从键盘输入a、b的值。
(2)如果a<b,则 xa2b2,yaa bb,
否则 xa2b2,y 4 。
(3)计算u的值。
ab
(4)输出u的值。
ab ab
例1.2 输入十个数,要求找出其中最大的数。
(3) 有效性。算法中的每一步操作必须是可执行 的。
(4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。
(5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自然语言、一般流 程图、N-S图等。前面例1.1~例1.3的算法是用自然语言── 汉语描述的,其优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常用流程图表示算 法。
Fortran PPT课件1 (9)DO循环结构

3.2 DO循环结构
[name:] do [label[,]] [loop_control] block [label] term_stmt [name]
block为循环体,即重复执行的语句部分; term_stmt为循环终端语句,可谓CONTINUE 或者ENDDO,也可以是允许的其他可执行语句;
3.2 DO循环结构
do while(e) …… …… …… end do
逻辑表达式成立时,执行循环
do while循环执行过程
3.2 DO循环结构
例:使用DO WHILE循环计算2+4+6+8+10
program ex0604 implicit none integer, parameter :: limit=10 ! 计数器的上限 integer counter ! 计数器 integer :: ans = 0 ! 拿来累加使用 counter = 2 ! 设定计数器初值 do while( counter <= limit ) ans = ans + counter counter = counter + 2 ! 计数器累加 end do write(*,*) ans stop end
3.2 DO循环结构
FORTRAN 77经常用CONTINUE来结束程序
100
do 100, counter=2, limit, 2 ans=ans+counter continue
3.2 DO循环结构
Do i=e1, e2 [, e3]
1) 计数增值e3可以为负数,则终值e2必须小于起始 值,才能循环。例: do i=10, 1, -1 write (*, *) I end do 作计数器的变量I, 在循环的程序模块中不能再使 用命令来改变它的数值, 不然在编译中会发生 错误 do i=1, 10 i=i+1 end do
Fortran-第三讲(含习题课与实验一)

! 例程:3_4_1.f90 PROGRAM test_cycle INTEGER :: i,s=0 DO i=1,100 IF (MOD(i,10)==6) CYCLE s=s+i END DO WRITE(*,*) i,s END PROGRAM test_cycle
3.5 EXIT语句
在3.1中DO 和IF () EXIT构成了一个循环,在 其它形式的循环中,EXIT语句仍可使用 EXIT语句的应用会使循环控制更加灵活
3.3 例程
用计数循环的方法来计算s=1+2+...+100
!例程3_3_1.f90 PROGRAM example3_3_1 INTEGER :: i,s=0 DO i=1,100 s=s+i END DO WRITE(*,*) i,s END PROGRAM example3_3_1
3.4 CYCLE语句
如果CYCLE或EXIT语句出现在嵌套循环里, 而且没有命名,那么CYCLE或EXIT作用于哪 个循环呢?
属于包含它的最内层循环 我们将例3.7.1改写一下
执行结果?
PROGRAM nested_loops INTEGER :: i,j,product DO i=1,3 DO j=1,3 IF (j==2) CYCLE product=i*j WRITE (*,*) i,’*’,j,’=‘,product END DO END DO END PROGRAM nested_loops
DO index=istart,iend,incr
… … …
END DO
index是整型变量,称为循环计数器或循环 控制变量 如果incr是1,也就是每循环一次,计数器 加1的话,incr可以省略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1 FORTRAN语言发展概述
语言地位 发展历程 F90影响 FORTRAN是英文“FORmula TRANslator‖的缩写,译为“公 式翻译器”,它是世界上最早出现的计算机高级程序设计语 言,广泛应用于科学和工程计算领域。FORTRAN语言以其特 有的功能在数值、科学和工程计算领域发挥着重要作用。 FORTRAN语言对程序设计语言的研究和发展有较大的影响。 随着计算机科学技术的飞速发展,FORTRAN语言也不断得到 完善和充实,从传统FORTRAN,到结构化FORTRAN,再到具有现 代特征的FORTRAN90。
2.1 FORTRAN语言发展概述
第二章
FORTRAN90开发环境
语言地位 发展历程 F90影响
1951年,美国IBM公司着手研究开发FORTRAN语言,并于 1954年对外发布,称FORTRANⅠ。 1958年,扩充和完善FORTRANⅠ, 引入函数概念,投入商 业运行,推出FORTRANⅡ。 1960年,推出FORTRAN Ⅲ,但没有在计算机上实现。 1962年,推出了FORTRAN Ⅳ。没有充分考虑兼容性。 1966年,推出FORTRAN 66,美国标准,后被ISO采用。 1978年,推出FORTRAN 77,兼容性好,结构化特征。 1991年,推出FORTRAN 90,现代语言,可视化编程。 1995年,微软公司在Developer Studio集成开发平台上推出 FORTRAN PowerStation 4.0。引入可视化编程技术。 1997年,微软和数据设备公司合作推出Digital Visual FORTRAN 5.0,功能强大。 1998年,康柏公司与数据设备公司合并,推出Compag 2.1 FORTRAN语言发展概述/发展历程 Visual FORTRAN 6.x。
2.1 FORTRAN语言发展概述/F90影响
第二章
FORTRAN90开发环境
2.2 FORTRAN90主要特征
组织结构 书写形式 结构化 过程 作用域 关联 数据类型 数组 指针 输入输出 语法检查 FORTRAN 90采用模块化和结构化相结合的程序组织结构。 FORTRAN90程序 FORTRAN90程序 FORTRAN 90程序由四部分组成:主程序单元、外部子程序 主程序单元 外部子程序单元 模块单元 数据块单元 主程序单元 外部子程序单元 模块单元 数据块单元 单元、模块单元和数据块单元。 CONTAINS 外部子程序1 类型说明 CONTAINS 外部子程序1 类型说明部分 程序单元可分别保存在独立的源程序文件中,分别编译,最 CONTAINS CONTAINS CONTAINS CONTAINS 后连接和运行。 内部子程序组 内部子程序组 FORTRAN 90程序有且只能有一个主程序单元,其它程序单 内部子程序组 外部子程序2 内部子程序组 数据块说明 内部子程序组 外部子程序2 内部子程序组 数据块说明 元可有可无,可多可少。 CONTAINS CONTAINS 子程序分内部子程序和外部子程序,有不同的使用范围,外 内部子程序组 内部子程序组 部子程序只能在外部子程序单元中说明和定义,内部子程序 只能在主程序、外部子程序模块中的CONTAINS和END语句之 间说明和定义。模块单元中的子程序称为模块子程序。 程序组织结构如图2-1所示。
END SUBROUTINE p2 END
c,d,e 的作用域
第二章 FORTRAN90开发环境
10
2.3 Developer Studio开发环境概述
简介 工作空间 窗口说明
Microsoft Developer Studio是微软公司开发的一个可视化 集成开发环境(IDE),为多种软件系统提供统一的可视化集 成开发平台。微软许多软件产品共享该平台。 软件开发环境,特别是IDE的研究、开发和应用,长期受到 计算机厂商和一些研究机构的关注。推出若干软件开发环 境,如:Turbo、IDE等。 90年代,微软推出可视化编程工具和可视化软件开发环 境,如Visual系列编程工具。Microsoft Developer Studio是这 些编程工具统一使用的共享平台。 微软将IDE引入FORTRAN 90,推出Microsoft FORTRAN PowerStation 4.0和Digital Visual FORTRAN 5.0,开发环境与 FORTRAN 90形成一个有机整体。 Microsoft Developer Studio将文本编辑器、资源编辑器、 项目创建工具、增量连接器、源程序浏览器、程序调试器 和信息查询器等集成在一起,以可视化形式进行程序的编 辑、编译、调试、运行等操作,用户在统一的视窗界面上 操作,完成FORTRAN 90程序的设计和开发。
第二章 FORTRAN90开发环境
1. FORTRAN语言发展概述 2. FORTRAN90主要特征 3. Developer Studio开发环境概述 4. Developer Studio环境解题过程 5. MS-DOS命令行开发环境简介 6. 习题二
8
《FORTRAN90程序设计》课多媒体课件
2.1 FORTRAN语言发展概述
第二章
FORTRAN90开发环境
2.1 FORTRAN语言发展概述
语言地位 FORTRAN 90的推出,是FORTRAN语言发展史上的一个里 发展历程 F90影响 程碑,它挽救了FORTRAN语言面临淘汰的局面,使传统的 FORTRAN语言焕发了青春,以其强大的功能和严谨的风格受 到人们的欢迎和认可,并展现出美好的应用前景。 西 方 发 达 国 家 已 开 始 重 新 认 识 FORTRAN 语 言 , 对 FORTRAN90 语 言 的 研 究 、 开 发 和 应 用 给 予 了 高 度 重 视 , FORTRAN语言正在发挥越来越大的作用。 我国最近两年开始引进FORTRA90有关资料和相关软件, 许多高校开始开设FORTRAN90课,为提高学生程序设计水平 和能力打下了坚实基础。
例
2.2 FORTRAN90主要特征/组织结构图/外部子程序单元示例
第二章
FORTRAN90开发环境
固定格式示例
标号区 续行区 (1-5列) (6列) 语句区 (7-72列) 注释区 (73-80列)
! 求一元二次方程两个实根 PROGRAM quadratic REAL a,b,c,d,x1,x2 READ *,a,b,c 输入系数 d=b*b–4*a*c 算判别式 100 IF (d>=0) THEN x1=(–b+SQRT(d))/(2*a) x2=(–b–SQRT(d)) & /(2*a) PRINT *, 'x1=' , x1 PRINT *, 'x2=' , x2 ELSE PRINT *, '该方程有复数根。' END IF END 程序结束
第二章 FORTRAN90开发环境
9
作用域示例
PROGRAM main REAL a,b,c CONTAINS SUBROUTINE p1(…) REAL b,c,d END SUBROUTINE p1 SUBROUTINE p2(…) REAL c,d,e
b,c,d 的作用域
a,b,c 的作用域
第二章 FORTRAN90开发环境
自由格式示例
! 求一元二次方程两个实根 PROGRAM quadratic REAL a,b,c,d,x1,x2 READ *,a,b,c !输入系数 d=b*b–4*a*c !计算判别式 IF (d>=0) THEN x1=(–b+SQRT(d))/(2*a);x2=(–b–SQRT(d))/(2*a) PRINT *, 'x1=' , x1 PRINT *, 'x2=' , x2 ELSE PRINT *, '该方程有复数根。' END IF END !程序结束
例 例
2.2 FORTRAN90主要特征/组织结构图/主程序单元示例
第二章
FORTRAN90开发环境
2.2 FORTRAN90主要特征
组织结构 书写形式 结构化 过程 作用域 关联 数据类型 数组 指针 输入输出 语法检查 FORTRAN 90采用模块化和结构化相结合的程序组织结构。 FORTRAN90程序 FORTRAN90程序 FORTRAN 90程序由四部分组成:主程序单元、外部子程序 主程序单元 外部子程序单元 模块单元 数据块单元 主程序单元 外部子程序单元 模块单元 数据块单元 PROGRAM FUNCTION add(a,b,c) 单元、模块单元和数据块单元。 CONTAINS 外部子程序1 类型说明 CONTAINS 外部子程序1 类型说明部分 main add=f(a,(f(b,c)) 程序单元可分别保存在独立的源程序文件中,分别编译,最 CONTAINS CONTAINS CONTAINS CONTAINS READ*,a,b,c CONTAINS 后连接和运行。 内部子程序组 内部子程序组 s=add(a,b,c) FUNCTION f(x,y) FORTRAN 90程序有且只能有一个主程序单元,其它程序单 内部子程序组 外部子程序2 内部子程序组 数据块说明 内部子程序组 外部子程序2 内部子程序组 数据块说明 PRINT *,s f=x+y 元可有可无,可多可少。 CONTAINS CONTAINS END END FUNCTION 子程序分内部子程序和外部子程序,有不同的使用范围,外 内部子程序组 内部子程序组 END FUNCTION 部子程序只能在外部子程序单元中说明和定义,内部子程序 只能在主程序、外部子程序模块中的CONTAINS和END语句之 间说明和定义。模块单元中的子程序称为模块子程序。 程序组织结构如图2-1所示。
2.3 Developer Studio开发环境概述
第二章
FORTRAN90开发环境