Fortran程序设计第4节FORTRAN95语言的形貌_第1页
Fortran程序设计第4节FORTRAN95语言的形貌_第2页
Fortran程序设计第4节FORTRAN95语言的形貌_第3页
Fortran程序设计第4节FORTRAN95语言的形貌_第4页
Fortran程序设计第4节FORTRAN95语言的形貌_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2篇.计算的叙述算法的每一个步骤,都必须给予确切的定义。对于算法当中所 考虑的每一种情况,每一个有待执行的动作,都必须严格地和 不含混地加以规定。对于以描述算法作为目的而设计出来 的,采用了形式的定义的程序设计语言,或者说计算机语言, 它的每一个语句都必须有非常确切的意义。D.E.Knuth 巴The Art of Computer Programming本质上FORTRAN就是一门语言,一门人与计算机赖以进行有效交流的语言,在这个 意义上和我们使用的中文, 英文等没有本质差别。现在假设要来描述一种大家都陌生的语言, 那么总是要分成两个方面来描述,即一方面要描述这门语言的表象和形态,也就是它

2、使用哪些符号,哪些词汇,一般的句式如何,怎样才能完整叙述一个任务之类;另一方面需要说明 这门语言的语义,也就是说这门语言是如何用来表达我们需要它表达的意思的。FORTRAN 来表达我们的要求,或者反过来说, 以便我们用来向计算机提出合理的任务:第4章基本上就是描述 FORTRAN作为一种语言的基本形态,也就是书写这种语言的 书写规则。接下来几章则逐步说明如何用 FORTRAN提供了些什么表达方式,表达基本数据;表达数据的结构;完整地描述数据;构造表达式;驱动计算的赋值;FORTRAN 95是如何能够做到精致地描述计算的,而把计算过程的结构控制;在整个第二篇,我们将领略到 一个问题阐述清楚了,就

3、意味着问题已经解决了一大半。The Art of-Donald E. Knuth (高纳德),Stanford University 的 The Art of Computer Programming 荣休教授,而 The Art of Computer Programming (计算机程序设计技巧)正是他的伟大著作的名称。洋洋七大卷的Comp uter P rogramming是当今全世界每一个计算机科学家所膜拜的圣经。1974年在该书刚完成前面很少一部分时,就给他带来了计算机科学家们梦寐以求的图灵奖。第4章FORTRAN 95语言的形貌要说明一门语言的形态,必须回答以下问题:它使用哪些符号

4、来表达信息? 它的词汇如何构成? 它的语句如何构成? 如何表达一个完整的任务?具体的对于一门计算机语言,把这几个问题更加明确地转换过来,就是:它使用键盘上的哪些符号,各个符号有哪些用途?它的词汇如何由键盘字符构成?含有哪些固定的词汇?以及容许自由构成合法词汇 的规则是什么?它具有哪些固定的语句格式?以及容许自由构成合法语句的规则是什么? 我们交待给计算机的任何任务,都必须明确说明任务的开始,执行步骤和完成,因 此一段完整的源代码应该具备什么样的形式?以及应该具备哪些要素? 本章就是要回答这些问题。4.1FORTRAN 语言所使用的字符人与计算机的交流只是信息的交流,而信息总是需要依靠某种信最方

5、便的就是字符。 而对于计算机来说,自然就是键盘所能敲出的从最抽象的层面来看, 号来表示,对于人来说, 那些字符(信号),因此下面就是要说明:FORTRAN 95能识别键盘上敲出的哪些字符? 每个字符对于FORTRAN 95来说又意味着什么?4.1.1FORTRAN 95所使用的基本字符按照FORTRAN 95标准的规定,一切 FORTRAN 95的实现平台都必须使用下面表4-1所列出来的这个基本的字符集,或者说,这个字符集是所有遵循FORTRAN 95标准的编译器所使用的字符集的公共子集。这样原则上,局限在这个字符集上的源码是能够被任何遵循FORTRAN 95标准的编译器所识别的。表4-1基本

6、的FORTRAN 95 字符集:文字字符英文字母 A B C D E F G H I J KL M N O PQ RSTUVWXYZ数字 0 1 2 3 4 5 6 7 8 9下划线特殊字符图形名称图形名称空格:冒号=等号収号十加号”引号一减号%百分号*星号&英语的and/斜线;分号(左括号小于)右活号大于,逗号?问号.小数点或句号$货币符号撇号可以看到基本字符分为两大类:文字字符和特殊字符。除了货币符号可以本地化之外, 其他任何字符都必须依照表里的形式。对于基本字符有如下几个问题需要予以注意。一. 文字字符的用处:主要是命名的作用,可以用来命名语言中的一切对象,这三种符号可以混合使用

