Fortran PPT课件1 (17)外部子例行子程序

合集下载

FORTRAN语言程序设计ppt课件

FORTRAN语言程序设计ppt课件

do i=1,10 !循环语句
s=s+i
!循环体
enddo
上述循环所要执行的重复操作是: s=s+i (即循环体),但每一次循环时,循环 体的操作数据s,i的值是不同的。
.
精选2021版课件
8
2.3 算法的表示方法
(1)传统流程图 即用有向线段将描述算法步骤的各功能框连接起来.如下图所示:
A B 图(a)顺序结构
1.逻辑常量仅有两个,.TRUE.(真)和.FALSE.(假)。注意:逻辑常量 两侧的两个小数点不能省略。逻辑型常量是具有逻辑型数据类型的非数 值数据,又称为逻辑值或布尔值。
2.对于逻辑值.TRUE.,在其存储单元字节内每位为“1”,可视为整数值 -1;对于逻辑值.FALSE.,在其存储单元字节内每位为“0”,可视为整数 值0,它们均能参与整数运算。如7+.FALSE.,结果仍为7。1+.TRUE., 结果则为0。
数组、函数、过程等实体的名称。
名称的定义(即语法描述):由英文字母开头的31个以内 的字母、数字、下划线(_)以及美元符字符序列组成。
例:NUMBER、x1、root_2、y$ _ab、5xy、x.y
5.2.2 保留字 一个语句中的特定单词,如PROGRAM、END、IF、ENDIF、
DO、ENDDO等,称为语句保留字。 说明: FORTRAN90程序中允许用保留字作为其它实体的名 称,但是一般不提倡。
1x10-10
注意:单独的指数部分不能构成一个实型常量。 例:E5
5.6.2.3 复型常量
表示普通代数中的复数。即: a ± bi(其中a是实部, b是虚部)
一般形式:(a,b)
例:(-3,5)
!表示复数:-3+5i

01章FORTRAN程序设计基础精品PPT课件

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
计算机是在“程序”的控制下进行自动工作的, 它解决任何实际问题都依赖于解决问题的程序。

第2章Fortran程序设计基础.ppt

第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.语句函数的虚参
在语句函数定义语句中的函数参数称为虚参,他们本身是没有值的,只有在 函数调用时才用实际参数(称为实参)代替。实参或是常数、或是一个有确定 值的变量、或是一个可以计算值的表达式。虚参在形式上与普通变量相同, 一个语句函数中的虚参不能同名。不同语句函数中的虚参可以同名,虚参也 可以和程序中的变量同名。

第2章 Fortran程序设计基础PPT课件

第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

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课件第一章

Fortran课件第一章
当 P 为真(T)时 A A P F T
当型循环传统流程图
当型循环 N——S 图
b) 直到型循环——先执行循环体 A 块一次; P 为假 当 (F) 时,反复执行循环体 A 块;当 P 为真(T)时,退出循环 体 A 块,流程转到下面的语句。注:也可以让 P 为真时, 执行循环,P 为假时,退出循环。
三、结构化程序设计方法 结构化程序设计方法,就是结合计算机语言的特点,把算法结 构化的程序设计方法。具体说来,就是规定一些基本结构,由基 本结构来组织更复杂的算法。 结构化程序设计方法中的三种基本结构:1)顺序结构,2)选 择结构,3)循环结构。 1) 顺序结构——顺序执行 A 块和 B 块。
A B A B
例 fortest101.f90
! Free Format Demo program main writቤተ መጻሕፍቲ ባይዱ(*,*) „Hi‟ write(*,*)& „John‟ write(*,10) 10 format(„Fine!‟) stop end program main
注释:程序 fortest101.f90 中,第一行有感叹号“!,说明“! ” ” 之后且同行的文本为注释部分;第四行程序代码后面的“&” ,说 明第五行“„John‟”是它的继续行;第七行的格式语句的标号“10” 写在前面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 . . . ... 72 73 C F I X E D F O R M A T p r o g r a m m a i n w r i t e ( * , * ) „ H i „ w r i t e ( * , * ) # „ J o h n „ w r i t e ( * , 1 0 ) 1 0 f o r m a t („ f i n e ! „ ) s t o p e n d Fortran 源程序必须包含且只能包含一个主函数(program 主 函数名…end 或 program 主函数名…end program 主函数名) 。 Fortran 程序由主函数开始执行,由主函数调用其他函数,最后返 回主函数结束。

第一章FORTRAN程序设计基础.ppt

第一章FORTRAN程序设计基础.ppt

