fortran课件chap06程序设计_第1页
fortran课件chap06程序设计_第2页
fortran课件chap06程序设计_第3页
fortran课件chap06程序设计_第4页
fortran课件chap06程序设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FORTRAN

95/2003程序设计第六章了解怎么样定义、初始化和使用数组学习怎么样使用整个数组操作来实现 单语句对整个数组中数据的操作了解怎样使用部分数组学习怎样读和写数组和部分数组第六章数组(array)是一组类型相同、且用单个名字来引用的变量或常量,这组数值占用计算机内存中的连续若干个位置,数组中的单个数值称为数组元素(arrayelement),数组元素用数组名和指向特定数组位置的下标(subscript)来标识。第六章数组是非常有用的工具,他们允许我们使用一条简单的DO循环把通用计算反复地作用到多个不同的数据项上。例如,假设要计算100个不同实数的平方根,若数据存储为一个由100个实型数值组成的数组元素,那么代码DOi

=1,100a(i)=SQRT(a(i))ENDDO将计算每个实数的平方根,然后回存它们到原来的内存位置。第六章在使用数组之前,它包含的元素类型和个数必须用类型声明语句来向编译器声明,以便编译器知道数据按怎样的顺序存储在数组中,以及需要多少内存来存储数组。例如,含有16个元素的实型数组voltage可以被如下声明:REAL,

DIMENSION(16)

::

voltage相似的,50个长度为20位字符的数组变量可以如下声明:CHARACTER(len20),

DIMENSON(50)

::

last_name第六章数组可以用多个下标来声明,以组成二维或多维数组。这些数组可以很方便地表示常规情况下多个维度组成的数据,如地图信息、平地上测量的温度等。第六章也可以定义数组常量(arrayconstant),一个数组常量完全是由常量组成的数组。通过让常量取特殊定界符之间的数值来定义数组常量,特定定界符称为数组构建器(array

constructor)。Fortarn95数组构建器的起始定界符是(/,结束定界符是/)。例如,下面的表达式定义了含有5个整型元素的数组常量。(/

1,

2,

3,

4,

5

/)第六章在Fortran语句中使用数组元素数组元素就像普通变量数组的每个元素就好比其他的变量,即数组元素可以用在同类型的普通变量出现的地方,可以包含在算术和逻辑表达式中,表达式的结果也可以赋给数组元素。第六章6.2.2数组元素初始化就像普通变量一样,必须在使用之前初始化数组取值。数组元素可以用下面的三种方法之一来初始化:用赋值语句初始化数组。编译时在类型声明语句中初始化数组。用READ语句初始化数组。第六章6.2.3改变数组下标的取值范围下列三个数组都由5个元素组成REAL,

DIMENSION(5)

::

a1REAL,

DIMENSION(-2:2)

::

b1REAL,

DIMENSION(5:9)

::

c1宽度=上界值–下界值+1第六章6.2.4数组下标越界用整型下标可以访问数组的每个元素。用来访问数组元素的整数取值范围取决于声明的数组宽度。对于如下声明的实数数组REAL,DIMENSION(5)::a整型下标1~5能访问数组的元素。所有其他整数都不能用作下标,因为不对应着能分配的内存位置。这样的整数下标被说成是“对数组来说越界了”。但在程序中,错用和试图访问越界元素会发生什么呢?第六章对于这个问题,答案非常复杂。因为对不同的处理机来说,表现是不一样的。在某些处理机上运行Fortran程序将检查每个用来引用数组的下标,看它是否越界,如果检测到越界,程序将给出错误信息,并停止运行。不幸的是这种越界检查消耗大量计算机的时间,程序会运行的很慢。为使程序更快运行,大多是Fortarn编译器越界检查是可选的。第六章数组声明中使用有名常数在许多Fortran程序中,使用数组来储存大量的信息。程序能处理的信息量取决于含有信息的数组大小。如果数组相对很小,程序将很小,不需要多少内存来运行,但是它仅能处理少量的数据。另一方面,如果数组很大,程序将能处理很多信息,但是它需要许多内存来运行。这样一个程序中的数组的大小常常会变化,以便它对于不同的问题或在不同的处理机上运行的更好。第六章好方法是用有名常数来声明数组的大小,用有名常数很容易改变Fortran程序中数组的大小。下列代码中,用简单修改单个有名常数WAX_SIZE可以很轻易地改变所以数组的大小。INTEGER,PARAMETER::MAX_SIZE=1000REAL::array1(MAX_SIZE)REAL::array2(MAX_SIZE)REAL::array3(2*MAX_SIZE)这可以看成是一个小技巧,但对于正确维护大的Fortran程序非常重要。第六章假如程序中所以相关的数组的大小都用有名常数来声明那么以后可以更简便地修改该程序。想象一下它将会怎样呢?如果不得不在一个五万条语句组成的程序行上定位和修改每一个关于数组大小的引用值。这一处理需要花费两周时间来完成和调试。相反,设计好程序中数组大小的表示,用5分钟就能修改好程序,因为只要在代码中修改一条语句。第六章操作整个数组在一定的环境下,整个数组(wholearray)可用于算术计算,就好像它们是普通的变量。如果两个数组用同样的结构,那么可以对它们使用普通的算术操作。第六章操作部分数组局部数组被称为部分数组(sectionarray)。部分数组用下标三元组(subscript

triple)或向量下标(vectorsubscript)代替数组下标来指定。下标三元组的常见形式是

subscript_1:subscript_2:stride第六章数组元素的输入和输出

WRITE(*,100)(a(i),i=1,5)100

FORMAT(1X,’a=‘,5F10.2)第六章什么时候该用数组?通常,如果必须要很多或全部数据同时储存在计算机内存中,为了有效解决问题,那么对于解决问题来说,用数组存储数据是很合理的。反之,不需要数组。第六章如果不需要,但是程序中使用了数组,会产生什么错呢?有两个主要问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论