FORTRAN语言第7章(共8章)

上传人:平*** 文档编号:46199402 上传时间:2018-06-23 格式:PPT 页数:143 大小:3.18MB
返回 下载 相关 举报
FORTRAN语言第7章(共8章)_第1页
第1页 / 共143页
FORTRAN语言第7章(共8章)_第2页
第2页 / 共143页
FORTRAN语言第7章(共8章)_第3页
第3页 / 共143页
FORTRAN语言第7章(共8章)_第4页
第4页 / 共143页
FORTRAN语言第7章(共8章)_第5页
第5页 / 共143页
点击查看更多>>
资源描述

《FORTRAN语言第7章(共8章)》由会员分享,可在线阅读,更多相关《FORTRAN语言第7章(共8章)(143页珍藏版)》请在金锄头文库上搜索。

1、FOTRAN77/90程序设计土木工程学院 2008.11第一节 数组概念第二节 数组的说明与引用第三节 数组元素的存储结构第四节 数组的输入输出第五节 数组应用-程序举例第七讲 数组第一节 数组的概念前面章节涉及的问题都是比较简单,编写的程序也不复杂 ,这些程序的一个突出特点是所处理的数据量非常少,采用的数 据类型都是简单的内部数据类型,使用的变量都是普通变量。 然而在实际的科研数值计算中,往往遇到的是一些涉及大量数 据的复杂问题,如:?思考:输入某班50个学生的成绩,统计平均成绩以及高于 平均分学生的人数。l 定义50个变量存放各个学生的成绩?l 定义1个变量,循环读入各个学生的成绩,同时

2、累计50个学生的总成绩,进而求出平均成绩;l当统计高于平均分学生人数时,再次输入50个成绩? 不合适可以 不合适解决方法:使用数组!第一节 数组的概念l求解100元一次方程组。l求解高阶微分方程。l计算5050阶矩阵的转置矩阵。l对某班30名学生的学习成绩进行排序处理。 以上问题都要涉及几十、几百、几千,甚至上万 个数据,如果在程序中采用简单的内部数据类型和变 量来求解这类问题,其难度将大大增加,甚至无法设计 和编写程序。 第一节 数组的概念!统计15个数的平均值及大于平均值的数据个数。使用普通变量和顺序结构实现 。REAL a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11

3、,a12,a13,a14,a15,sum,avINTEGER numREAD *,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=0 IF (a1av) num=num+1 IF (a2av) num=num+1IF (a15av) num=num+1PRINT *,平均值为:,av; PRINT *,大于平均值的数据个数:,numEND 在输入数据时,用不同的名字 引用每一个存储单元比较烦琐 。如果有1

4、00个数需要处理, 将需要一个长的输入语句,其 中每个变量被列出一次。第一节 数组的概念!统计15个数的平均值及大于平均值的数据个数。使用数组和循环结构实现。PROGRAM exampleREAL a(20),sum,avINTEGER numsum=0.0DO i=1,15READ *,a(i)sum=sum+a(i)ENDDO av=sum/15!该程序变量少,程序短,数据输入一遍。num=0DO i=1,15IF (a(i)av) num=num+1ENDDO PRINT *,平均值为:,avPRINT *,大于平均值的数据个数为:,numEND 简单变量是用来代表一个数据;而把具有相同

5、类型的一批数据看成是一个整体,叫做数组。给数组取一个名字叫数组名 ,所以数组名代表一批数据,数组中的每一个数据称为数组元 素,它可通过顺序号(下标)来区分。一、变量与数组的区别第一节 数组的概念只要给出数组名和下标就可以表示某一数组元素。例如:一个班30个学生的FORTRAN语言课程成绩组成一个数组 G,每个学生的成绩可表示为: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数组的

6、元素需要一个顺序号(下标),故称 为一维数组;而区分S数组的元素需要两个顺序号,故称为二维数组,其中第一个下标代表元素所在行号,第二个下标 为该元素所在列号。一、变量与数组的区别二、数组的分类引入数组以后,让一批同类型数据共享一个名字,不 必为每一对象都取一个名字。数组元素是按顺序号连续 存放的,我们可以用循环语句控制下标的变化,这给在 同一方式下处理多个同类型数据带来极大方便。例如:第一节 数组的概念REAL P(5),AVER !定义P数组DO I=1,5READ(*,*)P(I) !输入成绩并存入P数组AVER=AVER+P(I) !求成绩之和ENDDOAVER=AVER/5 !求平均成

7、绩一、数组说明的内容第二节 数组的说明与引用程序中所有数组都要先说明该数组的名字、类型、维数及大小,以便编译系统给数组分配相应的存储单元。1)数组名:数组和变量一样,也用标识符来命名;2)数组的类型:数组的类型由数组元素的类型来决定;3)数组的维数:为了区分数组元素所需顺序号(下标)的个数;4)数组的大小:数组中包含数组元素的个数,由数组每维下标的上界和下界来决定。一、数组说明的内容数组名、数组的维数和每一的上、下界的定义要用到数组说明符。其一般形式为: 数组名(维说明符 ,维说明符)维说明符的个数就是数组的维数。维说明符至少1个,最多7个。维说明符的一般形式为: 维下界: 维上界维下界与维上

8、界之间用“ :”分隔,下界为1时,可省略不写。维下界与维上界都只能是整型表达式。维界表达式的值必 须是整数值,而且维上界的值必须大于维下界的值。一、数组说明的内容维说明符的一般形式为: 维下界: 维上界在维界表达式中,允许出现整型常量、整型变量或者星号 “ * ”。不允许出现函数或数组元素。如果在维界表达式中出现整型变量名,则该数组称作可调 数组。如果出现星号“ * ”,则只能用星号作为维的上界,这样的数组叫做假定大小的数组。可调数组和假定大小数组只能出现在子程序,不允许在主程序中使用。说明方法一:用DIMENSION说明数组DIMENSION 数组说明符 ,数组说明符例:DIMENSION