7、;其中数字还具有它本来的含义,就是表示数目。二. 特殊字符的用处:特殊字符主要具有功能的意义,如编辑功能,运算功能,语法功能等。FORTRAN 95标准原则上接受小写字母。因此除了以下位置,大小写是等价的。三. 大小写必须区分的位置:作为字符常量的字符串里面;输入输出的纪录里面;作为编辑描述符的引号或撇号里面。因为在上述几种情形,大小写是字符型数据的不同数据取值。CVF ,如果不幸遇到一个 FORTRAN 95标准的怪异的编译平台,偏偏不接受小写字母,这是 FORTRAN 95标准所许可的,这时就得小心了。不过幸好我们常用的编译平台,例如 都是接受小写字母的。另外,在 OPEN或者INQUIR

8、E语句里面的FILE=或NAME=后面是否区分大小写,也 是由编译平台指定的。而恰好该种语言 (例如 C 语言 )是区分大小写的,如果是需要调用其他语言写的子程序, 这时就需要特别小心。【例4-1】如果用C写了两个子程序 EIGEN和eigen,然后有如下的FROTRAN片断:EXTERNAL EIGENCALL EIGENEND这时它是该引用 EIGEN 还是 eigen 呢?如果所使用的 FROTRAN 系统正好是怪异的那 种,没问题。如果是常见的如 CVF,这时它就无法区分 EIGEN和eigen,这样就必须给它 们更换名称了。四. 数字的涵义:除了以下情形,数字总是表示十进位数字 属于

9、二进制,八进制,十六进制的字面常量; 带有 B,O,Z 编辑描述符的输入输出纪录。【例 4-2】 以下语句当中的数字不是属于十进位数字:DATA I, J, K / O' 1001 ' , 23.54, Z' 5CA2' /其中第一个为八进制数,第二个为十进制数,第三个为十六进制数。五. 下划线的涵义:下划线的主要作用就是置于单词之间代替空格,使得我们在命名时使用清楚的英语 词汇。 无论给什么对象起名, 所谓好记性不如烂笔头, 道任意变量等的含义。下划线不能置于任意名称的前面,但是可以置于名称的最后。 下划线也用于在字面常量中区隔常量的值和种别参数。都尽量使用完

10、整的英语单词, 同时使用下划线以区隔不同的单词。 只有这样才能切实保证你在任何时候, 在程序代码的任意位置都知4.1.2 与平台有关的 FORTRAN 辅助字符集上节列出的基本字符集是在一切 FROTRAN 的编译平台都可以使用的, 被 FORTRAN 95 标准规定为必须使用的默认字符集。 另外还有些辅助的字符则是不同的平台有不同的用法约 定。辅助字符分两类:可打印字符和不可打印字符。希腊字母等,都可以应用在字符串,注释,和输入输 可打印字符; 各种本地化语言的字符,象汉字, 出纪录当中。Tab 键。标准当中主要用来表示 6 个空格,这样在固定源程序形式的代码的每行的开头使用Tab,就自动地

11、空出6个空格。 不可打印字符。主要就是控制字符,例如制表符制表符 (Tab 键 )在 FORTRAN77对于一个 FORTRAN77 标准的编译系统来说,在固定源程序形式里的 Tab 被看成是至 少 6 个空格,而在自由源程序形式里的 Tab 被看成 1 个空格。这样如果 Tab 被放在文本当 中用于输出格式控制,那么这种默认的转换方式,有时就会导致输出格式的混乱。有关 FORTRAN 95 的辅助字符集的使用规则,请参考具体的编译系统的说明。FORTRAN4.2 词汇所谓 FORTRAN 的词汇就是一个语句的最小的意义单位,它由一个或多个 字符集里的字符组成。包括两类共6 种,分类例举如下:

