Fortran-95-程序设计-第二章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中山大学环境科学与工程学院陆希四、顺序结构程序设计三种基本结构顺序结构:如图所示的框内,A和B两个框是顺序执行的。顺序结构是最简单的一种基本结构:三种基本机构选择结构:如图所示的框内,包含一个判断:三种基本机构循环结构,重复结构,即反复执行某一部分的操作主要内容:•数据概念,常量,变量及其说明•FORTRAN内部函数•运算符和表达式•赋值语句•简单的输入输出语句•程序执行控制语句数据的概念从表现形式上:常量、变量、表达式、函数等从数据类型上:整型、实型、字符型、复型和逻辑型等基本类型,以及数组、结构体等复杂的数据类型每一种数据类型决定该类型数据在计算机中的存储方式和作用于其上的操作。FORTRAN常量常量:其值始终不变的一些量。六种:整型,实型,双精度型,复型,逻辑型,字符型直接常量:数据本身是一个常量符号常量:用一个标识符来表示一个常量FORTRAN常量不同类型的常量有不同的表示方法:整型常量:正数、负数和0(也称整数)常数中不允许加入逗号,如:12000,不能写作:12,000一般用2个字节(16位)或4个字节(32位)来存储,其中一位存储数值的符号,其余为数本身,则:2个字节存储,整数范围:-32768~327674个字节存储,整数范围:-231~231-1FORTRAN常量实型常量:也称实数(也称实数)有两种表现形式:小数和指数小数如:5.3;5.;.3;-8.;.6378必须包含一个小数点且只能有一个小数点,小数点前或后可以不出现数字,但是不能前后都不出现数字指数如:1.32E5表示1.32×105(E:Exponent)1.285E-12表示1.285×10-121E2和1.0E2都表示100.0(E:Exponent,表示以10为底的指数)包括数字部分和指数部分,数字部分表示该常数的有效数字,指数部分使得数字部分小数点右移或者左移FORTRAN常量数字部分可以为带或不带小数点的形式,如:1E2和1.0E2指数部分不能单独存在,如E12,是不合法的计算机中一般以4个字节(32位)来存储一个实数。无论以小数形式还是指数形式表示在内存中均以指数形式存放,由三部分组成:数符,1位指数包括符号,7位数字部分,24位,前面有一个隐含小数点,点后第一个数字非零(运算时注意有效位数的限制)符号常量:用一个标识符来表示一个常量通常用PARAMETER语句来定义例如:FORTRAN变量变量的概念:程序运行过程中其值可以改变的量(实际上代表的是一个内存单元,程序通过变量名来访问存储单元,如:N=N+1)变量名:用标识符来命名。同一个程序单元中不能用同一个标识符代表不同的变量标识符由字母、数字和下划线组成,开头必须是字母。注意:1FORTRAN不区分字母的大小写;2标识符的长度因FORTRAN版本不同而有差异;77为1-6个字符,90以上为1-31个3标识符尽量做到“见名知义”;如AREA,PI,STN4避免用一些特定意义的语句名和函数名FORTRAN没有规定的“保留字”,但一般为避免混淆,实际中应尽量避免用一些特定意义的语句名和函数名等作变量名,如PRINT,WRITE,SIN例子:有哪些错误??programexampleintegeraintegerexampleintegerwriteintegera!错误example是program的名字!不好的用法,write是程序命令之一!错误,a在前面已经使用过了变量的说明(声明,定义)对变量类型的说明。在程序代码中,程序员向编译器要求预留一些存放数据的内存空间。3种方式:1)类型说明语句2)隐含说明语句3)隐含约定1)类型说明语句格式:类型说明符变量名1,变量名2…类型说明符::变量名1,变量名2…例:Fortran中有六个类型说明语句:(1)INTEGER语句(整型说明语句)(2)REAL语句(实型,或浮点数说明语句)(3)DOUBLEPRECISION语句(双精度说明语句)(4)COMPLEX语句(复型说明语句)(5)LOGICAL语句(逻辑型说明语句)(6)CHARACTER语句(字符型说明语句)♦声明1:整数类型(INTEGER)integeraa是自取的名字,在程序代码中这个名字来表示这一块存放整数的空间,它习惯上称为“变量”声明要使用整数型态数据声明长整型,即用4个bytes来存放整数:声明短整型,即用2个bytes来存放整数:默认为长整型integera,b,c一行可声明多个变量integer::a申明一个叫做a的A=3/2这个命令会使A等于1,虽然3/2=1.5,但因为A只能保存“整数”,会把小数点的部分无条件舍去。A=1/2A等于0♦声明2:浮点数(REAL)浮点数与整数的最大区别在于可以保存小数,不做说明(默认)时,通常用占4个bytes的单精度浮点数。关于有效位数的考虑……例子:单精度数值部分是6位数字12345=1.2345*10412345678会被表示成1.23456*107最后两个数字7,8会丢失双精度就有15个有效数字♦声明3:复数(COMPLEX)唯一能直接提供复数类型的语言。虚部和实部,由两个浮点数来表示,因此也可分为双精度和单精度♦声明4:字符及字符串(CHARACTER)即用来保存一个或一串字符时所使用的类型programex0412characteracharacter(len=10)bA=‘H’b=“ello”wrtie(*,*)a,bEnd执行结果Hello♦声明5:逻辑变量(LOGICAL)逻辑变量主要在逻辑判断时使用。两种数值:真和假。所以存储时用1bit空间足够,通常由编译器自行决定空间大小。也可以设置,但意义不大。2)隐含说明语句IMPLICITIMPLICIT说明语句将某个或某些字母开头的变量指定为所需类型。可以用一个IMPLICIT语句同时指定几种类型例:将A和C及T到V开头的变量规定为INTEGER类型?3)隐含约定:(I-N规则)90以上不提倡使用,一般在程序变量说明前加:IMPLICITNONE取消I-N规则注意:!优先级:1-2-3!IMIPLICIT为非执行语句,应放在所有可执行语句之前FORTRAN内部函数FORTRAN内部函数(内在函数),也称库函数内部函数指系统本身带有的能完成一定功能的程序单位。可供用户直接使用,必须遵守其使用规则。常用的算术函数:函数名含义应用例子相当数学上的运算ABS求绝对值ABS(X)EXP指数运算EXP(X)SIN正弦值SIN(X)COS余弦值COS(X)ASIN反正弦ASIN(X)ACOS反余弦ACOS(X)TAN正切TAN(X)ATAN反正切ATAN(X)LOG自然对数LOG(X)LOG10常用对数LOG10(X))exp(xxsinxcosxarcsinxarccosxtanxarctanxlnx10logx常用的算术函数:函数名含义应用例子相当数学上的运算INT取整INT(X)MOD求余MOD(X1,X2)SIGN求符号SIGN(Xl,X2)当当REAL转换为实型REAL(I)MAX求最大值MAX(I1,I2,I3)MIN求最小值MIN(Xl,X2,X3)SQRT求平方根SQRT(X)xint221intxxxx1x02x1x02x321,,maxiii321,,minxxxx内在函数的执行方法:Fortran将这些内在函数分别编成单个子程序,组成函数库,存在于外部介质(如磁盘)上。在完成源程序的编译之后,用LINK命令实现连接,即将已翻译成二进制指令的目标程序与函数库连接。例如程序中出现一个SIN函数,在连接时就将一组求正弦值二进制指令直接插入到程序中出现SIN的地方。由于是插入到程序内部的,所以称为“内在函数”。一个内在函数可要求一个或多个自变量例如,SQRT函数只能有一个自变量,而MOD函数要求两个自变量,MAX和MIN函数要求两个以上自变量。注意当自变量个数规定为2个时,自变量的顺序不应任意颠倒,如MOD(8,3)表示8被3除的余数,其值为2,而MOD(3,8)则表示3被8除的余数,其值为3。当自变量个数为>2时,自变量的顺序无关函数的自变量是有类型的,函数值也是有类型的例如:MOD(8,3)中自变量8和3是整型,函数MOD(8,3)的值“2”也是整型,如果写成MOD(8.0,3.0),自变量是实型的,函数值也是实型的,其值为2.0运算符与表达式•算术运算符和运算优先级•算术表达式的含义和表示方法•表达式运算中的类型•运算的误差算术运算符和运算优先级FORTRAN提供五种算术运算符号:+表示“加”(或正号)-表示“减”(或负号)*表示“乘”/表示“除”**表示“乘方”请注意:乘号用*表示,不能写成“×”,以免与字母“X”混淆,也不能用“.”代替乘号。除号不能用“÷”号。两个运算符不能紧邻,如A*-B是不合法的,应写成A*(-B)。不同的运算符按以下优先级次序:1、加,减<乘,除<乘方,括号()中优先。2、同一优先级的两个运算,乘方按“先右后左”,其它按“先左后右”原则。例:x+y*z→x+(y*z)x*y**2→x*(y**2)x/y/z→(x/y)/zx**y**z→x**(y**z)3+5-6.0*8.0/4**2→3+5-48.0/16.0=5例:4b分之a→a/(4*b)或a/4/b,而a/4*b和a/4b错误如无自信时可用括号(),对运算时间几乎无影响。算术表达式的含义和表示方法将常量、变量、函数等运算元素用运算符和括号连接起来的一个有值的式子称为表达式。FORTRAN中四种表达式,即:算术表达式,关系表达式,逻辑表达式,字符表达式算术表达式中各运算元素都是算术量,使用的运算符只能是算术运算符,表达式的值也是一个算术量(即数值)。Fortran算术表达式的求值运算的优先次序为:①括号②函数③**④*/⑤+-,即括号内的运算级别最高,加减最低。例如,SQRT(3.*2)**2→注意:(1)写除法运算式子时应加上必要的括号。(2)乘号不能省略,如A*SIN(X)(3)Fortran中无大、中、小括号之分,一律用小括号。(4)乘方按“先右后左”原则处理。(5)对单项运算符(如-A中的符号)相当于在它前面有一个运算量“0”,如:-A**2相当于0-A**2而非(-A)**2(6)两整数相除,结果为整数,为切掉小数部分而不会进行四舍五入数学表达式:styneaxaxxeyxnaln2arctan.21)(1)1cos(122FORTRAN表达式:练习:将下列数学表达式写成相应的FORTRAN表达式(1)aacbb242(2)!3!2132xxx(3)1arctancos2333cba(4)cbxaxe2(5))cos(22yxxy表达式运算中的类型Fortran中的常量和变量分类型,允许在不同类型的算术量(包括整、实、双精度、复型)之间进行算术运算,不允许在算术量和非算术量(如逻辑型、字符型)之间进行算术运算。F77作如下规定:同类型的算术量之间运算的结果仍保持原类型。注意:两个整数相除的商也是整数。例如,5/2的值是2而不等于2.5,4**(-1)等于0不同类型两个算术量运算,低向高转换后进行运算。类型的级别如下:整型(低)→实型(高)。类型的转换是从左向右进行的,在遇到不同类型的算术量时才进行转换。例如:1/2*1.0等于0,而1./2*1对于0.5。已知A=2,B=3,C=5(以上为REAL);且I=2,J=3(以上为INTEGER),求下列表达式的值:(1)A*B+C(2)A*(B+C)(3)B/C*A(4)B/(C*A)。(5)A/I/J(6)I/J/A(7)A*B**I/A**J*2(8)C+(B/A)**3/B*2(9)A**B**I(10)B**A**C(11)J/(I/J)运算的误差实型量的运算会出现一些误差写表达式时应尽量使每一次运算结果都在有效位数范围之内,避免使两个相差很大的数值直接相加或相减。判断两个实数是否相等,……赋值

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功