fortran程序设计第9章(阅读).ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
fortran程序设计第9章(阅读)

图9.6给出了当虚参为数组名,对应实参为不同维数的实参数组元素时两个数组结合的情况。 PROGRAM MAIN DIMENSION A(3, 3) …… CALL SUB(A(1, 2)) …… END SUBROUTINE SUB(B) DIMENSION B(4) …… END 图9.7中虚参数组的元素已超出对应实参数组的范围。这将引起运行时出错。 PROGRAM MAIN DIMENSION A(6) …… CALL SUB(A(3)) …… END SUBROUTINE SUB(B) DIMENSION B(6) …… END (3)当数组是字符类型时,虚参和实参数组不是按数组元素的顺序一一对应结合,而是按字符位置一一对应结合。虚参数组中允许的字符总数必须小于等于实参数组中允许的字符总数。在此条件下,虚、实数组的维数可以不同,下标的上、下界可以不同,数组元素的字符长度可以不同。图9.8给出了字符类型数组结合的示意图。 PROGRAM MAIN CHARACTER*4 B(6) …… CALL SUB(B) …… END SUBROUTINE SUB(C) CHARACTER*5 C(4) …… END 除非特殊需要,虚参字符数组元素的长度应该与对应实参相同,这样的程序不仅可读性好,而且易于调试检查。 与虚参字符数组对应的实参也可以是一个字符数组元素,虚参字符数组的第一个字符与该元素的第一个字符结合,其它按次序依次类推,只是虚参字符数组中最后一个字符必须落在对应实参数组的范围之内。 (4)在子程序中,允许虚参数组是可调数组。可调数组的使用大大提高了子程序的通用性和灵活性。读者在了解数组虚实结合情况的基础上应该充分利用可调数组这一强有力的工具来进行程序设计。 PROGRAM MAIN DIMENSION A(10), B(4, 3) M1=4 M2=3 CALL SUB(A, 10, B, M1, M2) … END SUBROUTINE SUB(X, NX, Y, N1, N2) DIMENSION X(NX), Y(N1, N2) ... END 可调数组名必须是虚参。可调数组中每一维的上下界可以是整型虚参变量,其值通过对应的实参传送过来;也可以是公用区中变量。为了使程序清晰易读,建议采用虚参变量来说明可调数组的上、下界而不用公用区变量。另外可调数组也遵循前述1、2、3中的有关规定。对于初学者来说要特别注意,只能在子程序中使用可调数组,而且对于那些只是在子程序中局部使用的(并非通过虚实结合传送的)数组不允许是可调的。 (5)虚实数组中最后一维的上界可以用星号(*)表示。例如: PROGRAM MAIN SUBROUTINE SUB(X, Y) DIMENSION A(10), B(4, 3) DIMENSION X(0, *), Y(2, *) ... ... CALL SUB(A, B) END ... END 用这种方式定义的数组称为不定长数组。以上SUB子程序中的X、Y数组在调用之前其大小不固定,当调用该子程序时,它们的大小由对应的实参数组来确定。因此在上例中当执行了CALL SUB(A, B)调用语句后,SUB子程序中X、Y的实际说明为: DIMENSION X(0, 9), Y(2, 3) 9.3.3 子程序名作为虚参 在虚参表中允许出现函数名和子例行程序名。FORTRAN编译程序完全根据某个虚参名字在子程序中出现时的上下文关系来确定它是函数名还是子例行程序名。函数名在必要时应该进行类型说明。 例如以下子例行程序中: SUBROUTINE SUB(A, N, X, F) DIMENSION A(N) ... Y=F(I)+1 X=A(I)+1 ... END 虚参A由说明语句可知是一个数组名,子程序表达式中A(I)的形式是数组元素的引用。N和X分别是整型和实型变量名。虚参中,F是以F(I)的形式出现在表达式中,在FORTRAN中,F(I)的形式可能是数组元素的引用或者可能是函数的调用。由于在SUB子程序中并没有说明F为数组名,因此FORTRAN编译程序根据上下文关系确定F为实型函数名。又如以下子例行程序中: SUBROUTINE SUB(X, P) ... CALL P ... END 由于虚参P出现在CALL语句中,因此确定P为子例行程序名。 在虚参中的函数名、子例行程序名(如以上的F、P)只是一个虚设的名字,它并不代表程序中实际存在的某个函数名或子例行程序名,实际的函数名或子例行程序名要在调用时通过

文档评论(0)

kabudou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档