12、 由文字字符组成的词汇,包括4 种:语句关键词:IMP LICIT名称:EIGEN_FREQUENCY_3由单个词汇组成的字面常量:1.234567_lo ng标识符: 213 由特殊字符组成的 =算符 : +,.OR. 定界符:逗号, =, = ,:,:,;, %。FORTRAN 95 的一切合法的词汇都必须按照语法来构成。 完备的构词语法规则在附录 B 给出。下面分别予以详细说明。1. 语句关键词语句关键词的功用:DO 语句中的关键词 DO 本身标志了该语句 标志语句本身。 【例 4-3 】 下面的DO I=1,500 标志选项。 【例 4-4 】 下面的INTENT 语句当中的 IN,O

13、UT, 或 INOUT 。,X,Y,ZINTENT(IN) , A。 INTENT(INOUT) 用在语句当中,起分界的作用。【例 4-5】 如下面 DO 语句当中的 WHILEDO WHILE( .NOT. VECTOR )并非所有的语句都必须包含关键词,在 FORTRAN 里面,赋值语句和函数都不需要关键词。尽管 FORTRAN 95 不区分大小写,本书任何地方出现的语句关键词都使用大写字母。 纯粹是为了醒目的原因。2. 名称在一个程序当中,任何对象都需要有一个名称, 给它们命名所得到的词汇, 可以说就是 一般语言里的名词,这样的对象包括:变量,命名常量,程序单元,过程,公用块,构造, 派

14、生类型,哑元等。名称的拼写规则为: 名称必须由字母开头,可以由文字字符混合组成,而下划线不能作为名称的第一个 字符。 一个名称至多允许含有 31 个字符。3. 常量一个常量就是对一个值的合乎语法的字符标记。常量分为字面常量和命名常量两种:一个值如果没有在程序里面经过命名,则称为字面常量,这种常量不能取派生数据 类型。【例 4-6】66953Z' 5120A' 2.3417 .TRUE.(33.2, 5.0) 一个值如果在程序里面经过命名,则称为命名常量,这种常量能取派生数据类型。【例 4-7】在如下声明语句当中的常量 UNSTABLE_POINT 为命名常量:REAL, DIM

15、ENSION(3), PARAMETER :UNSTABLE_POINT =&(/5.332, 0.221, 190.632/)对于常量的语义,将在说明数据时进一步讨论。4. 语句标签以便在 CALL 语句,在一个程序单元内部, 对任何一条语句,都可以在该语句的前面加上语句标签,该程序单元内部的任何其他位置引用该语句。需要引用其他语句的语句包括DO 结构,分支语句,输入输出语句等。 语句标签的书写规则为:0,例如 000 语句标签由 1到 5 个十进制数字组成,其中必须至少有一个数字不能是 不能作为标识符; 标识符以 0 开头是没有任何意义的,例如 0034与 34没有区别。 标识符不

16、能放置于空语句之前。【例 4-8】456上面的语句只出现了一个语句标签,是不合法的。 对于在一个程序单元内部,标识符不唯一出现的情形,具有特殊的含义,将在后面 讨论。5. 算符算符用在表达式当中,通过运算而获得某种类型的值。算符分为固有算符和自定义算符两类: 固有算符在 FORTRAN 95 语法当中, R310 规定了固有算符的构成法则。 【例 4-9 】/表示字符串的连接 + 表示对数值的加法 .NOT. 表示逻辑否 .OR. 表示逻辑或面都是固有算符。 自定义算符 自定义算符的一般语法形式为:.XXX .即在两个句点之间有 n 个字符构成的字符串, n 不大于 31。中间的字母串最好是一

17、个表达该运算含义的英文单词。这个单词不能与固有算符或者逻辑常量里面已经使用了的单词重复。6. 定界符全部的定界符有如下 12 种形式:(/和/)都必须成对出现这些定界符的功能就是在一个连续的源码文本当中,(/ /) , = =>用来把不同性质的源码其中 (和), 顾名思义, 成分区分开。它们的具体含义将在具体的语句当中说明。4.3 语句一条语句由一些词汇组成,可以理解为表示要求计算机进行的一个动作,但一个说明, 一个描述之类的, 表面看好象不是计算机的一个动作, 不过实质上同样要求机器内部的一个 动作与之相对应,因此同样也构成 FORTRAN 的一条语句。FORTRAN 95 的语句分为

