第15章通讯.doc

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

第15章 ?通??? 讯 计算的过程除了指令的序列之外,还有一个极端重要的部分,就是通讯。 试想一下人工的计算过程,几乎每做一个计算步骤,都有可能需要引用很多东西,例如其他计算的结果,问题的初始值,其他的现成公式,或已经推导出来的公式,或者引用别人的计算成果等等,这种引用在本质上就是通讯,即一个相对独立的计算步骤,或计算过程,都不可能是真正独立的,它总是需要得到来自外部的信息,无论是外部的数据,还是外部的计算,只要是叫得出名字的东西,都有可能被用到。而该计算步骤或计算过程本身,不也是有可能被别的计算所使用吗!当然这一切都是通过草稿纸,通过我们的记忆,通过论文来进行的。这就是计算当中的通讯,通过所有这些通讯才能使得计算成为一个整体,才能使得计算真正是面向了本来是一个整体的真实世界的问题。 相应的,当我们使用FORTRAN语言来描述计算任务的时候,它同样需要描述其中的通讯过程,而且还得是严格地把一切通讯过程都毫无遗漏地描述出来。同样地,一个FORTRAN程序正是通过这些通讯而把所有程序单位,乃至所有的语句或指令单位,都连接起来,才能构成一个能够解决问题的计算过程。 那么这种通讯利用FORTRAN语言是如何进行的呢?还是让我们回到人工计算的过程,因为本质上,一个FORTRAN计算程序描述的就是一个人工计算过程。 首先我们需要对想使用的对象命名,才能称呼它们,然后才谈得上进行引用。 然而我们不能够指望给世界上的每一个具体对象都给予一个唯一的名称,那么做既不现实,也忽略了事物之间所具有的紧密联系。因此在同一个名称可以称呼不同的对象的情况下,我们需要一个约定,就是一个名称必定跟随有关该名称的有效范围的说明。 在给所有的对象起了合适的名称之后,就需要考虑建立在不同的场合里面出现的对象之间的联系,例如在波函数里面出现的正弦函数与在交流电电流公式里面出现的正弦函数,因为它们的名称一样,就可以认为是同一个函数。而波函数里面的振幅和交流电电流公式里面的振幅,尽管名称一样,却不能够应用于同样的公式,例如波函数里面的振幅可以引用到几率???公式里面,而几率幅公式对于交流电却没有任何意义。 所以建立合适的,明确的关联是第3个重要的任务。 最后,我们可能还得检验某个对象是否具备进行通讯的资格,例如在有关交流电的计算任务当中,如果不小心引用了几率幅的概念,显然它没有任何用处,只会捣乱,因此检验一个对象是否具备良好的定义,是我们在进行计算通讯的同时不可遗忘的任务。 好了,上面分析出来的4个概念:命名,名称的有效范围,关联,良好的定义,构成了FORTRAN语言描述通讯时最核心的概念。运用FORTRAN语言来表达相应的意思就是: ●??? 名称; ●??? 作用域; ●??? 关联; ●??? 定义状态。 即任何的FORTRAN程序里面的对象都需要给予一个名称,而所有的名称都能够按照变量与值的关系,建立相对的层级结构。 作用域就是一个FORTRAN程序对象能够被识别,被访问的程序单位的范围。 关联就是在相同名称或不同名称下,进行相应的值的交换。 定义状态就是必须能够随时确定一个变量是否具有良好的定义,从而能够判别基于该变量的通讯是否有效。 可以形象地说,这4个概念完备地描述了程序的数据流的一言一行,一动一止。 下面我们就分别说明通讯的这4个核心概念。 15.1? 通讯与名称 给对象命名是进行有关对象的通讯的前提。(试想一下我们要告诉别人“起火了”,如果我们不知道描述“火”的词汇,那该如何说清楚意思呢?) 为了保证通讯时不发生歧义,最极端的做法就是给世界上的每一个对象给予一个唯一的名称。然而这是不可能实现的,因为世界是无限大的。不过即使在有限的范围内,也是非常不明智的。 例如在FORTRAN语言里面已经预先定义了名称SUM的涵义,即用名称SUM来命名一个固有函数,表示一种作用于数组的运算。然而如果在一个程序里面,并没有涉及到任何与数组有关的计算,那么我们完全可以安全地使用名称SUM来形象地命名一个自定义的运算,例如两个属于派生类型的对象的组合。运用容易记忆的英语词汇或缩写来表示具有相应涵义的对象,这是一种良好的编程习惯,不能为了避免名称的重复而被迫记忆大量的名称。 又例如一个大型的FORTRAN程序,事实上是无法由一个人编写完成的,那么如果由多个人分块编写的话,又如何能够保证他们使用的名称是绝对一致的呢?即相同的对象具有相同的名称,不同的对象具有不同的名称。这对于每个小程序单位都有成千上万个语句的大型程序,是绝对不现实的要求,也是完全不必要的要求。 因为不同对象的重名问题,可以很轻易地通过约定名称的有效范围而获得解决,这就是下节讨论的作用域的概念。 15.2? 作用域 任何具有名称的对象都具有相应的作用域,也就是存在一个明确的约定,该名称在FORTRAN程序的哪个范

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档