Fortran顺序结构

合集下载

Fortran77结构化程序设计

Fortran77结构化程序设计

Fortran77结构化程序设计Fortran77结构化程序设计简介Fortran(Formula Translating System)是一种编程语言,特别适用于科学和工程领域的计算。

Fortran的第一版于1957年发布,至今已经发展到Fortran77版本。

Fortran77引入了结构化程序设计的概念,使得程序更易于编写和维护。

本文将介绍Fortran77结构化程序设计的基本原则、控制结构和常用语法。

基本原则结构化程序设计的目标是编写易读、易维护、易的程序。

为了达到这个目标,Fortran77结构化程序设计遵循以下基本原则:1. 模块化:将程序划分为小块的独立模块,每个模块负责完成特定的功能。

2. 单一入口:每个模块只有一个入口点,使得程序的执行流程清晰可见。

3. 自顶向下设计:从程序的总体结构开始,逐步细化到具体的算法和实现细节。

4. 注重可读性:使用有意义的变量和函数名,添加适当的注释,使得程序易于阅读和理解。

控制结构Fortran77提供了几种常用的控制结构来实现程序的流程控制:顺序结构顺序结构是Fortran77中最基本的控制结构,程序按照代码的顺序依次执行。

例如:fortranPROGRAM mnINTEGER :: i, sumsum = 0DO i = 1, 10sum = sum + iEND DOWRITE(,) 'Sum:', sumEND PROGRAM mn上述代码展示了一个简单的程序,通过循环计算1到10的和,并输出结果。

分支结构Fortran77提供了基本的分支控制结构:- `IF`语句:可以根据条件选择性执行代码块。

例如:fortranPROGRAM mnINTEGER :: iDO i = 1, 10IF (i < 5) THENWRITE(,) i, '小于5'ELSEWRITE(,) i, '大于等于5'END IFEND DOEND PROGRAM mn在上述代码中,根据变量`i`的值判断是否小于5,并分别输出不同的信息。

fortran二维数组存储顺序

fortran二维数组存储顺序

fortran二维数组存储顺序Fortran二维数组存储顺序Fortran是一种古老而又经典的编程语言,具有高效、稳定、可靠等优点,被广泛应用于科学计算、工程设计、数据处理等领域。

在Fortran 中,二维数组是一种常见的数据结构,它可以用来表示矩阵、图像、地图等复杂的数据模型。

而二维数组的存储顺序则是Fortran程序员需要了解和掌握的重要知识之一。

按类划分,Fortran二维数组的存储顺序可以分为两种:行主序(Row-major order)和列主序(Column-major order)。

下面分别对这两种存储顺序进行详细介绍。

一、行主序行主序是指二维数组按照行为主序进行存储,即先存储第一行的所有元素,再存储第二行的所有元素,以此类推,直到存储完最后一行的所有元素。

在Fortran中,行主序是默认的存储方式。

例如,有一个3×4的二维数组A,其元素值分别为:A(1,1)=1 A(1,2)=2 A(1,3)=3 A(1,4)=4A(2,1)=5 A(2,2)=6 A(2,3)=7 A(2,4)=8A(3,1)=9 A(3,2)=10 A(3,3)=11 A(3,4)=12那么,在行主序下,A的存储顺序为:1 2 3 4 5 6 7 8 9 10 11 12。

行主序的优点是访问数组元素时具有更好的局部性,即访问相邻的元素时可以利用CPU的缓存机制,提高访问效率。

而其缺点则是在进行列操作时,需要跨越多个内存块,导致访问速度变慢。

二、列主序列主序是指二维数组按照列为主序进行存储,即先存储第一列的所有元素,再存储第二列的所有元素,以此类推,直到存储完最后一列的所有元素。

在Fortran中,可以通过在数组声明时使用“column-major”来指定列主序。

例如,有一个3×4的二维数组B,其元素值分别为:B(1,1)=1 B(1,2)=5 B(1,3)=9B(2,1)=2 B(2,2)=6 B(2,3)=10B(3,1)=3 B(3,2)=7 B(3,3)=11B(4,1)=4 B(4,2)=8 B(4,3)=12那么,在列主序下,B的存储顺序为:1 2 3 4 5 6 7 8 9 10 11 12。

第1章 FORTRAN程序设计基础

第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) 程序的三种基本结构
顺序结构。顺序结构是最简单的一种基 本结构,依次顺序执行不同的程序块。 选择结构。选择结构根据条件满足或不 满足而去执行不同的程序块。 循环结构。循环结构是指重复执行某些 操作,重复执行的部分称为循环体。

fortran三维数组存储顺序

fortran三维数组存储顺序

fortran三维数组存储顺序Fortran是一种编程语言,用于科学计算和数值分析。

在Fortran 中,三维数组的存储顺序对于数据的访问和处理非常重要。

本文将介绍Fortran中三维数组的存储顺序以及其对应的应用。

一、Fortran三维数组的存储顺序在Fortran中,三维数组通常被存储在内存中的连续空间中。

Fortran提供了两种存储顺序:列优先和行优先。

列优先存储顺序也称为列主序(column-major),而行优先存储顺序也称为行主序(row-major)。

