Fortran语言讲义程序设计基础
合集下载
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
第2章 Fortran程序设计基础

2018/11/19 15
用do语句实现循环
在循环体内不允许对循环变量再赋值,但可以 引用。 例: do i=20,1,-1 i= i+1 不合法(不能改变i的值) k=2*i 引用i,合法 print*,i,k End do
用do语句实现循环
当退出do循环时,循环变量仍有定义,其值为离开循 环时,循环变量的值
DO循环执行步骤
(1).计算初值式、终值式、增量式的值,并将 它们转换成循环变量的类型。 (2).将初值赋予循环变量。 (3).计算应循环的次数。 (4).检查循环次数,若≤0则跳过循环体,执行 循环终端语句下面的一个执行语句。如果 >0,则执行循环体。 (5).执行终端语句时,循环变量增值。 (6).循环次数减1。 (7).返回(4),重复执行(4)、(5)、(6)、(7)。
DO循环的嵌套
• 在一个DO循环中又完整地包含另一个DO循环,称 为DO循环的嵌套。嵌套层数可以不限,各层的循环 变量不循环是外循环体中的一部分,内外 循环不能交叉。即:
do i=1,1O do j=1,20 ……… end do end do
do i=0, 3600 x=i/10.0 y=sin(x*3.14159/180) print*, 'x=',x, 'y=', y end do end
用do语句实现循环
说明: e1,e2,e3的值在do循环体内不会改变,即使给 表达式e1,e2,e3中的变量赋值也不影响循环次 数。 例: m=10 循环次数 : do i=1,m,3 m=100+m r=(10-1)/3+1=4 print*,i,m end do end
FIRST: DO 块1的第一部分 SECOND: DO 块2 END DO SECOND 块1的第二部分 END DO FIRST
用do语句实现循环
在循环体内不允许对循环变量再赋值,但可以 引用。 例: do i=20,1,-1 i= i+1 不合法(不能改变i的值) k=2*i 引用i,合法 print*,i,k End do
用do语句实现循环
当退出do循环时,循环变量仍有定义,其值为离开循 环时,循环变量的值
DO循环执行步骤
(1).计算初值式、终值式、增量式的值,并将 它们转换成循环变量的类型。 (2).将初值赋予循环变量。 (3).计算应循环的次数。 (4).检查循环次数,若≤0则跳过循环体,执行 循环终端语句下面的一个执行语句。如果 >0,则执行循环体。 (5).执行终端语句时,循环变量增值。 (6).循环次数减1。 (7).返回(4),重复执行(4)、(5)、(6)、(7)。
DO循环的嵌套
• 在一个DO循环中又完整地包含另一个DO循环,称 为DO循环的嵌套。嵌套层数可以不限,各层的循环 变量不循环是外循环体中的一部分,内外 循环不能交叉。即:
do i=1,1O do j=1,20 ……… end do end do
do i=0, 3600 x=i/10.0 y=sin(x*3.14159/180) print*, 'x=',x, 'y=', y end do end
用do语句实现循环
说明: e1,e2,e3的值在do循环体内不会改变,即使给 表达式e1,e2,e3中的变量赋值也不影响循环次 数。 例: m=10 循环次数 : do i=1,m,3 m=100+m r=(10-1)/3+1=4 print*,i,m end do end
FIRST: DO 块1的第一部分 SECOND: DO 块2 END DO SECOND 块1的第二部分 END DO FIRST
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.语句函数的虚参
在语句函数定义语句中的函数参数称为虚参,他们本身是没有值的,只有在 函数调用时才用实际参数(称为实参)代替。实参或是常数、或是一个有确定 值的变量、或是一个可以计算值的表达式。虚参在形式上与普通变量相同, 一个语句函数中的虚参不能同名。不同语句函数中的虚参可以同名,虚参也 可以和程序中的变量同名。
第二章Fortran程序设计基础