18、两大类: 非执行语句当需要引入或说明一个程序单元或子程序, 或者是说明数据类型时, 就需要使用非执行 语句。 可执行语句 当需要计算机进行一个指定动作时,就需要使用可执行语句。A ,语句的语法也参FORTRAN 95 全部的语句的具体分类,以及语法和例示参见附录见附录B。在后面的有关章节则分别说明了所涉及到的主要的语句。4.4 源码形式一个 FORTRAN 95 程序就是由以下三种形式的程序成分所构成的分行的文本: FORTRAN 语句 注释 INCLUDE 行在一个 FORTRAN 95 程序里面,一条语句占一行或多行,一行也可以有多条语句,程 序文本当中可以包含空行,但不具有任何含义,被

19、FORTRAN 编译器忽略。这种形态的文本就是 FORTRAN 的源代码 (源程序 )。从 FORTRAN90 开始,对于源程序的书写格式要求已经完全现代化了,也就是出现了 所谓自由源程序格式, 而此前, FORTRAN 的固定源程序格式一直是初学者视为畏途的主要 因素,那种传统的固定源程序格式完全是 FORTRAN 作为始祖级的高级语言的遗留痕迹, 因为早期的源程序输入不是通过键盘, 而是运用穿孔纸带, 正是穿孔纸带的格式规定了相应 的源程序的书写格式。现在之所以我们还需要了解这点,是因为FORTRAN 的悠久历史,决定了有大量的源代码正是使用了那种古老格式, 那是一个今天我们不得不继承的宝

20、库, 要 想使用它们, 显然就得会读那种格式, 因此我们只需要了解固定格式, 却不需要遵循固定格 式来写代码。例 4-10 】在这个例子里面,表明了行与语句之间可以有多种排列形式: 这里的例子显示了所谓自由源程序格式的自由之所在。 这里使用了 & 作为一个语句在 行与行之间连续的标志,而!后面的字符永远是注释。23 FORMAT( 6Y, J9)! 这是一条语句占有完整的一行的例子37 FUNCTION string_concat(s1, & ! 这里一条语句被分到两行 s2)空格是被忽略的。64 FORMAT( 6Y, J0) ;37 FUNCTION & !这里一行

21、里有两条语句,其中一条 string_concat(s1, s2)!语句还只是它的一部分。TYPE (string) : s1, s2, string_concat string_concat%string_data = s1%string_data(1:s1%length) / & s2%string_data(1:s2%length); string_concat%length & ! 这行里包含两条= s1%length + s2%length !部分语句。END FUNCTION string_concat源码文本的一般规则如下: 在一个程序单元内部,行与行之间的顺序是

22、有意义的,只有两个例外:?注释行的顺序与位置可以非常自由;?在 CONTAINS 语句和 END 语句之间的子程序的顺序也可以是任意的。 在一个程序单元内部,或者完全使用自由格式,或者完全使用固定格式。但是 一个程序内部的不同程序单元则可以使用不同的格式。后面要说明为了便于协调起见, 如何使用一种自由格式与固定格式兼容的特定格式。 所谓字符文本是指如下两种情形下的字符串:? 作为一个字符字面常量的取值的字符或字符串; ? 被字符串编辑描述符控制的字符或字符串。那么描述符本身和续行符 &永远都不属于其邻近的字符文本。 针对字符文本的规则与针对非字符文本的规则是不一样的。例 4-11】下面

23、例子说明了空格在字符文本与非字符文本当中的不同使用规则:22 CHAR = NAME01 / “ KNOWLEDGE ARCHIVE”23 CHAR = NAME02 / “ KNOWLEDGEARCH”IVE在双引号里的字符串之间的空格是有意义的,因此上面的两个字符串是不同的。DO43I=1,NDO 43 I = 1,N而上面这两条语句是等价的。4.4.1 自由源程序格式与固定格式相比,主要是空132 个字符,如果出现非基本自由源程序格式的主要思想就是不限制语句在行内的位置。 格的用法有差异。自由源程序格式的一般规则如下: 对于 FORTRAN 的基本字符集而言,一行至多能容纳字符集当中的字

24、符,则具体的平台会有相应的规定,这时,可能能够容纳的字符数 目就会少于 132。【例 4-12】假如下面的语句刚好包含 132 个字符,但是其中含有中文字符:TEXT = CHINESE_SENTENC'E this line has exactly 132 characters and contains 人'这时,一个具体的实现平台会有相应的规定,一般来说它会认为上面语句的字符太 多了,因此为保险起见,尽量使用续行符。只要字符!不是作为字符文本当中的一个字符,那么在该行内它后面的所有字符都 是属于注释的内容。而 FORTRAN 对于注释内容没有任何限制,可以是任意形式,因为反