9、A(1:5), B(-1:2) 二、数组说明的方法第二节 数组的说明与引用注意:1)DIMENSION语句是非执行语句,必须放在程序单 位的可执行语句之前; 2)用DIMENSION语句只说明了数组的名字、维数、大小等 特性,但不能说明数组的数据类型。此时,数组类型的说明 方法与变量名相同。 如无特别指明,数组的类型服从IN规则 用类型说明语句指明数组的类型说明方法二:用类型说明语句说明数组类型说明关键字 数组说明符,数组说明符例: INTEGER A(1:5), B(-1:2) 用类型说明语句可以直接说明数组的全部特性。二、数组说明的方法CHARACTER*8 NAME(30)REAL SC

10、ORE(5, 30)说明了字符型数组NAME,数组元素的长度为8,还有 实型数组SCORE。说明方法三:同时使用DIMENSION和类型说明语句说明数组其一般形式为:类型符,DIMENSION(维说明符):数组名例:INTEGER , DIMENSION(1:5) : A, B(-1:2),C DIMENSION属性统一说明大小名字后个别说明大小个别优于统一REAL(4), DIMENSION(1:3,1:4) : D=0 上例中说明了三个整型一维数组A,B,C,一个二维实 型数组D,其中A,C各含有5个元素,B含有4个元素;D中 含有12个元素。在说明数组时,可以在数组名后面给出维说明,这时

11、以 该数组名后的维说明为准。二、数组说明的方法DIMENSION A(1:5), B(-1:2),C(1:3,1:4)INTEGER A,BREAL C数组说明符数组名维说明符1、维:代表下标个数;维数逗号分隔,每维维界下界d1 :上界d2,下界为1时,可省略不写。必须满足d1j时,数组元素值 为i-j+1。INTEGER A(5,5)DO I=1,5DO J=1,5IF(Ij)A(I,j)=I-J+1第五节 给数组赋初值DATA语句是专门给变量、数组和字符子串赋初 值的,其一般格式为:nlist:由变量名、数组名、数组元素名和字符子串组成. 名字之间以逗号(,) 分隔clist:常数和符号常

12、数组成.整数数据项间以 , 分隔每项数据与写上与无符号数字,代表说常数重复r次,nlist 与clist按从左到右的顺序一一对应。变量表列初值表1格式:DATA nlist /clist/,nlist/clist/3与赋值语句的区别DATA语句赋值语句非执行语句执行语句赋值在编译过程完成 赋值在执行语句时完成2功能给变量、数组、数组元素和字符子串提供初值。4例:DATA I,R,D,C/1.2,0.3,3.0DO,(4.0,5.0)/等价于DATA I/1/,R/2.0/,D/3.0DO/,C/(4.0,5.0)/DATA I/1/DATA R/2.0/DATA D/3.0DO/DATA C/

13、(4.0,5.0)/有S和K数组需赋初值DIMENSION S(5),K(2,3)DATA S/1.2,2.3,3.0,4.5,2.8/,K/1 ,2,3,4,5,6/K数组按列有存放,即2 4 61 3 5DATA (S(I),I1,5)/1.2,2.3,3.0,4.5,2.8/, (K(I,J),J1,3),I1,2)/1,3,5, 2, 4, 6/DATA S,K/1.2,2.3,3.0,4.5,2.8,1,2,3, 4,5,6/DIMENSION S(5),K(2,3)DIMENSION S(5),K(2,3)5注意:(1) 变量表列中的变量与初值表中的常量在个数、类型等方面要一一对应

14、。例如,下列各DATA语句都是错误的:DATA A, B, C/2.0, 5.8/DATA A, B, C/2.0, 5.6, 3.5, 10.0/DATA I, K, X/3.6, 4.5, 4.5 /初值表中的数据个数少于变量表列中变量的个数初值表中的数据个数多于变量表列中变量的个数变量表列中的前两个变量是整型,而初值表中 的前两个常量为常数,即它们的类型不一致。若K的初值是10,C的初值是“ FORTRAN 77”,A数组 有4个元素CHARACTER C*10 DIMENSION A(4) DATA K/10/,C/FORTRAN77/ DATA A/1.23,0.5,3.3,1.45

15、/或DATA k,C,A/10, FOTRAN77,1.23,0.5,3.3,1.45/(1) 变量表中变量的个数与对应的初值个数必须相同(2) 变量的类型与初值的类型必须按顺序一一对应(2) 在初值表中如果有n个连续的常量相同,则可以简写为: n常量 例如,DATA语句REAL A(3,2),BDATA A,B/1.0, -1.0, 0.0, 0.0, -1.0, -1.0, -1.0/可以写成DATA A, B/1.0, -1.0, 20.0, 3-1.0/(20.0表示两个连续的0.0, 31.0也表示三个连续的1.0)但特别要注意,31.0不能写成3(1.0),因为 3(1.0) 是一个表达式。若M数组有100个元素,它的前50个元素的初值为0, 后50个元素的初值是1,表示如下:DATA (M(I),I1,50)/50*0/, (M(I),I51,100)/50*1/DIMENSION M (100)或者DATA (M(I),I1,50),(M(I),I=51,100)/50*0 ,50*1/或者DATA M/50*0,50*1/下列DATA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号