华科fortran第3章2 Fortran语言程序设计初步.ppt
《华科fortran第3章2 Fortran语言程序设计初步.ppt》由会员分享,可在线阅读,更多相关《华科fortran第3章2 Fortran语言程序设计初步.ppt(138页珍藏版)》请在三一办公上搜索。
1、3.4 FORTRAN 字符集3.5 常量3.6 变量 3.7 内部函数3.8 算术表达式3.9 赋值语句3.10简单的输出语句(表控输出)3.11简单的输入语句(表控输入)3.12 PARAMETER语句(参数说明)3.13 PROGRAM语句,END语句,STOP语句,PAUSE语句,不是任何一种外文字母或数字符号都能被某一计算机语言接受。每一种计算机的高级语言分别规定了它允许使用的字符。Fortran允许使用的字符如下:英文字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 阿拉伯数字:0 1 2 3 4 5 6 7 8 9 特殊
2、符号:空格=+-*/(),.:!%$?_(F90中新增的字符),3.4 FORTRAN 字符集,表3-1基本的FORTRAN 90/95字符集,基本字符分为两大类:文字字符和特殊字符。除了货币符号可以本地化之外,其他任何字符都必须依照表里的形式。,注意:一.文字字符的用处 主要是命名的作用,可以用来命名语言中的一切对象,这三种符号可以混合使用;其中数字还具有它本来的含义,就是表示数目。二.特殊字符的用处特殊字符主要具有功能的意义,如编辑功能,运算功能,语法功能等。FORTRAN 90/95标准原则上接受小写字母。因此除了以下位置,大小写是等价的。三.大小写必须区分的位置 作为字符常量的字符串里
3、面;输入输出的纪录里面;作为编辑描述符的引号或撇号里面。,四.CVF编译平台接受小写字母。在OPEN或者INQUIRE语句里面的FILE=或NAME=后面是否区分大小写,也是由编译平台指定的。五.如果是需要调用其他语言写的子程序,而恰好该种语言(例如C语言)是区分大小写的,这时就需要特别小心。,【例3_1】如果用C写了两个子程序EIGEN和eigen,然后有如下的FROTRAN片断:EXTERNAL EIGEN.CALL EIGEN.END,这时它是该引用EIGEN还是eigen呢?如果所使用的FROTRAN系统正好是怪异的那种,没问题。如果是常见的如CVF,这时它就无法区分EIGEN和eig
4、en,这样就必须给它们更换名称了。,六.数字的涵义:除了以下情形,数字总是表示十进位数字 属于二进制,八进制,十六进制的字面常量;带有B,O,Z编辑描述符的输入输出纪录。,【例3_2】以下语句当中的数字不是属于十进位数字:DATA I,J,K/O1001,23.54,Z5CA2/,其中第一个为八进制数,第二个为十进制数,第三个为十六进制数。,七.下划线的涵义:下划线的主要作用就是置于单词之间代替空格,使得我们在命名时使用清楚的英语词汇。下划线不能置于任意名称的前面,但是可以置于名称的最后。下划线也用于在字面常量中区隔常量的值和种别参数。无论给什么对象起名,都尽量使用完整的英语单词,同时使用下划
5、线以区隔不同的单词。所谓好记性不如烂笔头,只有这样才能切实保证你在任何时候,在程序代码的任意位置都知道任意变量等的含义。,与平台有关的FORTRAN辅助字符集基本字符集是在一切FROTRAN的编译平台都可以使用的,被FORTRAN 95标准规定为必须使用的默认字符集。另外还有些辅助的字符则是不同的平台有不同的用法约定。辅助字符分两类:可打印字符和不可打印字符。可打印字符;各种本地化语言的字符,象汉字,希腊字母等,都可以应用在字符串,注释,和输入输出纪录当中。,不可打印字符。主要就是控制字符,例如制表符Tab键。制表符(Tab键)对于一个FORTRAN77标准的编译系统来说,在固定源程序形式里的
6、Tab被看成是至少6个空格,而在自由源程序形式里的Tab被看成1个空格。这样如果Tab被放在文本当中用于输出格式控制,那么这种默认的转换方式,有时就会导致输出格式的混乱。有关FORTRAN 95的辅助字符集的使用规则,请参考具体的编译系统的说明。,所谓FORTRAN的词汇就是一个语句的最小的意义单位,它由一个或多个FORTRAN字符集里的字符组成。包括两类共6种,分类例举如下:,3.5 词汇,由文字字符组成的词汇,包括4种:语句关键词 名称 由单个词汇组成的字面常量 标识符,由特殊字符组成 算符:+,.OR.定界符:逗号,=,=,:,:,;,%。,1.语句关键词,标志语句本身【例3-3】下面的
7、DO语句中的关键词DO本身标志了该语句 DO I=1,500,标志选项。【例3-4】下面的INTENT语句当中的IN,OUT,或INOUT。INTENT(IN),A。B INTENT(INOUT),X,Y,Z,用在语句当中,起分界的作用。【例3-5】如下面DO语句当中的WHILE DO WHILE(.NOT.VECTOR),并非所有的语句都必须包含关键词,在FORTRAN里面,赋值语句和函数都不需要关键词。,在一个程序当中,任何对象都需要有一个名称,给它们命名所得到的词汇,可以说就是一般语言里的名词,这样的对象包括:变量,命名常量,程序单元,过程,公用块,构造,派生类型,哑元等。,2.名称,名
8、称的拼写规则为:名称必须由字母开头,可以由文字字符混合组成,而下划线不能作为名称的第一个字符。一个名称至多允许含有31个字符。,一个常量就是对一个值的合乎语法的字符标记。常量分为字面常量和命名常量两种:一个值如果没有在程序里面经过命名,则称为字面常量,这种常量不能取派生数据类型。【例4-6】66953 Z5120A 2.3417.TRUE.(33.2,5.0),3.常量,一个值如果在程序里面经过命名,则称为命名常量,这种常量能取派生数据类型。,【例3-7】在如下声明语句当中的常量UNSTABLE_POINT为命名常量:PARAMETER(UNSTABLE_POINT=5.332)对于常量的语义
9、,将在说明数据时进一步讨论。,在一个程序单元内部,对任何一条语句,都可以在该语句的前面加上语句标签,以便在该程序单元内部的任何其他位置引用该语句。需要引用其他语句的语句包括CALL语句,DO结构,分支语句,输入输出语句等。,4.语句标签,语句标签的书写规则为:语句标签由1到5个十进制数字组成,其中必须至少有一个数字不能是0,例如000不能作为标识符;标识符以0开头是没有任何意义的,例如0034与34没有区别。标识符不能放置于空语句之前。,算符用在表达式当中,通过运算而获得某种类型的值。算符分为固有算符和自定义算符两类:固有算符在FORTRAN 95语法当中,R310规定了固有算符的构成法则。【
10、例4-9】/表示字符串的连接+表示对数值的加法.NOT.表示逻辑否.OR.表示逻辑或,5.算符,6.定界符全部的定界符有如下12种形式:/()(/),=:;%其中(和),(/和/)都必须成对出现顾名思义,这些定界符的功能就是在一个连续的源码文本当中,用来把不同性质的源码成分区分开。它们的具体含义将在具体的语句当中说明。,数据表示的实现具有一个重要的参数,即存储空间,所以当问题要求的数据,不能满足于默认的存储空间的时候,这时,就需要进一步给出数据的种别参数,这是更加详细的数据描述。如果在真实世界问题当中出现的的数据对象,不符合已有的固有数据类型以及数组的定义,这时就需要根据用户的要求构造一个依赖
11、于问题的特定的数据结构,这就是数据描述时会遇到的三种情况。对于这三种情况,FORTRAN的解决方式如下:,数据的性质(数据的类型以及其他属性),3.6 常量与变量,第一种情况:确定(固有)数据的类型以及相应的可能具有的属性。FORTRAN所能辨识的数据类型首先分为两大类:固有数据类型 派生数据类型,所谓固有类型,是FORTRAN语言所定义的最基本的数据类型,每一种固有类型是和该种数据类型相应的各种运算一起隐式定义的,也就是说一旦声明引入某种固有数据类型,则系统总是默认为对它进行相应的运算是合法的,并且总是可访问的。,固有类型包括五种:整型(INTEGER)、实型(REAL)、复型(COMPLE
12、X)、逻辑型(LOGICAL)和字符型(CHARACTER)。,所谓派生类型是由用户定义的,非隐式定义的类型,只要用一个类型定义来声明其成员是何种固有类型,或者是何种其它已经定义过的派生类型,就能够被FORTRAN认可为一种数据类型。由于派生数据类型正是由固有数据类型充当成员而构成的,因此在结构关系上,可以把固有数据类型看成原子,而把派生数据类型看成分子。派生类型数据最重要的用途就是扩充了数组这种重要的数据结构。,每一种固有数据类型的存储模式:在FORTRAN77中:整型,实型,逻辑型数据都是使用了一个数值存储单元,复型和双精度数据则使用了两个数值存储单元,字符型数据使用一个字符存储单元。在F
13、ORTRAN90与95中:默认在FORTRAN77中的规定,在FORTRAN90之后的标准里,开始允许在一个程序单元内,由用户定义特定的不依赖于固有数据存储模式的数据类型,这就是派生数据类型。,第二种情况:指定固有数据类型的种别参数。用来指定程序当中需要使用的每一种固有数据类型所要求占据的内存空间大小的属性由种别参数表示。给这个变量(参数)指定一个数值,就可以说明数据所需要的存储空间的大小,也就是程序允许的数值数据的位数和字符串的字符数目。KIND(种类种别参数)分别说明整数类型的十进制指数范围,实数类型和复数类型的十进制精度和指数范围,字符类型和逻辑类型的表示方法。LEN(长度种别参数)对字
14、符类型规定了字符的个数。,【例】REAL(KIND2):ABC,X,LONG CHARACTER(LEN40,KINDGREECE):NAME,如果没有声明数据的种别,那么程序就会采用默认的参数,FORTRAN的早期版本没有引入种别参数,直接采用了两种不同的数据类型:REAL和DOUBLE PRECISIONFORTRAN90以来的版本里,引入种别参数,对种别参数的不同取值,就足够表达不同的精度,,对于在指定种别参数的数值时,一般是以字或字节为单位,这样对于字长不同的机器而言,相互之间就会出现程序移植的困难,下面分情况予以说明:,实型-由于DOUBLE PRECISION是属于老式标准的遗留物
15、,因此使用DOUBLE PRECISION作为数据声明的程序就不具备良好的可移植性,因为所谓双精度是针对具体的机器的字长而言的,对于32位的机器,双精度就是64位,而对于64位机器,双精度就意味着128位,这样在不同字长的机器环境里,双精度就具有不同的位数,使得程序无法在不同字长的平台之间进行直接的移植。最好统一使用REAL的种别参数来表达算法所要求的实数精度。,整型-在程序应用当中会出现几乎任何大小的整型数据,因此无法在语言标准里面统一的规定整型数据的存储空间大小,这就同样需要依靠种别参数来指定应该给具体问题当中的整型数据确定多大的存储空间。具体地指定方式属于编译器设计者的选择,需要参考相应
16、编译器的语言说明。,复型-由于所谓复型本质上就是由两个实数表达的,因此按道理复型同样应该能够具有表达多种精度的能力,而实际上早期的版本在这方面是有欠缺的,不过随着FORTRAN90引入种别参数,就可以在COMPLEX的声明语句里通过运用种别参数来实现多种精度的表达,对于任何FORTRAN的实现,至少能表达两种精度,而一般来说是多于两种的。字符型-对于字符,一般的机器都是用单字节8bits来表示一个字符,这样就可以总共表示28=256个不同的字符,这对于任何以字母写出来的语言都是足够的了,不过对于汉语,日语这样一些语言就不够用了,一般得需要双字节,即16bits,这样就可以表达216个字符。因此
17、字符型数据同样需要附加种别参数,以便除了使用默认的基本字符之外,还可以使用辅助字符集里的字符,从而实现程序的本地化。不过某个具体的编译器是否支持双字节字符,必须参考相应的手册。,逻辑型-由于一切逻辑型数据都只有两个值,因此如何确定逻辑型数据的存储空间应该是非常好办的,不过不幸的是,FORTRAN的早期版本规定逻辑型数据使用和实型数据一样大小的机器存储单位,这样当机器的字长很大时,就会非常的浪费机器的存储空间。因此到了FORTRAN90和FORTRAN 95,除了作为默认的情形,和旧的语言标准保持兼容之外,还可以通过指定种别参数,使得逻辑型数据的存储空间大小只有一个字,甚至一个bit。当然具体的
18、使用方法需要参考相应编译器的说明。,第三种情况:派生数据类型。在计算机语言里,把对象的每一个需要描述的性质用一个适当的基本数据类型来表示,这样用一组基本数据类型就可以描述该对象。而这一组数据可以看成是一个新的数据类型,表示了一个变量。这样构造出来的数据类型称为派生数据类型,和固有数据类型一样,在声明派生数据类型时,需要给出名称,描述它的每一个元素的固有数据类型以及相应属性和种别参数(如果非默认的话),当然也需要适当地定义其运算。,派生数据类型是由一组数组成,就会出现两种情况:这组数据都是属于一个数据类型这样构成的派生数据类型就是数组,显然对于数组的元素的描述就可以统一进行。具体的用法会在后面专
19、门说明。这组数据的各个元素属于不同的数据类型这样构成的派生数据类型称为结构,这时就需要对每个数据元素进行分别的说明,即每一个元素的数据类型,可能有的属性,种别参数等等。,【例5-2】下面是一个典型的派生数据类型。TYPE SAMPLE REAL CURRENT COMPLEX(KIND=QUAD)PHASE CHARACTER(LEN=50)SOURCE END TYPE SAMPLE TYPE(SAMPLE)SI401,SI402,SI403,SI404在上面的例子里,首先定义了一个名称为SAMPLE的数据类型,每一个SAMPLE类型的数据由三个分量组成,它们的名称分别为CURRENT,PH
20、ASE,SOURCE,分别属于实型,复型和字符型,其中复型和字符型还分别说明了种别参数和字符长度属性,然后给出了程序当中需要使用的四个属于该种数据类型的变量:SI401,SI402,SI403,SI404。,数据不同种类的存储模式对于计算机来说,数据分类的第一个反应就是针对不同类型的数据约定不同的存储模式。由于存储模式的规定涉及到编译环境的设置,因此存储模式的约定是与系统环境相关的,鉴于Compaq Visual Fortran的广泛应用,本节特别针对Compaq Visual Fortran系统而言的说明了数据的各种存储模式。下表5-1列出了Compaq Visual Fortran所有的固
21、有数据类型的存储空间要求,和相应的能够在这个空间里表达的数据规模。,对于字符型数据来说,它的存储空间完全和字符串长度成正比,因此只要直接规定字符串的字符个数,就可以一致地得到其存储空间分配标准。至于复型和派生类型,则完全以其他数据类型作为成员,自身没有什么特别的规定,因此也就没有独特的针对这两种数据类型的种别参数。显然,FORTRAN通过运用种别参数来明确地规定数据的表示,使得Fortran的标准化程度得到了进一步提高,从而提高了程序的可移植性。,数据的基本(固有)类型,对于计算机来说,数据的意义无非就是要知道在存储空间为一个特定的数据划出多大的空间来装载它。FORTRAN早期的做法统一地给一
22、类数据指定固定的存储模式。FORTRAN90引进的种别参数,这样就扩充了固有数据类型的存储模式。,整型(INTEGER)实型(REAL)双精度型(DOUBLE PRECISION)复型(COMPLEX)逻辑型(LOGICAL)字符型(CHARACTER),隐含说明IMPLICIT,固有数据类型:Fortran中有七种类型说明语句:,类型说明,1隐式类型描述法 当初FORTRAN使用隐式类型声明方法,是与语言的简朴形态相适应的除非首先声明了IMPLICIT语句。隐式类型声明方法的约定,就是让名称的第一个字母来标记它的类型,隐含说明(I-N规则)I-N规则:若不加说明,以字母I,J,K,L,M,N
23、六个字母开头的所有变量名,其变量类型为整型,以其他字母开头的为实型变量。例如:I,J,IMAX,NUMBER,LINE,JOB Kl为整型变量A,Bl,COUNT,AMOUNT,TOTAL 为实型变量 FORTRAN沿用了数学里的很多习惯,这里使用I,J,K,L,M,N来表述整数,就是一个明显的数学习惯。,利用IMPLICIT语句来自定义字母分配模式,一般的 IMPLICIT语句的句法形式有2种,分别行使不同的功能:IMPLICIT type-specification(letter-specification-list)IMPLICIT NONE(f90)其中的字母分配说明列表的句法形式为:
24、letter-letter,例如:IMPLICIT INTEGER(A,C,T-V)IMPLICIT REAL(I,J)IMPLICIT INTEGER(A,B),REAL(I,K),INTEGER(X-Z),隐式类型的一般规则如下:如果要使用IMPLICIT NONE语句,那么它必须放置在任何PARAMETER语句之前,并且在其作用域内,再也不能出现其他IMPLICIT语句。IMPLICIT语句当中出现的表述字母范围的letter-letter,左边的字母绝对不能是右边字母的按照字母表顺序的后面的字母。letter-letter的字母之间为减号,而非下划线,表示按照字母表顺序从左边字母到右边
25、字母的所有字母。在一个作用域里面的IMPLICIT语句里面,同一个字母不能出现在字母分配说明列表里面的不同项里,例如作为单个字母出现了,又同时处于另一个字母范围之中,或同时处于2个不同的字母范围里面。,IMPLICIT语句同样可以用来为派生数据类型分配首字母作为类型标记。例如:IMPLICIT COMPLEX(E-G,W-Z),IMPLICIT NONE f90中每个变量名都应该在说明部分中说明其类型,不应该使用隐式说明、为了抑制隐式说明发生作用,应该在程序说明部分开始就写出语句:IMIPLlCIT NONE 既声明不使用隐式说明。,【例7-15】下面的IMPLICIT语句都是合法语句:IMP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华科fortran第3章2 Fortran语言程序设计初步 华科 fortran 语言程序设计 初步
链接地址:https://www.31ppt.com/p-6449380.html