资源描述:
《FORTRAN语言第7章(共8章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、FOTRAN77/90程序设计土木工程学院2008.11第一节数组概念第二节数组的说明与引用第三节数组元素的存储结构第四节数组的输入输出第五节数组应用-程序举例第七讲数组第一节数组的概念前面章节涉及的问题都是比较简单,编写的程序也不复杂,这些程序的一个突出特点是所处理的数据量非常少,采用的数据类型都是简单的内部数据类型,使用的变量都是普通变量。然而在实际的科研数值计算中,往往遇到的是一些涉及大量数据的复杂问题,如:?思考:输入某班50个学生的成绩,统计平均成绩以及高于平均分学生的人数。定义50个变量存放各个学生的
2、成绩?定义1个变量,循环读入各个学生的成绩,同时累计50个学生的总成绩,进而求出平均成绩;当统计高于平均分学生人数时,再次输入50个成绩?不合适可以不合适解决方法:使用数组!第一节数组的概念求解100元一次方程组。求解高阶微分方程。计算5050阶矩阵的转置矩阵。对某班30名学生的学习成绩进行排序处理。以上问题都要涉及几十、几百、几千,甚至上万个数据,如果在程序中采用简单的内部数据类型和变量来求解这类问题,其难度将大大增加,甚至无法设计和编写程序。第一节数组的概念!统计15个数的平均值及大于平均值的数据个数。使用
3、普通变量和顺序结构实现。REALa1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,sum,avINTEGERnumREAD*,a1,a2,a3,a4,a5,a6,a7,a8,aa9,a10,a11,a12,a13,a14,a15sum=a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15av=sum/15;num=0IF(a1>av)num=num+1IF(a2>av)num=num+1IF(a15>av)num=
4、num+1PRINT*,'平均值为:',av;PRINT*,'大于平均值的数据个数:',numEND在输入数据时,用不同的名字引用每一个存储单元比较烦琐。如果有100个数需要处理,将需要一个长的输入语句,其中每个变量被列出一次。第一节数组的概念!统计15个数的平均值及大于平均值的数据个数。使用数组和循环结构实现。PROGRAMexampleREALa(20),sum,avINTEGERnumsum=0.0DOi=1,15READ*,a(i)sum=sum+a(i)ENDDOav=sum/15!该程序变量少,程序短
5、,数据输入一遍。num=0DOi=1,15IF(a(i)>av)num=num+1ENDDOPRINT*,'平均值为:',avPRINT*,'大于平均值的数据个数为:,numEND简单变量是用来代表一个数据;而把具有相同类型的一批数据看成是一个整体,叫做数组。给数组取一个名字叫数组名,所以数组名代表一批数据,数组中的每一个数据称为数组元素,它可通过顺序号(下标)来区分。一、变量与数组的区别第一节数组的概念只要给出数组名和下标就可以表示某一数组元素。例如:一个班30个学生的FORTRAN语言课程成绩组成一个数组G,
6、每个学生的成绩可表示为:G(1),G(2),G(3),…,G(i),…G(30)例:30个学生4门课程的成绩S(1,1),S(1,2),S(1,3),S(1,4)S(2,1),S(2,2),S(2,3),S(2,4)……S(30,1),S(30,2),S(30,3),S(30,4)在上例中,区分G数组的元素需要一个顺序号(下标),故称为一维数组;而区分S数组的元素需要两个顺序号,故称为二维数组,其中第一个下标代表元素所在行号,第二个下标为该元素所在列号。一、变量与数组的区别二、数组的分类引入数组以后,让一批同类型
7、数据共享一个名字,不必为每一对象都取一个名字。数组元素是按顺序号连续存放的,我们可以用循环语句控制下标的变化,这给在同一方式下处理多个同类型数据带来极大方便。例如:第一节数组的概念REALP(5),AVER!定义P数组DOI=1,5READ(*,*)P(I)!输入成绩并存入P数组AVER=AVER+P(I)!求成绩之和ENDDOAVER=AVER/5!求平均成绩一、数组说明的内容第二节数组的说明与引用程序中所有数组都要先说明该数组的名字、类型、维数及大小,以便编译系统给数组分配相应的存储单元。1)数组名:数组和变
8、量一样,也用标识符来命名;2)数组的类型:数组的类型由数组元素的类型来决定;3)数组的维数:为了区分数组元素所需顺序号(下标)的个数;4)数组的大小:数组中包含数组元素的个数,由数组每维下标的上界和下界来决定。一、数组说明的内容数组名、数组的维数和每一的上、下界的定义要用到数组说明符。其一般形式为:数组名(维说明符[,维说明符]…)维说明符的个数就是数组的维数。维说明符至