Fortran程序设计基础.ppt

上传人:w****2 文档编号:16554876 上传时间:2020-10-11 格式:PPT 页数:40 大小:215KB
返回 下载 相关 举报
Fortran程序设计基础.ppt_第1页
第1页 / 共40页
Fortran程序设计基础.ppt_第2页
第2页 / 共40页
Fortran程序设计基础.ppt_第3页
第3页 / 共40页
点击查看更多>>
资源描述
第二章 Fortran程序设计基础 本章主要包括以下内容: 1. 程序书写 2. 字符集及标识符 3. 数据类型 4. 声明的有关事项 5. 算术表达式 6. 表控输入 /输出语句 第一节 程序书写 一 . 程序构造形式 例 2-1 简单 Fortran程序的构造形式 PROGRAM MONEY ! Calculates balance after interest compounded REAL BALANCE, INTEREST, RATE BALANCE = 1000 RATE = 0.09 INTEREST = RATE BALANCE BALANCE = BALANCE + INTEREST PRINT , New balance:, BALANCE END PROGRAM MONEY * PROGRAM 关键字 标识 Fortran 主程 序,后接程序名, 这一行是可选的; *!第二行是注释, 不参加编译; * REAL 是声明语句, 将后边的变量声明 为实型数; * 空行不参与编译,只 是增加程序的可读性; 这四行是非执行部分; 之后的部分到 END语句 之前为执行部分 根据上述的程序书写,给出简单 Fortran 90 程序 的构造形式: PROGRAM 程序名 声明语句 执行语句 ENDPROGRAM 程序名 方括号内的部分是可选的, END 语句是唯一 必须的,表示程序编译到此结束。 END 语句中的程序名可以省略,但若出现程 序名,必须同时出现 PROGRAM 关键字。 对于可选部分,如果缺省,则按照约定(隐 含)规则进行 二 . 语句 语句是 Fortran 程序的基本单位,一条语句可包含 0 132个字符。 Fortran77规定,一条语句的不同部分应从特定的列开始,这样的 书写格式称为固定格式,相应的程序文件扩展名为 .f 或 .for; Fortran 90 无此限制,自由格式,相应的文件扩展名为 .f90。 除赋值语句外,所有的语句都从一个关键字开始。例如: 例 2-1 中出现的关键字: PROGRAM、 REAL、 PRINT和 END。 一般情况下,每行一条语句。 若一行有多条语句,它们之间以分号间隔。 可以将几条简单的赋值语句写在一行上,例如: A =1; B =1; C =1 也可以只保证一行一条语句,例如: A =1 B =1 C =1 这完全根据个人的书写习惯决定。 假如一条语句一行写不完,允许出现续行,但 要求被续行最后的非空白字符为 Fortran 90 支持复数类型及其算术运算。 2 复数型常量 复数类型常量呈现下列形式: (r, m) 其中, r 代表复数常量的实部; m 代表复数常量的虚部。 四 . 逻辑类型 1 逻辑型变量 声明逻辑型 (或布尔型 )变量 L 的一般形式为: LOGICAL L LOGICAL(KIND=n)L 种类参数 n 为 1、 2、 4、 8,种类参数缺省值为 4。 2 逻辑型常量 逻辑型常量为 .TRUE.(逻辑真 )和 .FALSE.(逻辑假 ),其种类 参数取缺省值。 显式规定逻辑型常量的种类参数,例如: .TRUE._2,种类 参数规定为 2。 五 .字符类型 1 字符型变量 声明字符型变量 C 的一般形式为: CHARACTER C CHARACTER (LEN=len) C, CHARACTER*len C CHARACTER (LEN=len, KIND=n) C CHARACTER (KIND=n, LEN=len) C 字符型变量的规定: 字符型有两个可选参数:长度参数 LEN=和种类参数 KIND=。不管 是否显式规定,字符型种类参数总是 1,即一个字符占一个存储字节。 假如两个可选参数都没有给出,长度和种类参数均取缺省值 1; 若只给出一个参数,代表长度; 若给出两个参数,依次为长度和种类参数 (种类参数只能取 1); 若采取关键字 (KIND =, LEN =)声明形式,参数顺序可以任意。例如: CHARACTER (KIND=1, LEN=10) Str CHARACTER (LEN=10, KIND=1) Str 2 字符型常量 Fortran 中的字符串统一以单引号或双引号作为界定符: k_ch k_“ch” 其中: k为可选的种类参数, ch 为字符 (串 )。 示例: “ WHAT KIND TYPE?” TODAY”S DATE IS “The average is: ” 约定: * 若要表示和界定符相同的字符,须用两个联系的界定字 符来表示,例如:字符型常量 “ Fortrans 90”,表示字符串 Fortrans 90,字符串长度为 12。 * 界定符必须统一:要么都用单引号,要么都用双引号。 一 . 强制类型声明 I N 规则:除非特别声明,在程序中的变量名 凡以 I、 J、 K、 L、 M、 N 这六个字母开头的都被 认为是整型变量,以其他字母开头的表示实型变 量。 推荐使用: 兼容 Fortran 90前版本的程序代码。 不推荐使用: 这种隐含约定往往会带来严重的程序错误。 第四节 声明的有关事项 例 2-3 PROGRAM Main Interest=0.08 Count=0.08 PRINT*, Interest = ,Interest !0 PRINT*, Count = , Cont !0.0 END PROGRAM Main IMPLICIT NONE REAL Interest, Count Interest=0.08 Count=0.08 PRINT*, Interest = ,Interest !0.08 PRINT*, Count = , Count !0.08 END 通过类型声明,消除 隐含约定带来的错误。 二 . 变量声明及初始化 Fortran 语言属于编译型语言,程序编译过程中编译器为引 用变量开辟了内存空间,程序执行过程中不再申请内存, 动态分配除外。 变量声明一般形式为: 数据类型 ,属性 : 变量列表 约定: * 属性包括 DIMENSION 、 PARAMETER 、 TARGET 、 POINTER 、 ALLOCATABLE、 INTENT 等; * 并列冒号 “ :” 是可选的; * 在声明的同时给变量赋初值,符号 “ :” 不能省略; * 声明部分必须出现在执行部分之前,不能出现在执行部 分; * DATA 也是声明的一部分,可以用来给变量赋初值,通 常跟在赋值的变量声明之后、执行语句之前; * 值得注意的是:一般的赋值语句是执行语句 例 2-4 变量声明及初始化 PROGRAM Main IMPLICIT NONE INTEGER a REAL(8) :b=2.0 COMPLEX(8) :c=(1.0,2.0) CHARACTER(20) :str=“Fortran 90” a=6 PRINT*, a=, a, ,b=, b, ,c=, c, ,str=, str END 程序执行结果: a=6 ,b=2.0 ,c=(1.0,2.0) ,str=Fortran 90 在声明的同时给变量赋初值,符号“ :”不能省略,省略时可采用如下形式: INTRGER a a=6 例 2-5 DATA 语句的使用 PROGRAM Main IMPLICIT NONE INTEGER a REAL(8) b COMPLEX(8) c CHARACTER(20) str DATA a,b,c,str/1,2.0,(1.0,2.0),FORTRAN 77/ PRINT*, a=, a, ,b=, b, ,c=, c, ,str=,str END * Fortran 77使用 DATA 语句来设置初值; * DATA 语句的格式是在 DATA 关键字后接上要设置初值 的变量,然后再用两个斜杠包住要设置的变量值。 三 . 常量声明 (PARAMETER) 在程序中固定不变的常数,如圆周率、重力加速度等,可以声明成变 量。 符号常量只能在声明时通过 PARAMETER 属性设置其值,而且只能 设置一次。在程序中不能改变。 例 2-6 常量声明 PROGRAM Main IMPLICIT NONE REAL,PARAMETER :PI=3.14159 PRINT 10, PI/6.0 10 FORMAT(PI/6.0=,F4.2) END 计算结果: 3.14159/6.0=0.523598 在格式要求中 F4.2,即带小数点后两位共四位的实数,按照四舍五入 的原则,得到结果: 0.52 算术表达式由运算符、常量和变量组成,算术表达式获得 的结果是标量,只是涉及到数值的大小。 1. 运算符及其优先级 Fortran 有 5 种算术运算符,分别是加、减、乘、除和乘幂, 按优先级由低到高排列如下: + 加, 减, * 乘, / 除, * 乘幂 (两个星号之间不能 有空格 ), ( ) 括号 其顺序是:乘除运算级高于加减运算,乘幂运算高于乘除运算,括号总是具有最 高优先级; 在运算级相同的情况下,按照 “ 从左到右 ” 的法则; 在连续的乘幂运算中,按照 “ 从右至左 ” 的法则,例如: 2*3*2,先计算 3*2,再计算左边的乘幂,结果是 512,而不是 64 第五节 算术表达式 2. 整数除法 编程实现除法运算时,如果是整数除法,那么结果也是整数。 值得注意的是:如果不能整除,那么结果只取商的整数部分,小数部 分被去掉,例如: INTEGER A, B, C A=1 B=2 C=A/B 那么编程计算结果为 C=0,而不是 0.5 因此对于变量 C,可以直接采用 1.0/2.0或者 0.5,而不能直接采用 1/2. 对于整除情况 ,不会存在以上的问题 ,例如 : INTEGER A, B, C A=6 B=2 C=A/B 那么编程计算结果为 C=3 3. 算术表达式中的类型转换 Fortran语言是非强类型语言,具有以下特点和规定 : * 允许 不同类型的数值型数据之间进行算术运算; * 不允许 数值型数据与非数据型数据之间进行算术运算; * 不同类型之间的算术运算式 一是显式地进行类型转换 ,例如 A、 B 分别为整型和实 型, REAL(A)就将整型 A 转换为实型, INT(B)则将实型 B 转换为整型。 一是系统自动转换规则,将低精度类型转换为高精度类 型,例如在整型和实型之间进行算术运算时,整型将转换 为实型。 例如 3+4.0,程序执行时先将 3转换成 3.0,然后执行 3.0+4.0,得到实型 结果 7.0。 * 数据类型转换是从左至右,当遇到不同类型时才开始转换。 例如: 9/4/3.0 程序执行时,先进行 9/4 整数除法运算,得整型数 2,然后整型数 2 被转换 成实型数 2.0,再除以实型数 3.0,最后结果时 0.6666667,而不是数学上的结果 0.75。 如果数值运算为 9/4.0/3.0,最后结果是 0.666666 ,根据数据格式写出结果。 因此:要注意计算机程序执行结果与数学习惯的区别。 4. 赋值语句中的类型转换 例 2-7,赋值语句中的类型转换 PROGRAM Main IMPLICIT NONE INTEGER :a=3/2 INTEGER :b=3.0/2 REAL :c=3/2 REAL :d=3.0/2 PRINT*, a=, a, ,b=, b, ,c=, c, ,d=,d END 程序运算结果: a=1, b=1, c=1.0000000, d=1.500000 程序说明: : 不能缺少; 变量与表达式的结果类型相同,直接进行赋值; 变量与表达式的结果类型不同,先进行表达式的类型转换,再进行赋值。 进行变量赋值时最好使用相同类型。 表控输入 /输出语句, READ*和 PRINT* 语句。 READ和 PRINT表示输入 /输出,“ *” 表示表控输入或输出,要求从 系统隐含指定的输入 /输出设备上输入或输出数据。 1. 表控输入语句 表控输入:自由格式输入。 READ*语句的一般形式为: READ* ,变量列表 约定: 表控输入,不必指定输入数据的格式,只需将数据依次输入; 变量列表的变量用逗号分开,例如: A1, A2, A3 当程序执行到 READ* 语句时,向设备发出输入数据的指令,通过键 盘输入数据。 第六节 表控输入 /输出语句 数据输入形式: 一个数据,可直接输入; 多个数据,数据之间要分隔,解决的办法有两个: (1) 使用多行输入数据,每个数据单独放一行。 (2) 在一行输入多个数据,各个数据之间用分隔符分隔开。 允许使用的分隔符有空格、逗号和斜杠 (/的作用是终止输入 )。 例 2-8 表控输入 PROGRAM Main IMPLICIT NONE INTEGER a REAL b CHARACTER(5) c LOGICAL d COMPLEX e PRINT*, “Input a, b, c, d, e” READ*, a, b, c, d, e PRINT*, a=, a, ,b=, b , ,c=, c, ,d=, d, ,e=, e END 程序运行结果: 显示: “ Input a, b, c, d, e” 读入: 1,2,abc,.true.,(1,-1) -这里用的分隔符是 , 结果: a=1 ,b=2.0000000 ,c=abc ,d=T ,e=(1.0000000,-1.0000000) 数据输入约定: ( 1)如果输入数据个数多余变量个数,多余的数据不起作用(被忽略); 如果输入数据个数少于变量个数,例如使用斜杠提前结束输入, Fortran不认为有错,而是把没有输入数据的数值型变量值设为 0或者 0.0(按照缺省值给定),字符型变量值的设定依赖于特定系统的字 符串。 ( 2)输入数据的类型要与对应的变量类型一致。 * Fortran允许将一个整数输入给一个实数,也允许将一个实数输入 给一个整数; * 一个整数或实数可以输出给一个字符型变量,一个含有前导字符 是字母的字符串不能输给一个整数或实数。 ( 3)若字符不含空格,输入时可不加界定符(“”或);否则需加。 ( 4) Fortran规定:一个 READ*语句必须从一个新的输入行开始,即要 求输入数据的行数至少与 READ*语句的个数相等。 2. 表控输出语句 表控输出语句的一般形式为: PRINT*,输出变量列表 约定: ( 1)输出变量列表可以是常量、变量、表达式或字符串,使用逗号分隔。 ( 2) PRINT* 语句使用简单,可以跟踪计算过程中变量的变化情况。 ( 3)对多个 PRINT* 语句, Fortran 规定:每个 PRINT* 语句都从一个新行开 始输出,自动换行;若一个 PRINT* 语句无输出项,将在屏幕输出一空白行。 ( 4) PRINT* 语句具有计算功能,可以直接进行表达式计算。 例 2-9 表控输出 PROGRAM Main IMPLICIT NONE INTEGER :a=1,b=5,c=8 PRINT*, max(a,b,c)=, MAX(a,b,c) END 程序运行结果: max(a,b,c)=8 -在输出过程中执行了求最大值运算 程序由声明语句和执行语句构成,以 END结尾; Fortran90自 由格式,任一列开始,容纳 132字符,可续行 39个;记号内 不允许出现空白;注释以感叹号标识 字符集包括 26个字母,数字、下划线及 21个特殊字符;标识 符名只能由字母、数字和下划线构成,并以字母开头,长度可达 31个字符 数据类型:整型、实型、复数型、逻辑型和字符型,并以种类参数 KIND(存储字节数)控制数据取值范围和精度。字 符型除种类可选参数(值为 1)外,还有规定字符串长度的 可选参数 小 结 通过 IMPLICIT NONE 强制类型说明、声明变量的通用形式: 数据类型 ,属性 :变量列表,当有属性存在,或声明变量 的同时进行初始化,声明操作符( :)是必须的。声明常量 使用 PARAMETER属性,并在声明同时进行赋值 算术运算规则及运算符号的优先级和数学上一致,整数除法 若不能整除,结果取商的整数部分,小数点后部分被去掉; 若表达式中操作类型不一致,且没有进行显式类型转换,系 统自动从左到右,按运算符号优先级,将低精度类型转换为高精度类型进行运算 当输入 /输出简单数据时,可以适用 READ*/PRINT*语句, 按自由格式,分别从键盘键入数据,从屏幕显示输出数据
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!