方括号内的部分是可选的,END 语句是唯一 必须的,表示程序编译到此结束。
END 语句中的程序名可以省略,但若出现程 序名,必须同时出现 PROGRAM 关键字。
对于可选部分,如果缺省,则按照约定(隐 含)规则进行
二. 语句
语句是 Fortran 程序的基本单位,一条语句可包含0-132个字符。 Fortran77规定,一条语句的不同部分应从特定的列开始,这样的
MASS,rate,Npts,I9J7,Time_Rate,
有下列几点值得注意: (1)只能以字母开头(3M,_Right 为无效标识符); (2)不能含有空格字符(Time Rate为无效标识符); (3)不区分字母大、小写(Vel,VEL,vel 为同一标识符); (4)长度限定为31 个字符(Fortran 77 为6个字符); (5)避免与关键字、标准例程重名。
::表示在变量声明数据类型的同时,给变量赋初值
2 整型常量
整型常量的一般形式为:
[s]n[_k]
其中:s代表正负号;n为 0~9 的十进制(前导0被省略); k 指种类参数; n 和 k之间为一下划线。
文字整型变量,其种类参数取缺省值; 也可显式声明种类参数,例如:-7_2
二. 实数类型 1 实型变量
书写格式称为固定格式,相应的程序文件扩展名为.f 或.for; Fortran 90 无此限制,自由格式,相应的文件扩展名为.f90。 除赋值语句外,所有的语句都从一个关键字开始。例如:
例2-1 中出现的关键字:PROGRAM、REAL、PRINT和END。
一般情况下,每行一条语句。 若一行有多条语句,它们之间以分号间隔。 可以将几条简单的赋值语句写在一行上,例如:
四. 注释
第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) 程序的三种基本结构
顺序结构。顺序结构是最简单的一种基 本结构,依次顺序执行不同的程序块。 选择结构。选择结构根据条件满足或不 满足而去执行不同的程序块。 循环结构。循环结构是指重复执行某些 操作,重复执行的部分称为循环体。
第2章 Fortran程序设计基础课件

例如
WRITE(*,10)A,B 10 FORMAT(1X,E12.4,E13.2)
当A、B的值为128.433和-0.0008时,输出为:
□□□.1284E+03□□□□□-.80E-03
(3) EN编辑符。EN编辑符与E编辑符基本用法相同。区别在于
EN编辑符输出数据的非指数部分的绝对值强制在1到1000的
4. 逻辑型数据编辑描述符 逻辑型数据的输入输出用L编辑符。其一般格式是: rLw 逻辑值只有两个:真(.TRUE.)和假(.FALSE.)。在输入
一般格式是: rIw 其中r是重复系数,为1时可以省略。w表示字段宽度,即 与该编辑描述符对应的输入输出项所占用的字符个数。
I型输入的使用规则:在输入记录中从左往右取w个字符存
入对应的输入项。注意取得的w个字符必须是整数,正负号也 占一个字符位置,空格字符占一个字符位置但不起作用。
READ (*,10)I,J,K
范围内,且指数可以被3整除。例如
WRITE(*,10)128.433,-0.0008
10 FORMAT(1X,EN12.4,EN13.2)
输出为:
128.4330E+00□□-800.00E-06
(4) ES编辑符。ES编辑符与E编辑符基本用法相同。 区别在于ES编辑符输出数据的非指数部分的绝对值 强制在1到10的范围内。例如 WRITE(*,10)128.433,-0.0008 10 FORMAT(1X,ES12.4,ES13.2) 输出为: □□1.2843E+02□□□□-8.00E-04
(2) E编辑符。用于输入输出指数形式的实数。它的一般格式 是: rEw.d 其中r是重复系数,w是字段宽度,d为数字部分小数位数。 E型输入规则:与F编辑符完全相同。 E 型输出规则:采取规格化的指数形式,即数字部分小数前 面为0,小数点后第一位为非零数字,指数部分占 4列 (E 、指 数符号位及两位指数)。如果输出项数字部分的小数位数多于 d 位,保留 d 位,从第 d + 1 位起四舍五入,小于 d 位,在其右 边补0。如果输出项实际的位数小于w,左补空格,否则输出 w个“*”。
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
结构化程序设计方法
结构化程序:由三种基本结构组成的程序。 结构化程序的优点:便于编写、便于阅读、便于修改和维护 怎样编写结构化的程序: 自顶向下 逐步细化 模块化编程 结构化编码