资源预览内容
第1页 / 共60页
第2页 / 共60页
第3页 / 共60页
第4页 / 共60页
第5页 / 共60页
第6页 / 共60页
第7页 / 共60页
第8页 / 共60页
第9页 / 共60页
第10页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
FORTRAN语言程序设计1 1特制分析特制分析 第一章第一章 程序设计概述2 2特制分析特制分析1.1 程序设计基本概念1.程序:计算机操作命令的集合。例:求x、y、z的平均值aver的程序。2.程序设计:编制程序(操作命令)的过程。 3.程序设计语言:书写程序所采用的某种专用语言。 高级语言:数学语言或自然语言。如:FORTRAN语言等 程序设计语言的类型: 低级语言:机器语言和汇编语言。3特制分析1.2 程序设计方法和步骤1.2.1 程序设计方法 1.结构化方法 (1)采用“自顶向下,逐步求精”的程序设计方法. (2)采用“单入口单出口”的控制结构. (3)三种基本程序结构:顺序、选择和循环. 结构化程序设计的特征: (a)模块化:把一个较大的程序划分为若干个子程序,每一个子程序独立成为一个模块; (b)层次化:先设计第一层(即顶层)。然后步步深入,逐层细分,逐步求精,直到整个问题可用程序设计语言明确地描述为止。 (c)逐步求精:是对一个复杂问题,从抽象到具体,最终编制出一个可执行的程序。 2.面向对象方法 详见P54特制分析1.2.2 程序设计步骤 1.分析问题 2.建立数学模型 3.选择算法 4.编写程序 5.调试运行 6.分析结果 7.写出程序的文档 5特制分析 第二章 算 法6 6特制分析特制分析2.1 算法概述1.算法:计算机解题的方法和步骤.2.算法特征: (1)有穷性 一个算法必须总是在执行有限步骤之后结束。 (2)确定性 算法中的每一个步骤应当是确定的,无二义性;相同的输入只能得出相同的输出。 (3)可行性 算法中的每步骤都是有效地执行。 (4)有零个或多个输入 (5)有一个或多个输出3.算法的分类: (1)数字运算:用于求数值解,此类算法有现成的模型,运用较成熟. (2)非数字运算:用于非数据处理的一些事务性工作,此类算法面广量大,要求各异,有一定难度.7特制分析 2.2 算法特点 计算机特别适合做大量的重复性操作,如连续加、连续乘或者其他连续判断或处理。计算机对于大量的重复性操作,并非一次性完成,而是每次按部就班,循环往复重复前一次的操作 ,即每次操作方法(即循环体)相同,但操作数据不同而已。 例如,求1,2,10的累加和,其程序如下: do i=1,10 !循环语句 s=s+i !循环体 enddo 上述循环所要执行的重复操作是: s=s+i (即循环体),但每一次循环时,循环体的操作数据s,i的值是不同的。.8特制分析2.3 算法的表示方法(1)传统流程图 即用有向线段将描述算法步骤的各功能框连接起来.如下图所示: 图(a)顺序结构 图(b)选择结构 AB条件PAB真假图(c)当型循环结构 图(d)直到型循环结构循环条件循环体循环体循环条件真假假真9特制分析(2)N-S流程图 它是一种去掉流程线的流程图,称为盒图. N-S流程图形式如下图所示:AB图(a)顺序结构 图(b)选择结构图(c)当型循环结构 图(d)直到型循环结构当执行循环的条件成立循环体直到退出循环的条件成立循环体条件真假AB10特制分析 第三章 FORTRAN语言简介1111特制分析特制分析 3.1 FORTRAN 语言概述1.何谓FORTRAN语言? FORTRAN是英文“FORmula TRANslate”的缩写,即中文的“公式翻译器”之意。FORTRAN语言是一种用于科学计算的程序设计语言。2.何谓FORTRAN源程序? 用FORTRAN语言编制的程序,称为FORTRAN源程序。 举例:编制FORTRAN源程序ex02_01.f90,求x、y、z的平均值aver 。 PROGRAM ex02_01 READ *,x,y,z aver=(x+y+z)/3 PRINT *,aver END 12特制分析3.2 FORTRAN程序的执行过程 13特制分析3.3 FORTRAN语言的发展历程(1)1951年,John Backus在纽约首次提出FORTRAN语言 ,并于1954年对外发布,称FORTRAN。 (2)1958年,扩充和完善FORTRAN, 推出FORTRAN。 (3)1960年,推出FORTRAN ,但没有在计算机上实现。 (4)1963年,推出了FORTRAN 。没有充分考虑兼容性。 (5)1966年,推出FORTRAN 66美国标准,后被ISO采用。 (6)1978年,推出FORTRAN 77,兼容性好,结构化特征。 (7)1991年,推出FORTRAN 90现代语言,可视化编程。 (8)1997年,公布FORTRAN 95标准,并行运算的支持。 (9)1997年,微软和数据设备公司合作推出Digital Visual FORTRAN 5.0。 14特制分析 第四章 FORTRAN语言开发环境 详见教材:3.3 FORTRAN语言开发环境1515特制分析特制分析 第五章 FORTRAN 语言基础知识1616特制分析特制分析5.1 字符集 FORTRAN语言允许使用的字符集为: 英文字母英文字母A-Z A-Z 或或 a-za-z(即大、小写英文字母)阿拉伯数字阿拉伯数字0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9特殊符号特殊符号空格空格 = + - * / # = + - * / # ? ( ) ,. . : : “ ! & ; $ _ ! & ; $ _ 应当注意:在FORTRAN语言中,英文字母不区分大小写,在保留字、变量名和函数名中,大、小写字母都是等价的,如REAL何real或Real是一样的。17特制分析5.2 名称及保留字5.2.1 名称 作用:用来表示FORTRAN源程序中的变量、符号常量名、 数组、函数、过程等实体的名称。 名称的定义(即语法描述):由英文字母开头的31个以内 的字母、数字、下划线(_)以及美元符字符序列组成。 例:NUMBER、x1、root_2、y$ _ab、5xy、x.y5.2.2 保留字 一个语句中的特定单词,如PROGRAM、END、IF、ENDIF、 DO、ENDDO等,称为语句保留字。 说明: FORTRAN90程序中允许用保留字作为其它实体的名称,但是一般不提倡。 18特制分析5.3 程序单元 一个完整的FORTRAN程序,应由以下程序单元构成: 主程序单元 外部子程序单元1 PROGRAM MAIN SUBROUTINE SUB1() 主程序体 子程序体 END PROGRAM END 其中主程序单元只能有1个,其它程序单元可以有0-n个。 程序单元的描述详见第十章。 19特制分析5.4 语句的排列顺序 一个程序单元中语句的排列顺序如下: 非执行语句 程序单元 可执行语句例:编制FORTRAN源程序eex5_1.f90,求x、y、z的平均值aver 。 PROGRAM eex5_1 REAL x,y,z,aver READ *,x,y,z aver=(x+y+z)/3 PRINT *,aver END20特制分析5.5 程序的书写格式(1)固定格式:将一个语句行分为若干个区域,如下图所示:(2)自由格式:一个语句的书写不受区域的限制。 FORTRAN90的源程序源程序格式采用自由格式书写,源程序源程序文件扩展名为.f90。 例:详见eex5_1.f90的源程序源程序格式及其扩展名。21特制分析5.6 数据类型5.6.1 基本概念 1.内部数据类型 FORTRAN语言将内部数据划分为以下类型: 整型 实型 算术型 数据类型 复型 逻辑型 字符型 2.种别 一个数据在内存中均占有一定字节个数的存储单元。上述每类数据都有其不同的种别(即Kind)特性,即上述每类数据根据其种别特性(即Kind值)的不同分别拥有不同字节个数的存储单元。 3.数据对象 1)常量:程序运行时,其值不能改变的量,称为常量。如:5,3等等。 2)变量:程序运行时,其值可以改变的量,如:变量a, a是一个存储单元。 22特制分析5.6.2 常量 整型、实型、复型常量是一个代数值;逻辑型常量是一个逻辑值(.true.或.false.);字符型常量是一个字符串。以上常量均以书写方式确定其类型。5.6.2.1 整型常量 整型常量表示普通代数中的整数。 十进制整型常量的一般形式:n _Kind值 其中: 是该整型常量的符号。 n 是一个十进制数字(09)序列。 Kind值为:1、2、4、8之一。分别表示1、2、4、8个字节个数。 FORTRAN 90/95标准中整型常量的范围没有明确规定。 例如:122、0、-36、559_2 均为合法的整型常量 100.0、100,000、100 0、1002 均为非法的整型常量 5.6.2.2 实型常量 实型常量表示普通代数中的小数或指数。 1.小数实型常量 一般形式:n .m 或n. 或.m 其中:n、m是十进制数字序列。 n是整数值,m是小数值。 例: 12.0 、0.12 、12. 、.1223特制分析 2.指数实型常量 一般形式:n .mEs 或n Es 其中:n、m是十进制数字序列。 n是整数值,m是小数值。 Es是指数部分,表示10的几次方。其中: E是指数符号,s是指数数值,是指数数符。 例:指数实型常量:12E2 0.12E-2 2E5 1E-10 相应代数值: 12x102 0.12x10-2 2x105 1x10-10 注意:单独的指数部分不能构成一个实型常量。 例:E5 5.6.2.3 复型常量 表示普通代数中的复数。即: a bi(其中a是实部, b是虚部) 一般形式:(a,b) 例:(-3,5) !表示复数:-3+5i (0,1) !表示复数:i (2.4,-2.5E2) !表示复数:2.4-2.5x102i24特制分析5.6.2.4 字符型常量 在程序中用以表示文字等非数值信息。 一般形式: 字符串 或 “字符串” 其中:字符串可以是字母、数字、汉字、特殊符号。通常字符串中字 符的个数称为字符长度。 例: PRINT *,南京信息工程大学 PRINT *,”a+b=”,ab说明:1)引号( 或 “ ”)是字符串的分隔符,并非字符常量的一部分。 2)字符串中的空白符有意义,要计数的。例:“A B” ,其字符长度是3。 3)当字符长度为0时,即为空串。 4)字符串内的字母区分大小写,a和A是不同的字符常量。 5)如果字符串中含有单引号,则这个单引号要用两个连续的单引号表示,如:Im a boy.。或者单引号和双引号交替使用,如“Im a boy.”。 25特制分析5.6.2.5 逻辑型常量 在程序中用以表示某个条件(关系表达式和逻辑表达式)的判别结果。 一般形式:. .TRUE. . 即为逻辑真(表示判别条件成立)。 . .FALSE. . 即为逻辑假(表示判别条件不成立)。 例:条件5 3的判别结果是. .TRUE. . ,表示判别条件5 3成立。 条件3 1的判别结果是. .FALSE. .,表示判别条件3 1不成立。 说明: 1.逻辑常量仅有两个,.TRUE.(真)和.FALSE.(假)。注意:逻辑常量两侧的两个小数点不能省略。逻辑型常量是具有逻辑型数据类型的非数值数据,又称为逻辑值或布尔值。 2.2.对于逻辑值.TRUE.,在其存储单元字节内每位为“1”,可视为整数值 -1;对于逻辑值.FALSE.,在其存储单元字节内每位为“0”,可视为整数值0,它们均能参与整数运算。如7+.FALSE.,结果仍为7。1+.TRUE.,结果则为0。 26特制分析5.6.2.6 符号常量 用一个符号所表示的常量值,称为符号常量。例如,圆周率、重力加速度等。使用符号常量时,应当用参数语句(PARAMETER语句语句)对符号常量予以声明。PROGRAM ex05_01IMPLICIT NONEREAL piPARAMETER(pi=3.1415926)!定义pi为符号常量3.1415926WRITE (*,*) sin(pi/6)END27特制分析 变量是数据的存储单元。不同类型的变量存储不同类型的数值。整型、实型、复型变量存储一个(或一对)代数值,逻辑型变量存储一个逻辑值(.true.或.false.),字符型变量存储一个字符串。以上变量均以类型声明确定其类型。5.6.3.1 变量的种别 变量的种别,是指一个变量由几个字节组成。其种别值(即kind值)与常量相同。5.6.3.2 变量的类型 变量的类型均用类型说明(或称类型声明)指定。其目的是通知编译系统为变量分配存储单元,以便存放程序中的数据。 显式类型说明 类型说明方式 隐式类型说明 5.6.3 5.6.3 变量变量28特制分析1.显式类型说明 由类型说明(声明)语句指明变量的类型。 类型说明语句的一般形式: INTEGER(kind值) 变量名表 !整型变量类型说明语句 REAL(kind值) 变量名表 !实型变量类型说明语句 COMPLEX(kind值) 变量名表 !复型变量类型说明语句 LOGICAL(kind值) 变量名表 !逻辑型变量说明语句 CHARACTER(kind值) 变量名表 !字符型变量类型说明语句其中: 1)变量名表:用逗号隔开的一系列变量名。 例如: INTEGER(2) a,b,c !a,b,c为变量名表中的变量。2) INTEGER 、REAL , 等为类型说明语句的保留字,称为类型说明符。 例如: INTEGER(2) a,b,c !INTEGER为类型说明符。29特制分析3)(kind值)=n:为变量的种别值,用以说明变量名表中的各变量由几个字节组成。n为1、2、4、8之一。 a.整型变量的不同种别值及其取值范围,如下表所示: b.实型变量的不同种别值及其取值范围,如下表所示:类型Kind值字节数取值范围INTEGER(1)11-128127INTEGER(2)22-3276832767INTEGER(4)44-21474836482147483648INTEGER(8)88-92233720368547758089223372036854775808类型Kind值字节数取值范围REAL(4)441.1754944E-383.4028235E+38 REAL(8)882.225073858507201E-3081.797693134862316E+308 DOUBLE PRECISION82.225073858507201E-3081.797693134862316E+308c.复型变量的种别值分别为4或8,字节数为8或1630特制分析d.字符型变量不同种别值的说明方式,如下表所示:类型Kind值字节数CHARACTER11CHARACTER (n)nnCHARACTER len=nnnCHARACTER*nnne.e.逻辑型变量的不同种别值,如下表所示:类型Kind值字节数LOGICAL(1)11LOGICAL(2)22LOGICAL(4)44LOGICAL(8)8831特制分析4)kind值为可省略项。该项省略时系统将自动采用由系统指定的缺省值。缺省值一般由编译器确定。但各类变量的种别初始缺省值如下: a.整型变量为4. b.实型变量为4. c.复型变量为8. d.字符型变量为1. e.逻辑型变量为4. 注意:当一个整型、实型变量中所存储的数值超过以上种别值取值范围时,则出错!5)5)类型说明语句中可以使用“:” 给变量名表中的变量赋初值。例:INTEGER: a=6,b=8 !说明变量a,b为4字节整型的同时为其赋初值 REAL(4) : e=3.5 !e为4字节单精度实型变量且初值是3.5 REAL(kind=8) : h=2.6 !h为8字节双精度实型变量且初值是2.6 LOGICAL :la=.true. !la是4字节逻辑型变量且初值是.true. CHARACTER:c1=“a” !c1是1字节字符型变量且初值是字符“a” CHARACTER*4:c2=“南京” !c2是4字节字符型变量且初值是字符串“南京” CHARACTER*5:c3=“ ” !c3是5字节字符型变量且初值为空,即空串32特制分析2.隐式类型说明1)隐含约定(即系统约定,简称I-N规则):程序中凡以字母I-N开头的变量名系统约定(即默认)为整型变量,其余字母(A-H,O-Z)开头的变量名系统均约定为实型变量。 例: n1, m2, i1, j2 均被系统约定为整型变量 a1,b1,c2,d2 均被系统约定为实型变量 说明: i)上述隐含约定仅对整、实型变量有效! ii)Fortran 90虽然支持隐含约定,但不提倡使用。为此,在程序的开始用: IMPLICITIMPLICIT NONE语句向系统声明不使用隐含约定。2)隐含说明语句(即人为约定):按程序中变量名的首字符来确定变量的类型。 一般形式: IMPLICITIMPLICIT 类型说明符(字母1,,字母n) 或: IMPLICITIMPLICIT NONE 例: IMPLICITIMPLICIT REAL(i,k) !程序中凡以i,k开头的变量均为实型变量。 IMPLICITIMPLICIT INTEGER(n,t) !程序中凡以n,t开头的变量均为整型变量。 IMPLICITIMPLICIT NONE !程序中取消隐含约定。33特制分析注意:注意: 以上三种以上三种类型说明方式中,中,显式类型说明语句优先级最高,优先级最高,IMPLICITIMPLICIT语句语句次之,次之,“ “I-NI-N规则规则” ”则最低。则最低。 例如:例如:INTEGER IMAXINTEGER IMAX IMPLICIT REAL(I,J) IMPLICIT REAL(I,J) 以上的类型说明语句,变量以上的类型说明语句,变量IMAXIMAX被被显式类型说明语句说明为整型变量,以为整型变量,以字母字母I I、J J开头的变量名被开头的变量名被IMPLICITIMPLICIT语句语句说明为实型变量,程序中出现的其它整、为实型变量,程序中出现的其它整、实型变量均按实型变量均按I-NI-N规则规则约定其类型。约定其类型。 类型说明语句和类型说明语句和IMPLICITIMPLICIT语句都是非执行语句。语句都是非执行语句。 类型说明只在本程序单位内有效。类型说明只在本程序单位内有效。 IMPLICITIMPLICIT语句语句要置于要置于PROGRAMPROGRAM语句语句的下一行,不能把它放在其他位置。的下一行,不能把它放在其他位置。34特制分析5.7 表达式5.7.1 算术表达式 1. 作用:表示普通数学中的代数式。 2. 组成:由算术型运算分量(如:算术型常量,变量,函数)、算术运算符以及圆括号按照通常的数学含义连接而成。 3.算术运算符:、 、 * 、 / 、 * 表示: 加、 减 、 乘、 除、 乘方 4.算术运算符的求值规则 1)优先级: 高 * * 、/ 单目+、- 低 双目+、 但括号可以改变优先级。 2)结合规则 左结合:当运算分量两侧的运算符优先级相同时,运算顺序先左后右。结合方向 右结合:当运算分量两侧的运算符优先级相同时,运算顺序先右后左。 35特制分析 FORTRAN90规定:*为右结合,+、-、*、/为左结合。例如:指出下列表达式的运算次序。 (a * b * 2 (a * b * 2 8 * c * d ) / ( - e + f * g * 3 ) 8 * c * d ) / ( - e + f * g * 3 ) (1) (3) (8) (6) (2) (4) (7) (5) (9) (10)36特制分析5.算术运算的类型转换 对于混合型(即指运算分量的类型和kind值不同)的算术表达式,运算时必须将两个不同类型的运算分量转换成同一种类型才能运算。类型转换时既要考虑运算分量的类型,同时还要考虑其kind值。 类型转换原则: (1)同类型的运算分量无需转换,直接运算,其运算结果仍保持原类型。 (2)不同类型的运算分量,运算前系统会自动将它们转换成同一类型后进行运算。转换的方法是:将类型级别低的运算分量向类型级别高的运算分量转换(运算分量的类型级别如下所示)。运算结果的类型与类型级别高的运算分量相同。 运算分量的类型(含kind值)级别如下: 高 COMPLEX(8) COMPLEX(4) REAL(8) REAL(4) INTEGER(8) INTEGER(4) INTEGER(2) 低 INTEGER(1) 37特制分析例如:INTEGER(1) i,j INTEGER(2) k REAL(4) a i * k + j * a 上述表达式的运算步骤及类型转换如下:(1)将i转换成2字节整型,即INTEGER(2),执行“ i * k ”的运算, 运算结果类型为2字节整型。(2)将j转换成4字节实型,即REAL(4) ,执行“ j * a ”的运算, 运算结果类型为4字节实型。(3)将第(1)步的运算结果转换成4字节实型,即REAL(4) , 执行最终的加法的运算,最终结果类型为4字节实型。38特制分析6.有关注意事项 1)两表达式相乘,*号不能少。 2)两表达式相除,分子和分母上的表达式要酌情加上括号。 例:(a+b)/(c-d) 3)分母不得为零,负数不能开平方。 4)表达式中只能配对使用圆括号,不能使用“ ”和“ ” 5)整型量/整型量整商(舍去小数部分自动取整) 例:1/2*g*t*2 =0 39特制分析5.7.2 关系表达式1. 作用:用以比较两个算术表达式之间的大小等同关系。2. 一般形式: 3. 关系运算符: 、 、 = 、 = 、 /= 或:.LT.、.LE.、.GT. 、.GE. 、.EQ.、 .NE. 4. 结果: .TRUE. 若关系表达式(即所表示的条件)成立,结果为.TRUE.逻辑值 .FALSE. 若关系表达式(即所表示的条件)不成立,结果为.FALSE. 上述逻辑值其kind值为4. 例:1)3+45 !3+4 5, 结果为.TRUE. 2)ab !a b , 若ab 结果为.TRUE.;否则为.FALSE. 3)abc ! a b c , 则无法比较! 逻辑值 代数值5.注意事项: 两个实型量慎用关系相等”=”和关系不等”/=“的比较. 例:判别实型量a,b是否相等,即a=b? 用:abs(a-b)34 !判别结果为.FALSE. (4+5*2).LE.10 !判别结果为.FALSE. (4.2,7.3).NE.(7.3,4.2) !判别结果为.TRUE.41特制分析5.7.3 逻辑表达式 1.作用: 用作较复杂的逻辑比较。如表示多个条件同时成立,或表示多个条件中只有一个条件成立即可,这种条件的表示方法,必须要用逻辑表达式。 例如: 1)a b .and. x y !该逻辑表达式表示:ab 同时 xy 2)x 0 .or. y 0 !该逻辑式表示这两个条件只要有一个成立即可42特制分析 0 x1例:1) y= 1 -1=x0,y0(I) 2) xy= -1 x0,y0(III) 0 x*y=0 (II, ) 上述判别条件均较复杂,故引进逻辑表达式比较。 2. 组成:由逻辑型量(如:逻辑型常量、变量、函数)、关系表达式 、逻辑运算符以及圆括号连接而成。 3. 逻辑运算符: .not.、.and.、 .or. 、.xor.、 .eqv. 、 .neqv. 表示:逻辑非、逻辑与、逻辑或、逻辑异或、逻辑相等、逻辑不等.y=10-11y=0y=0xx*y0,y0x0,y0x*yc.and.d.or.e PRINT *,x=,x END45特制分析5.7.4 字符表达式5.7.4.1 字符合并表达式1.作用:将字符型量(如:字符型常量、变量、函数)予以合并。2.组成:由字符型量(如:字符型常量、变量、函数)、字符运算符(即字符连接符/)或子字符串(简称子串)构成。3.子串概念 子串是由字符串中的一部分相邻字符组成,又称子字符串。 子串的一般形式: 字符型变量名(子串的起始位置:子串的终止位置) 其中:若缺省子串起始位置,系统则默认该值为1; 若缺省子串终止位置,系统则默认该值为字符串的长度值。 上述一般形式表示子串在字符串中的相对位置。 例: CHARACTER(19) string CHARACTER(10) substring string=This is a computer. substring= string(1:4) !子串为“This” substring= string(:7) !子串为“This is” substring= string(11:) !子串为“computer.“46特制分析4.字符串连接操作(即字符表达式) 字符串连接是由字符连接符/将若干个字符串连接起来的操作。 一般形式:字符型操作数1/字符型操作数2/字符型操作数n 例: CHARACTER(19) str1,str2*5,str3*3,str4*11 str2= This str3= is str4= a computer. str1=str2/ str3/ str4 ! str1的连接结果为 This is a computer.47特制分析5.7.4.2 字符关系表达式1. 作用:用以比较两个字符表达式之间的大小等同关系。2. 一般形式: 3. 关系运算符: 、 、 = 、 = 、 /= 或:.LT.、.LE.、.GT. 、.GE. 、.EQ.、 .NE. 4. 结果: .TRUE. 若关系表达式(即所表示的条件)成立,结果为.TRUE.逻辑值 .FALSE. 若关系表达式(即所表示的条件)不成立,结果为.FALSE.5.比较方法:依次比较两个字符串(即字符表达式)中相同位置字符的ASCII码值。 例如: 1)banana=apple !由于”b“的ASCII为98,而“a”的ASCII为97,故比较结 果为.FALSE. 2)This is a pen.=This is a pencil. !由于字符“.”的ASCII为46, 而“c”的ASCII为99,故比较结果为.TRUE.48特制分析5.8 赋值语句 作用:给变量赋一个确定的值。5.8.1 赋值语句的类型 算术赋值语句 类型 字符赋值语句 逻辑赋值语句5.8.2 赋值语句的一般形式 其中:1)“”称为赋值号,意义为“左传送 ”。 2)变量统称为左部变量。 语意:将 右端表达式的值赋给同类型(算术型、字符型、逻辑型)的左部变量。 即:算术型变量算术表达式 !算术赋值语句 字符型变量字符表达式 !字符赋值语句 逻辑型变量逻辑表达式 !逻辑赋值语句49特制分析5.8.3 赋值语句举例1.算术赋值语句 赋值时类型转换: 当赋值号两端的类型及其kind值一致,无需类型转换,直接赋值;若赋值号两端的类型及其kind值不一致,系统自动把右端表达式之值的类型转换成左部变量的类型。转换规则如下: a)类型相同而kind值不同 右端表达式值的kind值j左部变量的kind值i,仅转换i个低位字节值 例:INTEGER(1) :b=126 INTEGER(2) :a,c=56 INTEGER(4) :d=32771 a=b !a=126,ji,类型转换后,赋值结果改变,即a值出错! 50特制分析b)类型不同实型左部变量=整型右端表达式值,则将右端表达式值添加小数点后再赋值。整型左部变量=实型右端表达式值,仅取右端表达式值的整数部分数值赋值。例: INTEGER :a=23,c REAL : b=98.78,d d=a !d=23.0 ,将整型右端表达式值添加小数点后再赋值给d。 c=b !c=98 ,仅取实型右端表达式值的整数部分数值赋值给c。 51特制分析2.字符赋值语句 当字符型左部变量与字符型右端表达式的长度不相等时,需进行长度转换。 例:1)CHARACTER*7 str1,str2 str1=student ! str1=student str2=He is a/student ! str2=He is a 2)CHARACTER*5 str1,str2*3 str1=is ! str1=is str2=china ! str2=chi3.逻辑赋值语句 例: LOGICAL L,L1,L2,L3,L4 REAL : A=3,B=5,C=2 L=.TRUE. !L的结果是一个逻辑常量.TRUE. L1=A.GT.B !L1的结果是关系表达式的结果,即逻辑常量.FALSE. L2=B.GT.C !L2的结果是关系表达式的结果,即逻辑常量.TRUE. L3=L1.AND.L2 !L3的结果是逻辑表达式的结果,即逻辑常量.FALSE. L4=L3 !L4的结果是逻辑变量的值.FALSE.52特制分析 1.作用:给变量或数组赋初值。 2.一般形式:DATA 变量名表1/初值表1/,变量名表2/初值表2, 其中:变量名表中可以是变量名、数组名、数组元素,变量名表中的各变量间用逗号隔开,初值表中只允许出现常量,不允许出现表达式。 例如:DATA a,b,i/3.0,-3.1,8/ !给a,b分别赋初值3.0,-3.1;i赋初值8 3.说明:(1)初值表中如果有几个连续相同的常量可以简写为:n*常量 例如:DATA a,b,c,i,k/3*1.0,2*3/!给a,b,c均赋初值1.0;i,k均赋初值3(2)变量名表中的变量与初值表中的常量个数应当相同,类型应当一致。 例如:DATA a,b,c,d/3.0,2*2.0/,i/3.0/ (3)若一个程序中有多个DATA语句给同一个变量赋初值,则以最后一个DATA语句所赋的初值为准。例如:DATA a,b,c,d/1.0,3.0,2*0.0/DATA x,y,c/4.0,2.0,7.5/其中变量c分别在两个DATA语句中出现,并且赋的值不同,结果c的值应为7.55.9 DATA语句53特制分析5.10 停与暂停语句 用以表示程序的停止运行(END或STOP)或暂时中断程序的运行(PAUSE)。1.END语句 作用:1)表示一个程序段的结束,提示编译程序该程序段编译结束。 2)主程序中的END语句,表示程序运行到此结束可以返回操作系统。 一般形式: END 说明:END语句一般出现在一个程序段的最后。2.STOP语句 作用:表示随时执行STOP语句停止程序运行返回操作系统。 一般形式: STOP 字符串 其中:字符串用以表示STOP语句停止运行时的标记。 说明:STOP语句可以出现在一个程序段的任何可执行语句之处。3.PAUSE语句 作用:表示暂停程序的执行,一般用于调试程序时给程序设置运行断点, 当从键盘上键入任意键后,可使程序从刚暂停处(即中断点)继 续运行。 一般形式: PAUSE 字符串 说明:PAUSE语句可以出现在一个程序段的任何可执行语句之处。54特制分析5.11 标准函数 对于一些常用的标准函数,编译系统已定义好且存入函数库, 只要在程序中采用“函数名(参数)”的方式直接引用即可。 1.函数分类: 标准函数 函数 语句函数 用户自定义函数 外部函数 2.标准函数的引用方式: () 其中:1):一个或用逗号隔开的一系列参数名。 2)函数名、参数表中参数的类型及个数详见附录D常用库函数. 3.说明 1)参数的个数必须与函数表中参数的个数一致。 2)参数类型和函数值类型(即函数类型),详见附录。 3)三角函数的参数均使用弧度:弧度角度*3.14159/180 4)参数可以是常量、变量、表达式,且允许函数的嵌套。 4.常用函数 FORTRAN函数表详见附录D常用库函数。55特制分析(1)常用数值处理函数函数函数功能功能ABS(x)求x的绝对值|x|EXP(x)求指数函数exSIN(x)求正弦函数sin(x),其中x的单位为弧度COS(x)求余弦函数cos(x),其中x的单位为弧度ASIN(x)求反正弦函数arcsin(x)TAN(x)求正切函数tan(x),其中x的单位为弧度ATAN(x)求反正切函数arctan(x)LOG(x)求自然对数ln(x)或logexLOG10(x)求常用对数log10(x)INT(x)取x的整数部分,不四舍五入MOD(x1,x2)求x1除以x2的余数,即求x1-int(x1/x2)*x2SIGN(x1,x2)若x20,则|x1|;若x20,则-|x1|REAL(x)把整型量x转换为实型MAX(x1,x2,)求x1,x2,中的最大值56特制分析例如: INT(5.85)=5 MAX(-1,3,16,0)=16 LOG(3.0)=1.098612 SIN(1.0)=0.8414709 SQRT(4.0)=2.0 MOD(9,6)=3 SIGN(3.0,-2.0)=-3.0 SIGN(-3.0,2.0)=3.0 REAL(8)=8.057特制分析(2)常用字符处理函数 函数函数功能功能CHAR(num)参数num是字符的ASCII 代码值。调用该函数,求解与该ASCII 代码值所对应的字符。ICHAR(char)参数char是字符,调用该函数,求解与参数char所对应的ASCII 代码值。LEN(string)参数string是字符串,调用该函数,求解string字符串的声明长度值。LEN_TRIM(string)参数string是字符串,调用该函数,求解string字符串去除尾端空格后的实际长度值。INDEX(string,key)参数string是字符串,key是其中的子串。调用该函数,求解子串key在string字符串中第一次出现的位置值。TRIM(string)参数string是字符串,调用该函数,求解string去除尾端空格后的字符串58特制分析例如:PROGRAM eex5_3CHARACTER*1 c1,c2,c3*19,c4*10,c5*8,c6*8INTEGER: num=99, asc,len1,len2,len3c1=ac3=This is a computer.c4=computer c5=computerc2=CHAR(num) !调用函数CHAR()求解与参数num的ASCII代码值对应的字符asc=ICHAR(c1) !调用函数ICHAR()求解与参数a对应的ASCII代码值len1=LEN(c3) !调用函数LEN()求解字符变量c3的长度len2=LEN_TRIM(c4)!调用函数LEN_TRIM ()求解去掉字符变量c4末尾空格的实际长度len3=INDEX(c3,c5)!调用函数INDEX()求解子串c5在字符变量c3中的位置值c6=TRIM(c4) !调用函数TRIM()求解去掉字符变量c4末尾空格的字符串PRINT *,与参数num的ASCII代码值对应的字符是:,c2PRINT *,与参数字符a对应的ASCII代码值是:,asc PRINT *,字符变量c3的长度是:,len1PRINT *,去掉字符变量c4末尾空格的实际长度是:,len2PRINT *,子串c5在字符变量c3中的位置是:,len3PRINT *,去掉字符变量c4末尾空格的字符串是:,c6 END59特制分析程序的运行结果是:程序的运行结果是:与参数与参数numnum的的ASCIIASCII代码值对应的字符是:代码值对应的字符是: c c与参数字符与参数字符a a对应的对应的ASCIIASCII代码值是:代码值是: 9797字符变量字符变量c3c3的长度是:的长度是: 1919去掉字符变量去掉字符变量c4c4末尾空格的实际长度是:末尾空格的实际长度是: 8 8子串子串c5c5在字符变量在字符变量c3c3中的位置是:中的位置是: 1111去掉字符变量去掉字符变量c4c4末尾空格的字符串是:末尾空格的字符串是:computercomputer60特制分析
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号