25、正任何编译器对于注释部分都是忽略掉的。一行内可以在语句后面接注释内 容,也可以整行就以!开头,这时该行就是完全的注释行。总之, 注释的位置可以是任意的,关键是一行的任意位置只要出现了注释符!,那么它 后面直到行末, 都会被编译器认为是注释内容而不加理会。 因此不要把语句放置在一行内的 注释后面。只要字符 & 不是作为字符文本当中的一个字符,那么在该行内它后面只能接空格以 及注释,在紧接着的行内只要存在非注释部分,那就是和该 & 前面的部分是连续的, 被称为连续行。&,则它只是属(这两者表现一样 ),那么编译在 FORTRAN 里,一个语句所跟随的连续行不能超过 39 行

26、。 一行的非注释部分不能只是一个续行符 & 。 注释不能利用该字符来表示续行,因此如果注释部分的行末为字符 于注释内容的一个字符,不具有续行的意思。 一行如果只包含空格字符,或者根本不包含任何字符 器总是把该行视为注释行,予以忽略。一行之内可以不止包含一条语句,语句之间必须用( ; )加以分隔。任何辅助字符集当中的字符都可以在字符字面常量和字符串编辑符当中使用。 标签被放置于语句之前,任何情形下都必须避免标签被认为是属于一条语句内部的 字符。按照 FORTRAN 语法,空语句是合法语句,只要空语句不是出现在一行的开头,因此 连续的;,甚至中间包含空格; ;,都会被认为是单个的;,因为字

27、符;总是意味着它 的前面是一条语句,即使为空语句,也不算语法错误。【例 4-13】 下面的语句都是合法的。X=(3.0,4.6);Y=(44.5,566.0)这里的;是作为语句分隔符X=(3.0,4.6);这里的;被忽略而不认为是错误X=(3.0,4.6); ;Y=(44.5,566.0)这里的; 误。;等价于一个;,因为分号之间的空格被认为是空语句,不算语法错X=(3.0,4.6)&Y=(44.5, 566.0)这里分号放在一行的开头,因为该行是连续行。Y=(44.5,&566.0);Z= ” ZERO”【例4-14】 下面的写法是错误的。53 INTEGER X,Y !这里

28、53是合法的标签IF (X=0)76 Y=X !这里的标签76不能说明自己不属于IF语句F面我们更加详细地说明在自由源码形式里面续行符和空格的用法。1.续行符只是采用续行符的不同用法, 就有可能产生完全不等价的语句, 因为续行符能够导致名 称的变化。所以如果一个名称, 字符常量,或词汇被迫分行, 则必须在前一行的末尾和后一 行的开头紧接着字符使用 &。【例4-15】ENERGY = 0.5*MASS * VILOC &!这里VILOCITY是一个变量名&ITY*2ENERGY = 0.5*MASS * VILOC &!这里变量名成了 VILOC ITY !&am

29、p;ITY*2ENERGY = 0.5*MASS * VILOC & & !这里变量名成了 VILOC & ITY !&ITY*2上面的三个语句是完全不等价的!2.空格的使用规则在具有固定名称以及固定格式的算符当中, 是分隔不同的词汇。【例4-16】不能随意使用空格。因为空格默认的功能就CALL SUBROUTINE ACALL SUBRO UTINE A !错误语句!IF X = .NOT .IF X = .NOT. !这两条语句不同【例4-17】 下面语句当中的空格是不可少的:INTEGER X,YIF A=0DO Y=1,20但不是所有情形下的词汇之间必须

30、要有空格,在不会产生混乱的前提下,有些语句关键4-1 :词之间的空格是可以省略的,对于语句关键词来说,所有这些不同的情形列举如下表表4-1语句关键词中间空格含义的不同情形非必须的空格必要的空格BLOCK DATACASE DEFAULTDOUBLE COMP LEXDO WHILEDOUBLE COMP LEXDO WHILEDOUBLE P RECISIONIMP LICIT ty pe-s pecifierELSE IFIMP LICIT NONEEND BLOCK DATAINTERFACE ASSIGNMENTEND DOINTERFACE OP ERATOREND FILEMODUL