在列优先存储顺序中,三维数组的第一个维度称为列,第二个维度称为行,第三个维度称为页。

数据在内存中的存储方式是先存储第一页的所有元素,然后是第二页的所有元素,以此类推。

这种存储方式在Fortran中是默认的。

在行优先存储顺序中,三维数组的第一个维度称为行,第二个维度称为列,第三个维度称为页。

数据在内存中的存储方式是先存储第一行的所有元素,然后是第二行的所有元素,以此类推。

二、列优先存储顺序的应用列优先存储顺序在Fortran中应用广泛,特别是在科学计算和数值分析领域。

这是因为在这些领域中,通常需要对三维数组进行矩阵运算,而列优先存储顺序可以使得矩阵乘法等运算更加高效。

例如,假设有两个三维数组A和B,它们的维度都为n×n×n。

如果要计算A和B的矩阵乘法C=A*B,其中C也是一个三维数组,那么在列优先存储顺序下,可以使用以下伪代码实现:```do i = 1, ndo j = 1, ndo k = 1, nC(i,j,k) = 0do l = 1, nC(i,j,k) = C(i,j,k) + A(i,j,l) * B(l,k,j)end doend doend doend do```在这段代码中,通过使用列优先存储顺序,可以保证矩阵运算的内存访问是连续的,从而提高了运算速度。

三、行优先存储顺序的应用虽然列优先存储顺序是Fortran中默认的存储顺序,但在某些情况下,行优先存储顺序也是有用的。

fortran选择结构及基本语句

fortran选择结构及基本语句

END
长安大学地学信息技术研究所 09/10学年第一学期 13
嵌套块IF:指块IF语句中又包含块IF语句,可有多层嵌套。 对于嵌套块IF,内外层块IF语句体不能相互交叉。
块IF语句可命名,在嵌套块IF中,可对内外层块IF语句进行命名。
示例:求解方程ax2+bx+c=0,需要检查是否a=0,防止除0溢出。
<控制集合>→<元素>[:<元素>]{,<元素>[:<元素>]}
长安大学地学信息技术研究所 09/10学年第一学期 15
给定学生成绩S,评定优、良、中、及格、不及格等级,并输出。
INTEGER(1) READ (*,*)S
S
SELECT CASE(INT(S)) CASE(90:100) WRITE(*,*)„该学生成绩为:优。’ CASE(80:89) WRITE(*,*)„该学生成绩为:良。’ CASE(70:79) WRITE(*,*)„该学生成绩为:中。’ CASE(60:69) WRITE(*,*)„该学生成绩为:及格。’
WRITE(*,*)„该学生成绩为:不及格。’ ELSE IF (S<70) THEN
END IF
WRITE(*,*)„该学生成绩为:及格。’ ELSE IF (S<80) THEN
END IF
END IF
END IF
WRITE(*,*)„该学生成绩为:中。’ END
长安大学地学信息技术研究所
09/10学年第一学期 12
CASE(0:59)
WRITE(*,*)„该学生成绩为:不及格。’ END SELECT END CASE DEFAULT WRITE(*,*)„输入成绩数据错!!!'

第二讲 顺序结构的Fortran 程序设计

第二讲 顺序结构的Fortran 程序设计
2015/12/20
除(/)
乘方(**) 括号()
14
2、算术运算符的优先级
括号→函数→乘方→乘、除→加、减 注:同级运算“先左后右”,连续乘方时“先右后左”。 比如:3+5-6.0*8.5/4**2+sin(x) → 3+5-6.0×8.5÷42+sinx x**y**z、x**(y**z) → xyz (x**y)**z →(xy)z 利用算术表达式概念,就可以将:数学运算式→Fortran算术表达式 (3)Fortran 算术表达式书写注意 1、表达式中的各运算元素之间必须用运算符分隔。 例:xyz→x*y*z 2(x+y) → 2*(x+y) 2、作任何运算的表达式只能写在一起。 ab 例:
2015/12/20 10
三、Fortran的内部函数
(1)什么是内部函数 在编程序时,经常需要直接使用数学函数,为方便 Fortran语 言自带有丰富的数学函数,称为内部函数,它是指能完成一定 功能的程序单位,内部函数可以直接调用,但需遵守其使用规 则。 (2)常见的一些内部函数
作为例子,下面给出一些Fortran的内部函数: 1、abs(x)---求变量x的绝对值; 2、sqrt(x)---求变量x的平方根; 3、int(x)---取x的整数部分; 4、mod(x,y)---求x除以y的余数; 5、sign(x,y)---求x和y的符号; 6、max(x,y,z,…)---求最大值; 7、min(x,y,z,…)---求最小值。
第二讲 顺序结构程序设计
从设计上看,任何程序均可用顺序结构、选择结构、循环结构 实现。其中,顺序结构就是按照处理顺序,依次写出相应的语 句,因此,顺序结构最为简单、也是最基本的 Fortran 编程, 本讲先学习顺序结构的Fortran程序设计。 从内容上看,程序就是数据和语句,其中数据是程序加工处理 对象、语句描述了对数据的具体操作。在Fortran 中,数据的 表现形式有常量、变量、表达式和函数,而数据的类型分为整 型、实型、复型、字符型和逻辑型,以及数组等。 因此,本讲先介绍最简单的数据类型(整型和实型)与数据形 式(常量、变量、函数、算术表达式),以及最简单的 Fortran语句,分2节讲授。通过本讲的学习之后,就能设计最 简单的Fortran程序了!

