- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
fortran95教程9.
第9章? 基本计算(一)赋值语句
从计算机的实际状态来看,给出表达式并不意味着计算的开始,真正能够驱动计算的是可执行语句,而最直接驱动表达式的计算过程的就是赋值语句,完成一个赋值步骤,就意味着机器的状态的局部或全局发生了一个根本的变化。
从语法的角度来看,一个表达式还只是一个比较复杂的复合词汇,还不能构成一个完整的语句,而赋值语句则是一个在语法意义上的完整的语句,表达式在赋值语句中扮演关键的语法作用。
从计算问题的角度来看,赋值可以说是基本的计算步骤,考虑一下我们人工计算的过程就可以发现,任何一个完整的计算步骤,都可以说就是一个赋值步骤,特别是公式演算和数值计算,完成一个局部运算过程的标志,往往就是求出某个中间变量的数值或表达式。
FORTRAN语言作为一种以公式翻译为初衷的高级语言,它的赋值语句的一般形式就是一个数学等式,当然不是那种公式恒等变换得到的恒等式,而是要把运算的结果赋予一个变量,因此它的一般句法形式为:
variable = expression
variable = expression
可以看到一个赋值语句作为一个完整的语句,分为三个部分:
● 被赋值的变量
● 赋值符号
● 计算(表达式)
其中被赋值的变量,通过赋值,就拥有了明确的取值形式,如果该变量含有下标,片断下标或子串范围,则赋值的前提是它们都已经获得具体的取值。
基于表达式结果的不同种类,赋值语句分为:
●??? 固有赋值:固有赋值是把任意类型的值赋予一个非指针变量,或把一个指针变量赋予一个与之相关联的目标。
●??? 自定义赋值:自定义赋值得以构成的前提是存在一个可访问的子例行程序,它包含一个具有ASSIGNMENT形式的赋值界面,其属性与自定义赋值语句里的变量和表达式的属性保持一致。
●??? 指针赋值:指针赋值把一个指针变量关联到它的目标对象,或者说把一个目标对象赋予到一个指针变量。在形式上它使用符号=。
●??? 过滤数组赋值:这个赋值过程是对满足一定条件的数组元素进行赋值,而不是对数组整体进行赋值。
●??? 并行指标数组赋值。这种赋值形式给出了一种有效的并行机制,能够大规模地对多重指标变量进行赋值。
下面我们将分节讨论这5类赋值形式,首先给出一些例子如下:
【例9-1】
X=X-2 实型的固有赋值 CHAR(5:8)=“M_30” 逻辑型的固有赋值 SAMPLE=NOTE_2 结构的固有赋值 STRING=”MYSAMPLE” 可变串结构的自定义赋值 WHERE(X/=0.0)
?? A=B/X
END WHERE 过滤数组赋值 FORALL(I=0:N,J=1:N)
? A(I,J)=3.0/(I-J+2)
? B(I,J)%PTR=C(I:N,J:N)
END FORALL
?
PTR=X 并行指标结构
?? 并行指标赋值
?? 并行指标指针赋值
?
?
指针赋值 ?
9.1? 固有赋值语句
所谓固有赋值的主要特征就是被赋值的变量不能是指针变量,赋值语句本身就是对变量的定义或重定义,变量的取值就是直接计算赋值语句右边的表达式所得。不需要额外的子程序来加以说明。
下面说明固有赋值语句的用法:
●??? 固有赋值中变量与表达式所能够具有的类型,以及它们的一致性要求见表9-1。
表9-1固有赋值中变量与表达式的类型
变量的类型 表达式的类型 INTEGER INTEGER,REAL,COMPLEX REAL INTEGER,REAL,COMPLEX COMPLEX INTEGER,REAL,COMPLEX CHARACTER 变量为具有相同种别参数的CHARACTER LOGICAL LOGICAL 派生类型 变量为相同的派生类型 ?
●??? 如果变量是标量,那么表达式也必须是标量。
●??? 如果变量是数组,那么表达式或者是标量,或者是相同形状的数组。
●??? 如果变量是显形数组,那么变量的形状可以通过说明语句说明。
●??? 如果变量是待定形数组,那么它的形状由ALLOCATE语句,或指针赋值语句确定。
●??? 如果变量是哑形数组,那么它的形状由变量里的片断下标,或实元确定。变量不能是哑尺度数组,除非存在含有最后一个维度上的上界的片断下标,或数组的下标向量,或者标量下标。
●??? 表达式的形状由算元的形状,表达式里的运算,以及其中的函数引用决定。
●??? 如果变量是一个指针,那么它必定已经关联到一个目标,赋值语句把表达式的值赋予指针的目标。指针所关联的目标可以是一个数组,指针决定数组的秩,而每个维度的宽度则由目标决定。
●??? 在赋值过程本身被执行之前,赋值语句右边表达式以及表达式和变量里面包含的下标与下标片断表达式,都必须预先求值完毕。
●??? 如果变量的类型以及种别参数和表达式的不一致,那么
文档评论(0)