31、E PROCEDUREEND FORALLRECURSIVE FUNCTIONEND FUNCTIONRECURSIVE SUBROUTINEEND IFRECURSIVE typ e-s pecifier FUNCTIONEND INTERFACEtyp e-s pecifier FUNCTIONEND MODULEtyp e-s pecifier RECURSIVE FUNCTIONEND P ROGRAMEND SELECTEND SUBROUTINEEND TYPEEND WHEREGO TOIN OUTSELECT CASE442固定源程序格式今天已经没有必要按照固定格式书写源程序,

32、只需要能够阅读古老的使用固定格式的代码,如果有必要把固定格式的源程序转换为自由格式,也可以运用某些小软件完成,因此下面只是简要地介绍固定格式的几个规则。语句只能书写在一行的第 7到第72个格子上。 空格除了在字符常量里以外,都是没有意义的。在某行第一格为字符 C,或*,就表示该行整行都是注释。注释总是被忽略。 字符!只要不是出现在第 都属于注释。一行如果只包含空格字符, 器总是把该行视为注释行,6格,也不是属于字符文本,或者根本不包含任何字符 予以忽略。则从它开始一直到该行的行末,(这两者表现一样),那么编译一行中的多条语句用一个或多个分号分隔;分号可以出现在行末,但没有更多的意 义;分号不能

33、是一行的第 7到第72个格子上第一个非空格字符。除了空格和0之外的任意字符,只要出现在某行第6格上,则表示该行为连续行。一行后面最多只能有 19个连续行,第一行称为初始行。标识符只能出现在第 1到第5格上,被连续的语句只有第一行可以使用标识符,这 样下面所有的连续行的第 1到第5格上只能是空格。END语句不能被连续,它也不能被视为初始行。4.4.3 兼容源程序格式在某些情形下, 需要书写能够同时被自由格式和固定格式兼容的源码, 需要遵循以下规则即可:要做到这点, 只标识符只能出现在第 1 到第 5 格上,语句只能书写在一行的第 按照自由格式的规则使用空格。7 到第 72 个格子上。使用!作注释

34、符,但不要放置在第 6 格,也不要是用使用字符 需要连续行时,在被连续行的第73格写&,同时在连续行的第80 格保持空格或者只写注释。而连续行的第 1到第 5 格上只能是空格。 面就是一个同时满足两种源码形式要求的代码例程:例 4-18 】C,或*作注释符。6 格也写 &, 第 74 格到Column:12345678.73! Define the function CUT_SINDOUBLE PRECISION FUNCTION CUT_SIN(X) CUT_SIN = X - X*3/FACTOR(3) + X*5/FACTOR(5)& &- X*7/FAC

35、TOR(7)CONTAINSINTEGER FUNCTION FACTOR(N)FACTOR = 1DO 10 I = N, 1, -110 FACTOR = FACTOR * IEND FUNCTION FACTOREND FUNCTION CUT_SIN4.4.4 程序结构在 FORTRAN 95 的语法规则里面规定了程序结构的完整定义,参见附录 不过那里的语法规则并没有完备地表述在一个程序单元里,各种语句应该遵循什么顺 序。下面给出一般原则:B。数据类型声明和指定的语句必须放置在可执行结构或语句之前;FORMAT,DATA,ENTRY 语句也可以放置在可执行语句中间, 不过把 DATA

36、语句放 置在可执行语句中间是一种过时的做法; 如果出现 USE 语句,必须总是放在最前面; 如果出现内部子程序或模块子程序,则必须跟在 例 4-19 】 下面是一个典型的只包含一个程序单元,CONTAINS 语句后面。 也就是主程序的 FORTRAN 程序:!本程序能够求出所有 100-999 之间每一位上的数字的立方和等于自身的三位数。PROGRAM SUM_OF_CUBESINTEGER A,B,CDO A = 1,9DO B = 0,9DO C = 0,9IF (100*A + 10*B + C = A*3 + B*3 + C*3) &PRINT “ (3I1) ” , A,B,

37、CEND DOEND DOEND DOEND PROGRAM SUM OF CUBESRUN SUM OF CUBES 153 370 371 407大家不妨尝试一下,1000-9999之间还存在这样的数字吗?如果是平方呢?下面的表4-2给出了程序单元的基本模式,其中处于同一水平位置的各语句之间没有严 格的前后顺序,而不同的行则表示了严格的在程序当中出现的前后顺序:表4-2程序单元的基本模式程序,函数,子例行程序,模块,数据块语句USE语句FORMAT 语句,IMP LICIT NONEENTRY语句PARAMETER 语句IMP LICIT 语句PARAMETER 语句,派生数据类型定义,接