四个基本步骤:
(1)分析问题,确定数学模型或方法。 (2)设计算法,画出流程图。 (3)选择编程工具,编写程序。 (4)调试程序,分析输出结果。
问题3 什么是算法?
解决问题的方法和步骤称为算法。 问题的算法: 算法=方法+步骤
思考
求任意三角形的面积? 求一元二次方程的实根?
方法:用海伦公式 步骤: ①给出三条边a,b,c ②p=(a+b+c)除以2 ③s=p*(p-a)*(p-b)*(p-c)的开方根 ④输出s
REAL R,P,S
!定义三个实型变量
READ *,R
!输入圆的半径
P=2*3.14159*R
!计算圆的周长
S=3.14159*R*R
!计算圆的面积
PRINT *,R,P,S
!输出圆的周长和面积
END
FORTRAN 程序结构
一个FORTRAN程序由若干个程序单元 组成。程序单元可以是主程序、外部子程 序,也可以是模块,其中模块包含可被其 他程序访问的各种程序实体。
(3)计算u的值。
(4)输出u的值。
例1.2 输入十个数,要求找出其中最大的数。
方法: 设max单元用于存放最大数,先将输入
的第一个数放在max中,再将输入的第二个数 与max相比较,大者送到max,然后将第三个 数与max相比,大者放在max中,…,一直到 比完九次为止。
例1.2的算法
(1) 输入一个数,放在存储单元max中。 (2) 设置用来统计比较次数的单元i,初值置1。 (3) 若i≤9,做第(4)步,否则做第(8)步。 (4) 输入一个数,放在存储单元x中。 (5) 比较max和x中的数,若x>max,则将x的值送 给max,否则,max值不变。 (6) i增加1。 (7) 返回到第(3)步。 (8) 输出max中的数,此时max中的数就是十个数 中最大的数。

FORTRAN语言第2章(共8章)PPT课件

FORTRAN语言第2章(共8章)PPT课件

Fortran对于关键字不予保留,即允许其关键 字作为其他实体的名称。但是,不主张这样做,因 为使用关键字作为实体名称会到导致程序难以理解 和阅读。
例如:用户可以将自己的变量名、数组名等命 名为read、print、end、integer、program、 print、do等关键字,编译程序会根据上下文来识 别一个字符串究竟是关键字还是实体名称。
型。 Fortran常量包括整型、实型、复型、字符型和逻辑型
五种内部类型常量和一种特殊的常量——符号常量,下面
分别介绍它们的表示方法及其注意事项。
第一节 FORTRAN常量
三、FORTRAN常量 1、整型常量
整型常量由0~9的一系列数字组成,包括正数、负数 和0。如125,-258,+28等。注意:
n代表整数部分,
m代表小数部分,不允许出现非数值 字符(如逗号、顿号和空格等)。
第一节 FORTRAN常量
三、FORTRAN常量 2、实型常量
指数形式:用来表示一个绝对值非常大或非常小的数。 指数形式的实数三部分组成:有效数字、E(或e)和指数。
例如: +0.125E+2、-132.48e-1、243E-3、 .12e+2,1.2e+1
Fortran 95规定:标识符只能由字母、数字、 下划线和美元符号“$”组成,且起始字符必须是 英语字母。
Fortran的关键字
关键字是Fortran95中的一种特定字符串。 如 read*,a,b
read是关键字。 类似的关键字有:print、write、program、 integer、do、if、then、end、subroutine、 function等。 在编译环境中正确的关键字会以蓝色字符显示。 关键字都有特定的含义,在程序中有具体的位置要求, 不能随意改变,否则将产生一个语法错误。

Fortran讲义第二章汇总课件

Fortran讲义第二章汇总课件

优先级(最好加括号) : ①括号 ②函数 ③** ④*、/ ⑤单目+、- 双目+、-
类型转换(向高看齐),int, nint, real, dble, cmplx
复数运算
exam_2_5
表达式和赋值语句
❖ 字符表达式 ①
子字符串 字符串的连接 相关内部函数
exam_2_6

❖ 关系表达式: ②
内部过程或模块过程
END
Fortran源程序的书写格式
❖ 固定格式(*.for或*.f)
Fortran源程序的书写格式
Fortran源程序的书写格式
lists.for
Fortran源程序的书写格式
❖ 自由格式(*.f90)和固定格式的比较
exam_2_1
固定格式
自由格式
每行字符数 80
132(VF 中几乎不限制)
Fortran的名称
❖ 用来标识程序中的实体(变量、子程序、函数…)
❖ <名称>→<英文字母>{<英文字母>|<数字>|_|$}
❖ 名称长度不能超过6(FORTRAN77) 31(Fortran90) 63(Visual Fortran)
Fortran的名称
program X-Y-Z Find_it 1A _program $total
注释
第一列: c *
任意位置: !
73-80列
任意位置:!(第六列除外)
每行语句数 多条,用;隔开
多条,用;隔开
(FORTRAN77只能有1条)
续行
第六列,非0非空格 最多续19行
& 最多续39行
Visual Fortran允许续511行

