欢迎来到天天文库
浏览记录
ID:11088946
大小:132.50 KB
页数:17页
时间:2018-07-09
《fortran基本计算之赋值语句》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第9章 基本计算(一)赋值语句从计算机的实际状态来看,给出表达式并不意味着计算的开始,真正能够驱动计算的是可执行语句,而最直接驱动表达式的计算过程的就是赋值语句,完成一个赋值步骤,就意味着机器的状态的局部或全局发生了一个根本的变化。从语法的角度来看,一个表达式还只是一个比较复杂的复合词汇,还不能构成一个完整的语句,而赋值语句则是一个在语法意义上的完整的语句,表达式在赋值语句中扮演关键的语法作用。从计算问题的角度来看,赋值可以说是基本的计算步骤,考虑一下我们人工计算的过程就可以发现,任何一个完整的计算步骤,都可以说
2、就是一个赋值步骤,特别是公式演算和数值计算,完成一个局部运算过程的标志,往往就是求出某个中间变量的数值或表达式。FORTRAN语言作为一种以公式翻译为初衷的高级语言,它的赋值语句的一般形式就是一个数学等式,当然不是那种公式恒等变换得到的恒等式,而是要把运算的结果赋予一个变量,因此它的一般句法形式为:variable=expressionvariable=>expression可以看到一个赋值语句作为一个完整的语句,分为三个部分:●被赋值的变量●赋值符号●计算(表达式)其中被赋值的变量,通过赋值,就拥有了明确的取值
3、形式,如果该变量含有下标,片断下标或子串范围,则赋值的前提是它们都已经获得具体的取值。基于表达式结果的不同种类,赋值语句分为:● 固有赋值:固有赋值是把任意类型的值赋予一个非指针变量,或把一个指针变量赋予一个与之相关联的目标。● 自定义赋值:自定义赋值得以构成的前提是存在一个可访问的子例行程序,它包含一个具有ASSIGNMENT形式的赋值界面,其属性与自定义赋值语句里的变量和表达式的属性保持一致。● 指针赋值:指针赋值把一个指针变量关联到它的目标对象,或者说把一个目标对象赋予到一个指针变量。在形式上它
4、使用符号=>。● 过滤数组赋值:这个赋值过程是对满足一定条件的数组元素进行赋值,而不是对数组整体进行赋值。● 并行指标数组赋值。这种赋值形式给出了一种有效的并行机制,能够大规模地对多重指标变量进行赋值。下面我们将分节讨论这5类赋值形式,首先给出一些例子如下:【例9-1】X=X-2实型的固有赋值CHAR(5:8)=“M_30”逻辑型的固有赋值SAMPLE=NOTE_2结构的固有赋值STRING=”MYSAMPLE”可变串结构的自定义赋值WHERE(X/=0.0) A=B/XENDWHERE过滤数组赋值FO
5、RALL(I=0:N,J=1:N) A(I,J)=3.0/(I-J+2) B(I,J)%PTR=>C(I:N,J:N)ENDFORALL PTR=>X并行指标结构 并行指标赋值 并行指标指针赋值 指针赋值 9.1 固有赋值语句所谓固有赋值的主要特征就是被赋值的变量不能是指针变量,赋值语句本身就是对变量的定义或重定义,变量的取值就是直接计算赋值语句右边的表达式所得。不需要额外的子程序来加以说明。下面说明固有赋值语句的用法:● 固有赋值中变量与表达式所能够具有的类型,以及它们的一致性要求见表9-1。表9-1
6、固有赋值中变量与表达式的类型变量的类型表达式的类型INTEGERINTEGER,REAL,COMPLEXREALINTEGER,REAL,COMPLEXCOMPLEXINTEGER,REAL,COMPLEXCHARACTER变量为具有相同种别参数的CHARACTERLOGICALLOGICAL派生类型变量为相同的派生类型 ● 如果变量是标量,那么表达式也必须是标量。● 如果变量是数组,那么表达式或者是标量,或者是相同形状的数组。● 如果变量是显形数组,那么变量的形状可以通过说明语句说明。● 如果变
7、量是待定形数组,那么它的形状由ALLOCATE语句,或指针赋值语句确定。● 如果变量是哑形数组,那么它的形状由变量里的片断下标,或实元确定。变量不能是哑尺度数组,除非存在含有最后一个维度上的上界的片断下标,或数组的下标向量,或者标量下标。● 表达式的形状由算元的形状,表达式里的运算,以及其中的函数引用决定。● 如果变量是一个指针,那么它必定已经关联到一个目标,赋值语句把表达式的值赋予指针的目标。指针所关联的目标可以是一个数组,指针决定数组的秩,而每个维度的宽度则由目标决定。● 在赋值过程本身被执行
8、之前,赋值语句右边表达式以及表达式和变量里面包含的下标与下标片断表达式,都必须预先求值完毕。● 如果变量的类型以及种别参数和表达式的不一致,那么在执行赋值语句之前,还必须完成必要的针对表达式的类型转换,固有转换函数见下表9-2:表9-2 固有转换函数变量的类型被赋的值INTEGERINT(expression,KIND(variable))REALREAL(expre
此文档下载收益归作者所有