第02章 顺序结构程序设计

第02章 顺序结构程序设计
名字: 简练的、易记忆的(应具有足够的说明性) 名字: 简练的、易记忆的(应具有足够的说明性) 表达式: 表达式: 加括号的方式排除二义性 语句: 语句: 缩排 一致性
思考1 思考1
已知 其中 x = 1 + tg 52015' ,求y的值。 ,求y
2 x , x 2 | sin
2.8 程序举例
例1 已知 f(x)=x3+sin2x2+ln(x4+1) 输入自变量的值,求出对应的函数值。 READ*,X F=X**3+SIN(X**2)**2+LOG(X**4+1) PRINT*,"F(X)=",F END
总 结
1.编程的思路:一是输入原始数据,二是对原始数据进 编程的思路:一是输入原始数据, 行处理,三是输出处理结果。 行处理,三是输出处理结果。 2.使用结构化程序设计技术:用先全局后局部、先整体 后细节、先抽象后具体的逐步求精 3. 代码编写风格
分析下列语句:
判断下面计算结果是否相同 判断下面计算结果是否相同 ave = (n1 + n2 ) / 2 ave = (n1 + n2 ) / 2. nave = (n1 + n2 ) / 2 nave = (n1 + n2 ) / 2. 2.
2.6 简单输入输出语句
1.表控输入语句 说明数据来自何处、送至何处、 说明数据来自何处、送至何处、按什么格 式进行编辑加工 表控格式输入 READ*,变量表 READ*,变量表 READ(*, READ(*,*) 变量表
1. 变量的概念
变量是指在程序运行期间其值是可以变化的量。 变量是指在程序运行期间其值是可以变化的量。系统为程序中的每一 个变量开辟一个存储单元,用来存放变量的值。 个变量开辟一个存储单元,用来存放变量的值。 变量在内存中所占的字节数和数据存储形式与相应类型的常数相同。 变量在内存中所占的字节数和数据存储形式与相应类型的常数相同。 例如,实型变量一般占4个字节,按指数形式存放。 例如,实型变量一般占4个字节,按指数形式存放。

fortran知识点总结

fortran知识点总结

fortran知识点总结一、语法结构Fortran语言的语法结构遵循一套严格的规则。

下面是一些常见的语法结构:1. 程序单元:Fortran程序由一个或多个程序单元组成。

每个程序单元由一个或多个声明和执行语句组成。

2. 注释:在Fortran中,注释可以用来提高代码的可读性。

注释以感叹号(!)开头,直到行末为止。

3. 标识符:Fortran中的标识符由字母、数字和下划线组成,且区分大小写。

标识符用于表示变量、函数、子程序等。

4. 变量声明:在Fortran中,变量声明使用关键字“REAL”、“INTEGER”、“LOGICAL”等来指定变量的数据类型。

例如,REAL :: x 表示声明了一个实数类型的变量x。

5. 程序控制结构:Fortran提供了多种控制结构,包括顺序结构、条件结构和循环结构。

这些结构提供了程序的流程控制和逻辑控制。

6. 函数和子程序:Fortran支持函数和子程序的定义和调用。

函数和子程序可以帮助程序员组织和重用代码。

7. 模块和接口:Fortran中的模块和接口提供了一种组织代码的方式。

模块可以包含多个子程序和全局变量,接口可以用来定义子程序的接口。

二、数据类型在Fortran中,数据类型用于表示数据的类型和大小。

Fortran提供了多种数据类型,包括整数、实数、逻辑值、字符、复数等。

下面是一些常见的数据类型:1. 整数:整数类型用于表示整数值。

在Fortran中,整数类型包括“INTEGER”、“LOGICAL” 和“CHARACTER”类型。

2. 实数:实数类型用于表示实数值。

在Fortran中,实数类型包括“REAL”和“COMPLEX”类型。

REAL类型用于表示实数,COMPLEX类型用于表示复数。

3. 字符:字符类型用于表示字符值。

在Fortran中,字符类型使用CHARACTER关键字进行声明。

字符类型可以表示单个字符或者字符数组。

4. 数组:数组类型用于表示多个相同类型的数据。

FORTRAN90程序设计教程 第1章 FORTRAN程序设计基础

FORTRAN90程序设计教程 第1章 FORTRAN程序设计基础

例1.1 求
其中
2
x y u x y
2
a b x 2 2 a b
ab ab
a b a b y 4 a b
ab ab
这一题的算法并不难,可写成: (1)从键盘输入a、b的值。 ab x a b ,y (2)如果a<b,则 ab , 4 x a b , y 否则 。 ab (3)计算u的值。 (4)输出u的值。
3. N-S图
由于传统流程图的缺点,1973年美国学者 I.Nassi和B.Shneiderman提出了一种新的流程图工 具─N-S图。N-S图以三种基本结构作为构成算法 的基本元素,每一种基本结构用一个矩形框来表 示,而且取消了流程线,各基本结构之间保持顺 序执行关系。N-S图可以保证程序具有良好的结 构,所以N-S图又叫做结构化流程图。
例1.3的算法:
(1)输入m和n的值。 (2)求m除以n的余数r。 (3) 若r=0 ,则转至第 (6) 步,否则执行第 (4) 步。 (4)n→m,r→n。 (5)转第(2)步。 (6)输出n。
算法的五个特征:
(1) 有穷性。算法中执行的步骤总是有限次数的, 不能无止境地执行下去。 (2) 确定性。算法中的每一步操作必须具有确切 的含义,不能有二义性。 (3) 有效性。算法中的每一步操作必须是可执行 的。 (4) 要有数据输入。算法中操作的对象是数据, 因此应提供有关数据。 (5) 要有结果输出。算法的目的是用来解决一个 给定的问题,因此应提供输出结果,否则算法 就2没有实际意义。
1.2.2 算法的描述
算法的描述有许多方法,常用的有:自 然语言、一般流程图、N-S图等。前面例 1.1~例1.3的算法是用自然语言──汉语描述 的,其优点是通俗易懂,但它不太直观, 描述不够简洁,且容易产生二义性。在实 际应用中常用流程图表示算法。

FORTRAN95第八章 实用程序设计方法

FORTRAN95第八章 实用程序设计方法
如果 k都不能整除X 则 m 是一 个素数,退出循环 输出 X
直到 x 是一个素数
根据上面的伪码,可以比较容易地写出实现求出前 n个素数并打印的FORTRAN程序。但是, 这个程序的 效率是比较低的。为此可以利用数论的知识,从以 下两个方面考虑进行优化。 首先, 语句“对于k 从2 变到X-1,每次增 1 做:”
在以上各阶段都应有充分的文档资料。而且,以上过程是一个有限次 迭代过程。
8.2 结构化程序设计方法 8.2.1 结构化程序设计的概念 所谓结构化程序设计,就是以良好的程序结构为目标、遵照
“自顶向下、逐步求精”和模块化的方法、每个模块仅有一个 入口
和一个出口、程序中仅使用三种基本控制结构、尽量少用GOTO 语句的程序设计方法, 下面对结构化程序设计方法进行全面、细 致地阐述。
具体说来,计算机程序设计的准则有以下七个方面:
正确性:这是判定程序质量的永恒准则。 可靠性:这是指程序执行的可重复性要好。无论执行环境
如何变化,对相同的输入数据,一个程序的执行结果总是 不变的。 易读性:这是指程序结构要简单、语句要直观、程序内部 要有足够的注解等,以便维护和引用程序。遵照良好的编 程风格(习惯),会增大程序的可读性。 有效性:这是指程序应当少占存储空间、快速运行。良好 的时空效率永远是人类追求的目标。 可维护性:这是指程序应当容易查找错误、容易改正错误。 一个大型程序,常常需要数十人甚至数百人合作开发,代 价高昂。既使通过严格地检测,也不可能保证没有错误。 而且使用期常常达到10年至15年或更长。因此,在使用中, 排除错误、扩充、更新总是难免的。 适应性:这是指程序不应因计算机硬件或外部环境的变更 而更改或废弃。程序的适应性越强,可移植性越好,越能 适应各种机型和环境,其社会效益和经济效益就越好。 可重用性:这是指经过实践证明正确的己有源程序代码, 可以方便地被自己或他人利用,这样不仅能大大提高程序 的开发效率,而且能大大减少程序的错误。

chapter2顺序结构程序设计

chapter2顺序结构程序设计

第一节FORTRAN 常量第二节FORTRAN 变量第三节FORTRAN 内部函数第四节算术表达式第五节赋值语句第六节表控输入/输出语句第七节END 、PAUSE 、STOP 语句第二讲顺序结构程序设计第一节FORTRAN 常量Fortran 的语言元素是指在程序设计中所用到的基本成分,例如字符集、常量、变量、记号以及其它的基本结构等。

只有了解并掌握了这些基本要素,才可能正确自如地使用该种语言。

一、FORTRAN 字符集★26个英文字母,(除了字符串内的字符外,程序中小写字母等价于相应的大写字母)★数字0~9★_(下划线)★22个特殊字符空格= + -* / (),:. $ ‘!”% & ;> < ?Fortran 的源程序就是上述字符及符号按照词法、语法和语义的规定对算法的描述。

在编写源程序时需要注意的是:(1)除字符型常量外,源程序中不区分字母的大小写,如语句“ReaL a ”和“real A ”是等价的。

(2)字符集以外的可打印字符,只能出现在注释、字符常量、字符串编辑符和输入输出记录中。

Fortran 的字符集二、FORTRAN 标识符第一节FORTRAN 常量标识符即名称,是用来在程序中标识有关实体(如:变量、符号常量、函数、程序单元、公用块、数组、模块和形参等)。

Fortran 95规定:标识符只能由字母、数字、下划线和美元符号“$”组成,且起始字符必须是英语字母。

Fortran 的关键字关键字是Fortran95中的一种特定字符串。

如read *,a,b read 是关键字。

类似的关键字有:print 、write 、program 、integer 、do 、if 、then 、end 、subroutine 、function 等。

在编译环境中正确的关键字会以蓝色字符显示。

关键字都有特定的含义,在程序中有具体的位置要求,不能随意改变,否则将产生一个语法错误。

第3章 顺序结构程序设计

第3章 顺序结构程序设计

格式输出语句
当格式不复杂时,可以把输出格式直接写在print或write中。
一般格式为: print „格式说明符’,输出项 或 write (*,‘格式说明符’) 输出项
例如:print „(2i3)‟,m,n write(*, „(2i3)‟)m,n
格式输入语句
一般格式是: read 语句标号,输出项 或 read (*,语句标号) 输出项
运算符,不是去判断赋值号两端相等。 (3)赋值语句不能连等,赋值语句只允许出现一个 赋值号,不允许有两个赋值号。例如a=b=3在 数学上是合法的,但是非法的Fortran赋值语句。
赋值语句
(4)“=”两边数据类型不相同时,先对右边表达式进行计 算,然后将计算结果的数据类型转换为赋值号左边变 量的数据类型进行赋值。 (先计算,再类型转换,最后赋值) 例如: integer m,n m=2 real x,y m=5/2 n=2 n=5.0/2 x=2.0 x=5/2 y=5.0/2 y=2.5 在编写程序时,应尽可能使贼值号两侧保持同类型。
一般格式为:
read*,变量表 表控输入也可以写为: read(*,*)变量表

意:
(1)*后面可以为空,即READ* 是合法输入语句,
执行该语句,等待用户键入回车键。 (2)输入表中变量之间用逗号间隔,且可以是多 个不入数据时,数据按合法形式表示,输入数据的次 序和类型要与输入表中各变量的次序和类型相一致。如果 只输入一个数据,直接输入后回车确定。如果输入多个数
maxnum=max(x1 , x2 , x3) minum=min(x1 , x2 , x3)
print * , "最大的数是 ", maxnum
write(* , *)"最小的数是“ , minum end 从键盘输入 2.8,9.6,4.3 输出结果为:

fortran 串行结构

fortran 串行结构

fortran 串行结构Fortran 串行结构Fortran是一种编程语言,主要用于科学计算和数值分析。

它以串行结构为基础,即程序按照顺序一行一行地执行。

本文将介绍Fortran的串行结构以及其在科学计算领域的应用。

1. 什么是Fortran的串行结构?Fortran的串行结构是指程序按照从上到下的顺序一行一行地执行。

这种结构使得程序的执行流程清晰明了,易于调试和维护。

在Fortran中,程序从主程序开始执行,依次执行各个语句,直到遇到END语句结束。

2. Fortran的串行结构示例下面是一个简单的Fortran程序示例,展示了串行结构的特点:PROGRAM helloIMPLICIT NONEINTEGER :: iDO i = 1, 5WRITE(*,*) 'Hello, World!'END DOEND PROGRAM hello在上述程序中,主程序以PROGRAM开头,以END PROGRAM结尾。

程序中使用了一个循环语句DO,其中i从1递增到5,每次循环输出一行"Hello, World!"。

通过串行结构,程序按照从上到下的顺序依次执行,输出结果如下:Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!3. Fortran串行结构的优点(1) 易于编写和理解:Fortran的串行结构使得程序的逻辑结构清晰明了,易于编写和理解。

程序按照顺序执行,每个语句的作用和执行顺序清晰可见。

(2) 易于调试和维护:由于程序按照顺序执行,调试和排错时可以逐行查看程序的执行过程,快速定位错误所在。

同时,串行结构也使得程序的维护更加方便,可以逐行修改和更新代码。

(3) 效率高:串行结构能够充分利用CPU的计算资源,避免了多线程并行执行时的线程切换和同步开销。

在一些科学计算领域,串行结构的效率已经足够满足需求。

Fortran的讲义第三章

Fortran的讲义第三章
enddo [<标签>]
综合例题
用牛顿迭代法求方程 fx在0x=0附近的根的 fxn
求方程
x 3 9 .2 x 2 1 6 .7 x 4 0
在x=0附近的根
exam_3_4
goto 10 do i = e1, e2[, inc] 10 <执行语句> {<执行语句>} enddo
异常的程序流程
允许从结构内跳转到结构外,但不符合结构 化的编程规范
if(<逻辑表达式>) then
{<执行语句>} goto 10 end if 10 …
do i = e1, e2[, inc] {<执行语句>} goto 10
enddo 10 ...
异常的程序流程
改变循环结构流程的语句
exam_3_3
[<标签>:] do i = e1, e2[, inc] {<执行语句>} if(<逻辑表达式>) exit [<标签>]
enddo [<标签>]
[<标签>:] do i = e1, e2[, inc] {<执行语句>} if(<逻辑表达式>) cycle [<标签>]
10 <循环终端语句>
循环终端语句可以是除了GOTO、块IF、CASE、CYCLE、 DO、ELSE、ELSE IF、END IF、END、END SELECT、 EXIT、SELECT CASE、STOP和RETURN语句以外的任 一可执行语句
循环结构
Stiff.for
do 10, i = e1, e2[, inc] {<执行语句>} do 20, j = e1, e2[, inc] {<执行语句>}

fortran 顺序结构及基本语句

fortran 顺序结构及基本语句


REAL ----- 一般默认取k=4
REAL(k)或REAL(KIND=k)或REAL*k DOUBLE PRECISION

---- k:4,8
----- 双精度,等价于REAL(8) !声明KIND值为8的3个双精度实型变量 !声明KIND值为4(缺省)的1个实型变量 !a初值为125.5,b初值为0.0
形式
CHARACTER ----- 一般默认取k=1 CHARACTER(k)或CHARACTER(LEN=k)或CHARACTER*k -- k:正整数
示例
CHARACTER(4)e,d,t CHARACTER f,g*5
!声明长度为4的3个字符型变量 !声明长度为1(缺省)和为5的2个字符型变量
操作数类型转换:允许混合运算,按最高级进行转换。
12+13+14.5(12+13)+14.525+14.525.0+14.539.5
长安大学地学信息技术研究所
09/10第一学期 16
字符表达式
字符表达式:字符操作数、字符操作符和圆括号组成。 字符操作数:字符、字符串、字符型变量或字符型函数 字符操作符:求子串(i:j),连接符// 圆括号: 示例
( ),用以改变操作数的操作顺序。
不同类型的操作数和操作符组成的表达式其操作方式、操
作规则及操作结果亦不相同。
四种类型表达式: 算术表达式: 字符表达式: 关系表达式: 逻辑表达式:
(number+12)*count
str1(i:j)//str2 (x+y)<1.25E-25
.NOT.(L1 .AND. L2 .OR. L3)
3.1 常量/实数/范围

fortran基本语法

fortran基本语法

fortran基本语法Fortran是一种高级编程语言,它的全称是Formula Translation,最初是为数学和科学工作者设计的。

它的语法简单易学,特别适合数值计算、科学计算、工程计算和数据处理等领域。

本文将介绍Fortran的基本语法。

1.程序结构Fortran程序由一系列语句组成,每个语句占一行。

程序的执行顺序是从上到下、从左到右。

程序中可以包含注释,注释以“!”开始,直到行末为止。

Fortran程序通常由三个部分组成:程序头、主程序和子程序。

程序头包含程序的名称、作者、日期等信息。

主程序是Fortran程序的核心,它包含了程序的主要计算过程。

子程序是主程序的辅助程序,在主程序中可以调用子程序完成某些计算任务。

2.变量和常量Fortran中的变量是用来保存数据的,变量的类型可以是整数、实数、字符、逻辑等。

变量名必须以字母开头,长度不超过31个字符。

变量的赋值使用符号“=”,例如:a = 10b = 3.14c = 'Hello, World!'Fortran中的常量是指在程序执行期间不会改变的值,常量可以是整数、实数、字符、逻辑等。

Fortran中的常量可以使用以下符号表示:整数常量:例如5,-10等。

实数常量:例如3.14159,-2.5E-3等。

字符常量:例如'Hello, World!','A'等。

逻辑常量:例如.TRUE.,.FALSE.等。

3.运算符Fortran中的运算符包括算术运算符、逻辑运算符和关系运算符。

算术运算符:加:+减:-乘:*除:/幂:**逻辑运算符:非:.NOT.与:.AND.或:.OR.关系运算符:等于:==不等于:/=大于:>小于:<大于等于:>=小于等于:<=4.控制结构Fortran中的控制结构包括分支结构和循环结构。

分支结构:IF语句:根据条件执行不同的语句。

IF (a > b) THENPRINT *, 'a is greater than b'ELSEPRINT *, 'b is greater than a'END IFSELECT CASE语句:根据表达式的值执行不同的语句。

hh-fortran-02顺序结构

hh-fortran-02顺序结构

read*,x,y
print*,"交换前x=",x
print*,"交换前y=",y
x=x+y y=x-y x=x-y
如何记? 左边:x y x 右边:x与y,+ - -
print*,"交换后x=",x
print*,"交换后y=",y
end
37
例2.6 输入一个三位整数,将它反向输出,如输 入123,输出321。
问题: S1、S2、S3、S4、S5没说明,如何判断类型?
34
例2.4 求 f(x)=x3+sin2x+ln(x4+1) 分析:f(x) 用y表示,x从键盘输入
implicit none real x,y read*,x y=x**3+(sin(x))**2+log(x**4+1) print*,y end 输入:154 输出:2.401221
▪ 注意: ▪ 要 “ 见 名 知 义 ” , 如 : AREA“ 面 积 ” ,
GRADE “成绩”,AVER “平均值”等。 ▪ FORTRAN无“保留字”,但为避免误解、混
淆,应尽量避免。
18
变量的说明
▪ 三种方式: ➢1. 强制说明 ➢2. 隐含说明语句 ➢3. 隐含说明 ▪ 顺序:123
FORTRAN 组 成 长短
类型
字符
开头字 大 小 写

要求
FORTRAN 字 母 、 1~6 个 字 字母
77 及 以 前 数字 符 超 过 6
版本
后面字
符无效
不区分
FORTRAN9 0及以上
字母、 数字和 下划线
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

表控输入语句
用户不必指出输入数据的格式, 用户不必指出输入数据的格式,只要将数据按合法 形式输入即可 *,变量表 READ *,变量表 *:表控输入
*, 例:READ *,X,Y,Z 从键盘读入3个实型数据分别给X 从键盘读入3个实型数据分别给X、Y、和Z。 READ (*,*) 变量表 第一个* 第一个*:系统隐含指定的输入设备 第二个* 第二个*:表控输入 输入数据可用逗号隔开也可以用一个或多个空格隔开 输入数据可用逗号隔开也可以用一个或多个空格隔开 也可以 输入的数据类型应与变量类型尽量保持一致。 输入的数据类型应与变量类型尽量保持一致。 输入数据的个数不应少于变量个数。 输入数据的个数不应少于变量个数。
2. 隐含说明语句 IMPLICIT 将某个或某些字母开头的变量规定为所需的类型。 将某个或某些字母开头的变量规定为所需的类型。 类型说明符(字母表) IMPLICIT 类型说明符(字母表) INTEGER(A,C,T例:IMPLICIT INTEGER(A,C,T-V) 3. 隐含约定 (I-N规则) 规则) 以I,J,K,L,M,N 开头的变量被当成整型变量 FORTRAN90中一般不提倡用, FORTRAN90中一般不提倡用,通过在程序变量说明 中一般不提倡用 之前加入: 语句来取消I 规则。 之前加入:IMPLICIT NONE 语句来取消I-N规则。
STOP语句 STOP语句 作用: 作用:停止程序的运行 程序中可有多个STOP ,为了区分哪一个STOP,在执行 为了区分哪一个STOP, 程序中可有多个STOP ,为了区分哪一个STOP,在执行 STOP同时输出信息。 STOP同时输出信息。 同时输出信息 STOP 1234 ABC’ STOP ‘ABC ABC (输出信息不超过5位的正整数) 输出信息不超过5位的正整数) ( 输出信息是字符串 )
表控输出语句
格式: 格式: PRINT *,输出表 *,输出表 WRITE(*,*)输出表 WRITE(*,*)输出表 第一个* 第一个*:系统隐含的输出设备 第二个* 第二个*:表控格式输出 输出项可以是常量、变量、表达式或字符串, 输出项可以是常量、变量、表达式或字符串,它们 之间使用逗号隔开。 之间使用逗号隔开。 每一个输出语句在新的一行开始显示。 每一个输出语句在新的一行开始显示。 没有输出项时,输出一个空行。 没有输出项时,输出一个空行。 例如: *,X*2, 例如:PRINT *,X*2,Y+3 PRINT *,’N= ,N *, N=’,N N= *:表控格式
函数自变量是有类型的,函数值也是有类型的。 函数自变量是有类型的,函数值也是有类型的。
FORTRAN算术表达式 2.4 FORTRAN算术表达式
算术运算符: 算术运算符: + 优先级: 优先级: * / 高 低 **(乘方) **(乘方) 乘方 ** * / +,+,-
• 同一优先级的两个运算,按“从左到右” 同一优先级的两个运算, 从左到右” 例如: 例如: 3+53+5-6.0*8.0/4**2 与 3+5-(6.0*8.0)/(4**2)等价 3+5-(6.0*8.0)/(4**2)等价 建议使用‘()’ 建议使用‘()’
• 注意 (1)标识符长度为: 1—31 标识符长度为: 31 (2) 大小写等价 (3) Fortran90 没有规定系统的保留字 (尽量避免使用使用语句名、函数名) 尽量避免使用使用语句名、函数名) 例如:sin 是函数名 例如: sin=3.4 sum=sin*sin(1.2) print*,sum 例如: 例如:read *,print
END、STOP和PAUSE语句 2.7 END、STOP和PAUSE语句
END语句 END语句 作用:(1 作用:(1)结束本程序单元的运行 :( (2)作为一个程序单元的结束标志 在子程序中END一方面作为子程序结束的标志, 在子程序中END一方面作为子程序结束的标志, END一方面作为子程序结束的标志 结构程序设计
FORTRAN常量 FORTRAN常量 FORTRAN变量 FORTRAN变量 FORTRAN函数 FORTRAN函数 FORTRAN算术表达式 FORTRAN算术表达式 赋值语句 简单的输入输出语句
FORTRAN常量 2.1 FORTRAN常量
常量:程序运行期间其值始终不变的量。 常量:程序运行期间其值始终不变的量。 允许使用6 Fortran90 允许使用6种常量 INTEGER 整型常量 REAL 实型常量 DOUBLE PRECISION 双精度常量 COMPLEX 复型常量 LOGICAL 逻辑型常量 CHARACTER 字符型常量
2.6 简单输入输出语句
(表控输入输出语句) 表控输入输出语句)
FORTRAN用READ语句实现数据输入,方式有3种: FORTRAN用READ语句实现数据输入,方式有3 语句实现数据输入 用自由格式输入,即表控格式输入。 (1)用自由格式输入,即表控格式输入。 数据按用户规定的格式输入; (2)数据按用户规定的格式输入; 无格式输入,即以二进制形式输入, (3)无格式输入,即以二进制形式输入,只适用从磁 盘或磁带输入。 盘或磁带输入。

变量的说明
1. 类型说明语句 变量名1, 变量名2, 2,… 类型说明符 变量名1, 变量名2,
INTEGER:整型; REAL:实型; INTEGER:整型; REAL:实型; PRECISION:双精度型;COMPLEX:复型; DOUBLE PRECISION:双精度型;COMPLEX:复型; LOGICAL:逻辑型; CHARACTER:字符型; LOGICAL:逻辑型; CHARACTER:字符型; 例如: 例如:INTEGER X,Y REAL AVER,TOTAL
在以上3类规则中,第一类优先级最高, 在以上3类规则中,第一类优先级最高,第二类次 之,隐含约定最低。也就是说,当一个变量被强制定义 隐含约定最低。也就是说, 为某种类型时,IMPLICIT语句和隐含约定将不再起作用。 为某种类型时,IMPLICIT语句和隐含约定将不再起作用。 语句和隐含约定将不再起作用
P25 例2.1 IMPLICIT NONE INTEGER M,N READ *,M,N,N,M M=M+N N=M+N PRINT *,M,N END 10时 当输入 7 8 9 10时, 输出结果为: 输出结果为:19 28
输入三个实数,输出最大值、 P25 例2.2 输入三个实数,输出最大值、最小值 program ex_22 implicit none real:: x1,x2,x3,maxnum,minnum read(*,*) x1,x2,x3 maxnum=max(x1,x2,x3) minnum=min(x1,x2,x3) "最大数为 最大数为:", write(*,*) "最大数为:", maxnum "最小数为 最小数为: write(*,*) "最小数为:", minnum end program ex_22 运行输入 7, 8, 9 ↙ 结果为: 最大数为: 结果为: 最大数为: 9.000000 最小数为: 最小数为:7.000000
FORTRAN变量 2.2 FORTRAN变量
• 变量的概念 变量是在程序运行过程中其值是可以变化的量。 变量是在程序运行过程中其值是可以变化的量。 一个变量需要一个变量名来标识。 一个变量需要一个变量名来标识。 变量名 A 3.25 • 变量名 标识符: 由字母、下划线、数字组成, 标识符: 由字母、下划线、数字组成,且开头只能是 字母
FORTRAN90中 还可以: FORTRAN90中,还可以: 类型说明符::变量名1,变量名2, ::变量名1,变量名2,… 类型说明符::变量名1,变量名2, INTEGER:: INTEGER:: X,Y REAL:: REAL:: X1=12.3 使用::这种格式时, 使用::这种格式时,可以赋初值 ::这种格式时
转换为5.0,然后乘以6.5得到32.5 5.0,然后乘以6.5得到 例如 5*6.5 将5转换为5.0,然后乘以6.5得到32.5 1/4*0.5结果为 结果为0.0 例如 1/4*0.5结果为0.0
2.5 赋值语句
格式: 变量名= 格式: 变量名=表达式 作用:将右边表达式的值赋给左边变量, 作用:将右边表达式的值赋给左边变量,即将表达 式的值存放到变量所对应的存储单元。 式的值存放到变量所对应的存储单元。 例如: 例如: X=X1+X2*X3+5 赋值语句类型转换: 赋值语句类型转换: 1.左右两边类型相同,运算完毕,直接赋值 1.左右两边类型相同,运算完毕, 左右两边类型相同 2.左右两边类型不同,计算,转换, 2.左右两边类型不同,计算,转换,赋值 左右两边类型不同 例:INTEGER N N=33.3*3 N的值 N的值 99
每一个READ语句都是从一个新的输入行开始读数的, 每一个READ语句都是从一个新的输入行开始读数的, READ语句都是从一个新的输入行开始读数的 如果一行中数据多于变量个数,则多余的数据作废。 如果一行中数据多于变量个数,则多余的数据作废。 例如: 例如: *, READ *,M,N *,X1, READ *,X1,X2 *,A1, READ *,A1,A2 输入: 12.3, 输入:5,6,12.3,14.8 回车 输入:56.4, 输入:56.4,12.8 回车 该程序执行后,M=5,N=6, X1=56.4,X2=12.8,A1、 该程序执行后,M=5,N=6,而X1=56.4,X2=12.8,A1、 A2得不到值 得不到值。 A2得不到值。
• 算术表达式中的类型问题 (1)同类型运算的结果保持原类型 2*3的值为整数6 的值为整数6 5/2的值为整数2 的值为整数2 (2)不同类型的运算转换成同一类型然后进行运算。 不同类型的运算转换成同一类型然后进行运算。 规则:低级类型转换成高级类型 规则: integer 低 real 高 (由于1/4 为0) 由于1/4
相关文档
最新文档