Fortran 实用编程模板.ppt

Fortran 实用编程模板.ppt

2019年9月21
感谢你的观看
3
上节要点回顾
• 编译、链接、运行是程序设计的三个阶段,都有发生 错误的可能 • 编译、链接错误是必须纠正的;运行时错误是无法完 全避免的,只能尽可能在绝大多数情况下避免。 • 错误提示因不同编译器而不同,也因不同的编译链接 设置而不同。 • 错误提示非常重要!应首先查看并翻译错误提示。
Integer , save :: n = 30 , m = 40
Integer m
2019年9月21
形容词不建议单独书写,如 save n
双冒号,表示形容词的结束
如果定义时同时赋值,则默认具有 save 属性,需书写双冒号
感谢你的观看
18
变量的定义和声明
一些不建议使用的变量声明 => 更合适的变量声明:
旧写法
REAL A DIMENSION A(30)
REAL*8 A
DOUBLE PRECISION A
PARAMETER(N=30,M=40)
CHARACTER A*30 或 CHARACTER*30 A 或 CHARACTER(30) A
2019年9月21
新写法
Real , dimension(30) :: a 或 Real :: a(30)
Fortran 实用编程
系列视频教程
2019年9月21
感谢你的观看
1
关于 Fortran Coder
Fortran Coder 始于2006年,是一个以科学计算编程为主题的非盈利性 研讨团体。大多数由各行业高等学府学生,研究人员及生产一线的工作 人员组成。
研讨内容涉及:Fortran77/90/95/2003/2008语法规范,各平台32位及64位编译器,IMSL, MKL,Lapack 等数学函数库,MPI,OpenMP,Coarray 并行及高性能计算,winteracter / DisLin / Matfor / GTKFortran 等绘图及界面库。

第一章FORTRAN程序设计基础精品PPT课件

第一章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的算法是用自然语言── 汉语描述的,其优点是通俗易懂,但它不太直观,描述不够 简洁,且容易产生二义性。在实际应用中常用流程图表示算 法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.3 外部子例行子程序
哑元类型可以按隐含规则确定,当哑元是数组名 时,必须在子例行子程序体内用类型说明语句或维 数语句说明其类型、维数和各维的上、下界,当哑 元是指针时,也必须在子例行子程序体内用类型说 明语句说明。
6.3 外部子例行子程序
外部子例行子程序的调用 call 子例行程序名(a1,…,an) 例:以初速度和角度,计算标枪的投射距离
6.3 外部子例行子程序
! 把0~360的角度转换成0~2PI的弧度 subroutine Angle_TO_Rad( angle, rad ) implicit none real angle, rad real, parameter :: pi=3.14159 rad = angle*pi/180.0 return end
6.3 外部子例行子程序
! 由角度、切线速度来计算投射距离 subroutine Get_Distance( angle, speed, distance ) implicit none real angle, speed ! 传入的参数 real distance ! 准备传回去的结果 real rad, Vx, time ! 内部使用 real, parameter :: G=9.81 call Angle_TO_Rad( angle, rad ) ! 单位转换 Vx = speed*cos(rad) ! 水平方向速度 time = 2.0*speed*sin(rad) / G ! 在空中飞行时间 distance = Vx * time ! 距离 = 水平方向速度 * 飞行时间 return end
program ex0806 implicit none integer, parameter :: players = 5 real :: angle(players) = (/ 30.0, 45.0, 35.0, 50.0, 40.0 /) real :: speed(players) = (/ 25.0, 20.0, 21.0, 27.0, 22.0 /) real :: distance(players) integer :: I do I=1, players call Get_Distance( angle(i), speed(i), distance(i) ) write(*,"('Player ',I1,' =',F8.2)") I, distance(i) end do end
6.3程序类型:普通、递归、并行。 形式一: subroutine 子例行程序名(d1,…,dn) 哑元表,可为变量名、数 …… 组名、哑过程名或*或无 命名规则与一般的变量相同, 子例行子程序体 不代表值,与类型无关 …… 子例行程序名是开始的关键字 [return] end [subroutine [子例行程序名]]
6.3 外部子例行子程序
program ex0805 implicit none integer :: a = 1 integer :: b = 2 write(*,*) a,b call add(a) call add(b) write(*,*) a,b stop end subroutine add(num) implicit none integer :: num num = num+1 return end
相关文档
最新文档