《fortran数据共用存储单元和数据块子程序.ppt》由会员分享,可在线阅读,更多相关《fortran数据共用存储单元和数据块子程序.ppt(7页珍藏版)》请在三一办公上搜索。
1、1,第 九 章 数组,第 十 章 语句函数,第十二章 数据共用存储单元 和数据块子程序,第十三章 文件,第十一章 子程序,2,一、等价语句(Equivalence语句),Equivalence(变量表1),(变量表2),,作用:使同一个程序单位中的两个或更多的变量共用 一个存储单元。,说明:,1.Equivalence 语句是说明语句,必须出现在程序单位的执行语句之前。,2.每一对括号内的变量表中,可以是变量名、数组名或数组元素,但至少应该有两个变量名,中间用逗号隔开。不允许出现虚拟参数名。,Equivalence(W,ST),3.每对括号中的变量可以具有不同类型,一个等价语句可以使多组变量等
2、价。,Equivalence(A,B),(X,Y,Z),3,4.等价语句可以节省内存。,Equivalence(IM,NPL,JJ2,NEG),不能同时或交叉使用!,5.等价语句允许用两个或更多的变量名代表同一个量。,Equivalence(A,A0,A1),6.数组的等价。,Dimension A(8),B(4,2),C(2,2,2)Equivalence(A,B,C),等价于,Equivalence(A(1),B(1,1),C(1,1,1),7.不能利用等价语句建立矛盾的等价关系。,Dimension A(10)Equivalence(X,A(1),(X,A(3),4,二、公用语句(COM
3、MON)语句,传统Fortran程序不同单位之间的数据交换是通过:,虚实结合,优点:,符合结构化程序设计的指导思想。程序有较好的可读性,容易跟踪数据的流向,便于对程序进行调试和维护。,缺点:,传输速度慢。,5,Fortran程序中有 两种公共区,无名公共区(只有一个),有名公共区,开辟公用区用common语句,主程序 common x,y,i,z(3)子程序 common a,b,j,t(3),无名公用区,程序中只能有一个无名公用区,不同程序单位在common语句中的变量或数组按其在语句中出现的先后顺序占用相同连续的存储单元。,6,read(*,*)a1,a2,a3call quad(a1,a
4、2,a3,z1,z2)write(*,*)z1,z2endsubroutine quad(a,b,c,x1,x2)p=-b/(2.0*a)q=sqrt(b*b-4.0*a*c)/(2.0*a)x1=p+qx2=p-qend,common z1,z2read(*,*)a1,a2,a3call quad(a1,a2,a3)write(*,*)z1,z2endsubroutine quad(a,b,c)common x1,x2end,common z1,z2,a1,a2,a3read(*,*)a1,a2,a3call quadwrite(*,*)z1,z2endsubroutine quadcommon x1,x2,a,b,cend,例:用子例行程序解一元二次方程的两个根,7,说明:mon语句是说明语句,必须 出现在所有可执行语句之前。3.一个程序只有一个无名公共区,同一程序单位中出现多个common 语句,作用相当于一个。4.公用语句区中的变量或数组类 型必须按顺序一一对应。5.变量或数组名只能在同一程序 单位的公用语句定义中出现一次。6.区分equivalence和common语句 的作用。,common x,y,z(3)common a,b,common x,y,z(3),a,b,common a,b,ccommon a1,b1,a,有名公共区、数据块子程序内容(自学),