版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Fortran 之 COMMON句FORTRA程序中各程序单位之间的数据交换可以通过虚实结合来实现,还可以通过建立公用区的方式来完成。 公用区有两种, 一种是无名公用区, 任何一个 程序中只可能有一个无名公用区; 一种是有名公用区, 一个程序中可以根据需要 由程序员开辟任意多个有名公用区。建立无名和有名公用区都通过COMMON句来进行。按照结构化程序设计的指导思想, 通常主张通过虚实结合的途径来传送数据 而不主张使用公用区。 因为前者使程序有较好的可读性, 而且容易跟踪数据的流 向,便于对程序进行调试和维护。 但是虚实结合的传送方式速度较慢, 特别是在 各程序单位之间有大量的数据需要传送时速度
2、问题就更为突出。 不同程序单位利 用公用区交换数据的速度却比虚实结合的方式传送速度快得多。 所以在很多应用 程序中如果各程序单位之间有大量数据需要传送时, 程序员一般仍然采用开辟公 用区的方式。11.2.1 无名公用区开辟无名公用区COMMON句的一般形式如下:COMMON a1,a2,其中a1,a2,允许是普通变量名、数组名和数组说明符(注意:不是数组 元素),它们之间用逗号隔开。例如:在主程序中写: COMMON, XY, I, Z( 3)在子程序中写: COMMON, AB, J, T(3)于是,在无名公用区中变量X和A, Y和B, I和J分别分配在同一个存储单 元中,数组Z和T同占三个
3、存储单元。占同一个存储单元的那些变量在不同的程 序单位中,它们的名字不需要相同。FORTRAN译程序在编译时为 COMMON句开辟一个无名公用区, 当把不同的程序单位连接在一起的时候,不同程序单位在COMMON句中的变量按其在语句中出现的先后顺序占用无名公用区连续的存储单元, 也就是说每个程 序单位中的COMMON总是给出现在语句中的第一个变量分配在无名公用区的 第一个存储区单元。COM MC语句开辟公用区的主要用途就是使不同程序单位的变量之间 进行数据传送, 另一种用途是用来节省存储空间。 下面的例子通过公用区进行交 换数据:PROGRAM MAINCOMMON Z1,Z2READ(*,*)
4、A1,A2,A3CALL QUAD(A1,A2,A3)WRITE(*,*)Z1,Z2ENDSUBROUTINE QUAD(A,B,C)COMMON X1,X2END或者:PROGRAM MAINCOMMON Z1,Z2,A1,A2,A3READ(*,*)A1,A2,A3CALL QUAD()WRITE(*,*)Z1,Z2ENDSUBROUTINE QUAD()COMMON X1,X2,A,B,CEND建立无名公用区的规则 :(1) COMMON句是说明语句,必须出现在所有可执行语句之前。COMMON 语句中只允许出现变量名、数组名和数组说明符,后者意味着可用COMMON句说明数组,此数组必然放
5、在公用区中 。(2) 由于公用语句中的变量在编译时已被分配在实在的存储单元中, 因此在公用语句中不能出现虚拟参数 。同样, 在编译时,可调数组的大小不定, 无法分配固定的存储单元, 因此可调数组名也不能出现在公用语句中。 但是可调 数组的维的上、下界变量可以通过 COMMON句传送,当然这些变量就不再允许 出现在虚参表中 。例如:SUBROUTINE SUB(A,B)COMMON NA,NBDIMENSION A(NA),B(NB)但是为了程序清晰起见, 通常不提倡采用这种方式, 而是希望通过虚实结合 来传送与可调数组有关的全部量。(3) 一个程序在运行过程中只有一个无名公用区 。在同一个程序
6、单位 中可以出现几个COMMON句,它们的作用相当于一个。FORTRA编译程序按 COMMON句在同一程序单位中出现的先后次序把语句中变量按顺序放在无名公 用区的存储单元中。(4)各程序单位COMMON句中的变量类型必须按位置对应一致才能正确传送数据 。例如:主程序中有:COMMON(A5),I子程序中有:COMMON(B4),I ,P主程序中A数组元素是实型,使数组元素 A( 5)和子程序中的整型变量I 共用存储单元,使主程序中的整型变量I和子程序中的实型变量P共用存储单元 都是错误的。(5)在一个程序单位中, 分配在公用区中的名字只能在公用语句中出 现一次。(6)各程序单位中,无名公用区中
7、的变量个数可以不一样 。如:主程序中有:COMMON(X9), A, B, C, D子程序中有:COMMON(A4), X( 2)这是允许的。(7)不要混淆 EQUIVALENCES COMMON句, EQUIVALENCE句是给 同一程序单位中的不同变量分配同一个存储单元,而 COMMO语句则用于给不同 程序单位的变量分配同一存储单元。因此不允许在同一程序单位中写:COMMON, AB, C EQUIVALENC(EA, B)因为COMMON句把变量A、B、C分配在公用区的相邻的三个存储单元中, 而EQUIVALENCE句却又把A、B、C分配在同一个存储单元中,这是矛盾的,因此禁止以上写法(
8、8) 公用区可以用EQUIVALENCE句来扩大加长。例如:EIMENSION A(4),B(4)COMMON A,CEQUIVALENCE(A(3),B(1)公用语句在无名公用区开辟了连续的五个存储单元, 等价语句使 A( 3)和 B ( 1)共用存储单元因而把 B 数组带入了无名公用区,使公用区向后扩大了一个 存储单元。这种情况下公用区的存储分配如下图:A(1)A(2)A(3)A(4)CB(1)B(2)B(3)B(4)公用区可以用这种方式加长。但是通过 COMMONI句和EQUIVALENCE句的联用,只允许公用区向后延伸,不允许向前延伸。对于上例,如果把EQUIVALENCE句改为:EQ
9、UIVALENCES 1), B (2)则是非法的,它使得公用区出现下图所示的情况:A(1)A(2)A(3)A(4)CB(1)B(2)B(3)B(4)B并没有在COMMON句中说明,它是由等价语句带进来的,但B的元素向前越过了公用区的第一个存储单元,这是不允许的。11.2.2 有名公用区COMMON句说明有名公用区的形式如下:COMMON/n1/a1,a2;/n2/b1,b2,其中, n1,n2 为公用区名,它们放在两个斜杠之间。公用区名的取名方法与 变量名同。公用区名可以和本程序单位中的变量同名,但不允许和子程序同名。 al、a2、,bl、b2、代表各公用区中的变量名、数组名或数组说明符。也
10、可 以用两个连续的斜杠来表示无名公用区,例如:COMMON, RX, Y, Z /C2/ A , B, C也可以写成:COMMON /,RX, Y, Z /C2/ A , B, C或者:COMMON /C2/ ,AB,C /R ,X,Y,ZCOMMON句中的公用区的变量可以“化整为零”,只要它们在有名公用区中的顺序不变,例如以上语句可写成:COMMON R /C2/ A /X, Y, Z /C2/ B , C或者写成:COMMON R /C2/ ACOMMON /C2/ ,B /XCOMMON / Y, Z, /C2/ C但是这种写法可读性差,建议把一个公用区用一条 COMMON句来完成,例如下面的语句使人一目了然。COMMON, RX, Y, ZCOMMON /C2/ ,A B, C用无名公用区为各程序单位传送不同的变量时,必须使各个程序单位中的公用变量与单一的无名公用区中相应的变量进行对应, 程序之间的数据 传送显得僵化繁琐。 利用有名公用区避免了无名公用区的敝端, 使之做到公用之 中有“专用”,只需在各个程序单位中做到同名公用区中数据顺序一一对应就行 了。有名公用区的使用不仅保留了各程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州贵安发展集团有限公司2025年第二批公开社会招聘备考题库有答案详解
- 2025年东莞理工学院第二批招聘聘用人员19人备考题库及1套参考答案详解
- 2025年淮南市大通区教师招聘考试参考题库及答案解析
- 2025年海西市中小学教师招聘笔试参考题库及答案解析
- 做个好娃娃课件
- 租楼房合同范本6
- 假如没有灰尘获奖课件
- 假如我是xx-课件
- 监控改造服务合同范本
- 卖商品赠品合同范本
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)英语试题(含答案详解)
- 特殊儿童沟通技巧培训
- 中国马克思主义与当代2024版教材课后思考题答案
- 2026年日历表(每月一页、可编辑、可备注)
- 国家开放大学一网一平台电大《建筑测量》实验报告1-5题库
- 品质异常通知单
- 鼎捷T100-V1.0-总账管理用户手册-简体
- GB 31644-2018食品安全国家标准复合调味料
- 援疆工作调研报告
- 机车-受电弓碳滑板磨耗检测
- 数学建模电子教材
评论
0/150
提交评论