38、口块,DATA语句可执行结构DATA语句数据类型声明语句, 语句函数语句, 特定语句CONTAINS 语句内部子程序或模块子程序END语句把DATA语句放置在可执行结构中间已经过时。语句函数语句已经过时。表4-3给出一个特定的语句能够在什么结构中出现,不能在什么结构中出现的概貌:表4-3语句的环境作用单元的种类语句主程模数据外部子程模块子程序内部子程接口序块块序序块USE语句YYYYYYYENTRY语句NNNYYNNFORMAT 语句YNNYYYN其他声明YYYYYYYDATA语句YYYYYYN派生类型定义YYYYYYY接口块YYNYYYY语句函数YNNYYYNCONTAINSYYNYYNN可

39、执行语句YNNYYYN其中丫表示该语句可以在相应的结构当中出现,N表示不能出现。这时并4.5 INCLUDE 行很多时候一个完整程序的源码还可以原封不动地移植到另一个程序源码的中间, 不需要把被移植源码完整地抄写过来,而只需要简单地运用INCLUDE行即可。【例4-20】PROGRAM GREEN FUNCTIONREAL X,Y,Z.!语句省略INCLUDE GAUSE .!语句省略END这样源码文件 GAUSE就直接进入程序GREEN_FUNCTION 的源码里面,取代了INCLUDE行的位置。FORTRAN 语句。INCLUDE行由关键词INCLUDE和其后的文件名称组成。其中的文件名称

40、是一个字符 文本常量。INCLUDE行只是针对编译器的一个提示,而不是属于程序内的 其中的字符文本常量不能带作为命名常量的种别参数。INCLUDE行必须放置在程序当中,其所引用文件应当出现的位置。INCLUDE行所在行不能有任何其他文字,包括标识符,当然可以有注释。INCLUDE 行可以进行嵌套,嵌套的层数由具体的编译器规定。注意在嵌套的同时 不能导致定义循环。INCLUDE行之前的语句不能是被连续行,其后的语句也不能是连续行。4.6 与其他语言的语法要素方面的比较下面简要地比较一下, 作为一种语言, FORTRAN 和其它语言在总的语法风格方面的异 同。一种计算机语言的语法远比任何自然语言的

41、语法要来得简单明了, 计算机语言的语法风 格可以明确地归结为各种基本语法要素的选择。 因此可以按照语法要素对不同的语言加以比 较。1. 字符集按照语言的所谓形式定义, 语言就是取自一个有限字符集合的任意字符所构成的有限字 符串的集合。显然,一种语言选择哪些字符作为它的字符集,正是语言文法设计的第一步。 最常用的字符集就是 ASCII 字符集,而一套完整的字符集除基本字母和数字外,通常 还包含一些特殊字符,以便为语言提供足够的表达手段。然而在增大字符集 造就了不同语言的因此这里的折衷方式的不同,表面看来, 一种语言所使用的字符越多, 它的表达能力应该是越大,的同时, 也增加了编译时词法分析的分量

42、, 字符集的差异。字符集的选择首先来自语言的输入输出设备。对于 FORTRAN ,C 等大多数语言,是面 向以工业标准键盘为主的输入输出设备的, 因此这些语言的字符集可以说是大同小异的, 过也有例外,如 APL 语言就使用了 ASCII 字符集之外非常特殊的字符,因此这种语言的字 符集就不能被大多数输入输出设备直接使用。从计算机历史来讲,到了 1960 年代的早期,计算机行业对字符的表示大都由六位字节 转变为八位字节,这样理论上就有了 256 个字符可用,分配给 52 个大小写字母、十个数字 以及一些标点符号, 应该是足够了。 不过,由于计算机语言本地化的趋势越来越流行, 语言 的国际化导致各种民族语言的文字都要求进入字符集。除了法语,德语里的语音符号之外, 希腊语,阿拉伯语之类的语言有着完全不同的字符集。 而如果中文和日文要进入计算机语言, 则需要一个有一万多符号的字符集。因此甚至出现了一种想法,就是考虑用十六位 (65536)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论