数组的使用及Fortran函数

上传人:宝路 文档编号:49965275 上传时间:2018-08-05 格式:PPT 页数:44 大小:5.52MB
返回 下载 相关 举报
数组的使用及Fortran函数_第1页
第1页 / 共44页
数组的使用及Fortran函数_第2页
第2页 / 共44页
数组的使用及Fortran函数_第3页
第3页 / 共44页
数组的使用及Fortran函数_第4页
第4页 / 共44页
数组的使用及Fortran函数_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《数组的使用及Fortran函数》由会员分享,可在线阅读,更多相关《数组的使用及Fortran函数(44页珍藏版)》请在金锄头文库上搜索。

1、 1.1. 数组引用数组引用方法方法2.2. 数组逻辑结构和存储结构数组逻辑结构和存储结构3.3. 数组的输入输出数组的输入输出4.4. Fortran Fortran 子程序概述子程序概述5.5. 语句函数语句函数6.6. 外部函数子程序外部函数子程序7.7. 内部函数子程序内部函数子程序8. 8. 应用举例应用举例9. 9. 作业作业第七讲 数组的使用及Fortran函数第七讲 数组的使用及Fortran函数7.1 数组引用方法/概述7.1 数组引用方法l数组组声明只是确定了一个数组组的类类型、维维数和元素个数。l在程序中需要引用数组组的某个元素、某些元素和全部元素,或者给给数组组 元素赋

2、赋予新的值值, l数组组元素可参与某种运算,可作为为操作数放在表达式中。 示例程序:INTEGER : num(-2:2),sum=0.0num(-2)=100;num(-1)=200;num(0)=300;num(1)=400;num(2)=500av1=(num(-2)+num(-1)+num(0)+num(1)+num(2)/5.0DO I= -2,2sum=sum+num(I)ENDDOav2=sum/5.0WRITE(*,*) av1=,av1WRITE(*,*) av2=,av2ENDuu 概述uu 格式uu 检测uu 示例第七讲 数组的使用及Fortran函数7.1 数组引用方法

3、/格式7.1 数组引用方法uu 概述uu 格式uu 检测uu 示例l数组组引用一般格式:(1) 按下标引用 数组名(数组下标,数组下标)数组下标算术表达式:算术表达式(2) 按整体引用 数组名如:INTEGER id(10)id=25 !等价id(1)=25;id(2)=25;id(10)=25id(1)=2*id(1); id(5)=3*id(5); id(10)=2*id(2)+3*id(9)id(2:4)=15; id(6:9)=35 id(:10)=999 !等价于id(1:10)=999步骤 id(1) id(2) id(3) id(4) id(5) id(6) id(7) id(8

4、) id(9) id(10)1 25 25 25 25 25 25 25 25 25 25 2 50 25 25 25 75 25 25 25 25 125 3 50 15 15 15 75 35 35 35 35 1254 999 999 999 999 999 999 999 999 999 999第七讲 数组的使用及Fortran函数7.1 数组引用方法/检测7.1 数组引用方法l数组组引用要保证证下标值标值 落在下界和上界之间间,否则将产生严重后果。l使用内部函数(UBOUND、LBOUND)分别检测检测 数组组的上界和下界。 UBOUND(数组组名 , DIM=) LBOUND(数组

5、组名 , DIM=) 可检测某一维(指定维数,有第二参数),结果为整数。也可检测所有维(不指定维数,缺第二参数),结果为一维整型数组。例:INTEGER num(-5:-1,11,15,-2:2)LBOUND(num,1)等于-5UBOUND(num,1)等于-1LBOUND(num)等于(/-5,11,-2/)UBOUND(num)等于(/-1,15,2)uu 概述uu 格式uu 检测uu 示例第七讲 数组的使用及Fortran函数7.1 数组引用方法/示例7.1 数组引用方法 INTEGER arr(-5:3,100:110,4)INTEGER(1) ub(3),ub1,ub2,ub3,l

6、b(3),lb1,lb2,lb3ub1=UBOUND(arr,1); ub2=UBOUND(arr,DIM=2); ub3=UBOUND(arr,3)ub=UBOUND(arr)lb1=LBOUND(arr,1); lb2=LBOUND(arr,DIM=2); lb3=LBOUND(arr,3)lb=LBOUND(arr)WRITE(*,*) 函数UBOUND(arr,1)求数组arr第1维的下标上界是:,ub1WRITE(*,*) 函数UBOUND(arr,DIM=2)数组arr第2维的下标上界是:,ub2WRITE(*,*) 函数UBOUND(arr,3)求数组arr第3维的下标上界是:,

7、ub3WRITE(*,*) 函数UBOUND(arr)求数组arr所有维的下标上界依次是:,ubWRITE(*,*) 函数LBOUND(arr,1)求数组arr第1维的下标下界是:,lb1WRITE(*,*) 函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:,lb2WRITE(*,*) 函数LBOUND(arr,3)求数组arr第3维的下标下界是:,lb3WRITE(*,*) 函数LBOUND(arr)求数组arr所有维的下标下界依次是:,lbEND (运行结果)uu 概述uu 格式uu 检测uu 示例第七讲 数组的使用及Fortran函数7.1 数组引用方法/示例/运行结

8、果7.1 数组元素引用 INTEGER arr(-5:3,100:110,4)INTEGER(1) ub(3),ub1,ub2,ub3,lb(3),lb1,lb2,lb3ub1=UBOUND(arr,1); ub2=UBOUND(arr,DIM=2); ub3=UBOUND(arr,3)ub=UBOUND(arr)lb1=LBOUND(arr,1); lb2=LBOUND(arr,DIM=2); lb3=LBOUND(arr,3)lb=LBOUND(arr)WRITE(*,*) 函数UBOUND(arr,1)求数组arr第1维的下标上界是:,ub1WRITE(*,*) 函数UBOUND(arr

9、,DIM=2)数组arr第2维的下标上界是:,ub2WRITE(*,*) 函数UBOUND(arr,3)求数组arr第3维的下标上界是:,ub3WRITE(*,*) 函数UBOUND(arr)求数组arr所有维的下标上界依次是:,ubWRITE(*,*) 函数LBOUND(arr, 1)求数组arr第1维的下标下界是:,lb1WRITE(*,*) 函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:,lb2WRITE(*,*) 函数LBOUND(arr, 3)求数组arr第3维的下标下界是:,lb3WRITE(*,*) 函数LBOUND(arr)求数组arr所有维的下标下界依次

10、是:,lbEND (运行结果)运行程序,输出结果为:函数UBOUND(arr, 1)求数组arr第1维的下标上界是: 3函数UBOUND(arr,DIM=2)数组arr第2维的下标上界是: 110函数UBOUND(arr, 3)求数组arr第3维的下标上界是: 4函数UBOUND( arr )求数组arr所有维的下标上界依次是: 3 110 4函数LBOUND(arr, 1)求数组arr第1维的下标下界是: -5函数LBOUND(arr,DIM=2)数组arr第2维的下标下界是:100函数LBOUND(arr, 3)求数组arr第3维的下标下界是: 1函数LBOUND( arr )求数组arr

11、所有维的下标下界依次是: -5 100 1uu 概述uu 格式uu 检测uu 示例第七讲 数组的使用及Fortran函数7.2 数组的逻辑结构和存储结构/概述7.2 数组的逻辑结构和存储结构l数组组是复杂数据结构,有逻辑结构和存储结构两大特征。l数组逻辑结构:数组是一个与计算机实现无关的抽象的数据表。l数组存储结构:数组是一个与计算机实现有关的具体的数据表(线性表 ),连续存储在若干存储单元中。对于一维数组,其逻辑结构是一个线性表。存储结构是一个线性表。对于二维数组,其逻辑结构是矩阵,存储结构是一个线性表。对于三维数组,其逻辑结构是三维实体,存储结构是一个线性表。uu 概述uu 一维uu 二维

12、uu 三维uu 位置第七讲 数组的使用及Fortran函数7.2 数组的逻辑结构和存储结构/一维7.2 数组的逻辑结构和存储结构l数组说明:INTEGER a(9)。l逻辑结构、存储结构、相互关系:逻辑结构 存储结构a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9)a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9)uu 概述uu 一维uu 二维uu 三维uu 位置第七讲 数组的使用及Fortran函数7.2 数组的逻辑结构和存储结构/二维7.2 数组的逻辑结构和存储结构l数组说明:INTEGER a(3,4)。l逻辑结

13、构、存储结构、相互关系:uu 概述uu 一维uu 二维uu 三维uu 位置第七讲 数组的使用及Fortran函数7.2 数组的逻辑结构和存储结构/三维7.2 数组的逻辑结构和存储结构l数组说明:INTEGER a(3,2,4)。l逻辑结构、存储结构、相互关系:uu 概述uu 一维uu 二维uu 三维uu 位置第七讲 数组的使用及Fortran函数7.2 数组的逻辑结构和存储结构/位置7.2 数组的逻辑结构和存储结构l数组说明:INTEGER a(L1:U1,L2:U2,Ln:Un) 。l逻辑结构数组元素a(i,j,k,r,s)对应存储结构第几个元素计算:(U1-L1+1)(U2-L2+1)(U

14、n-1-Ln-1+1)(s-Ln)+(U1-L1+1)(U2-L2+1)(Un-2-Ln-2+1)(r-Ln-1)+ +(U1-L1+1)(U2-L2+1)(k-L3)+(U1-L1+1)(j-L2)+i-L1+1l例:三维数组声明 INTEGER a(-5:8,-3:4,10,15),有672个数组元素/数组元素a(2,1,13)在其存储结构中位于第400个元素。通过计算得到:8-(-5)+14-(-3)+1(13-10)+8-(-5)+11-(-3)+2-(-5)+1=1483+144+8=400uu 概述uu 一维uu 二维uu 三维uu 位置第七讲 数组的使用及Fortran函数7.3

15、 数组的输入输出/使用DO循环语句7.3 数组的输入输出uu 使用使用DO循环语句uu 使用使用隐含DO循环uu 使用数组名片段使用数组名片段l使用DO循环语环语 句输输入输输出部分或全部数组组元素。 INTEGER arr(3,4)DO i=1,3 !输入全部元素DO j=1,4READ(*,*) arr(i,j)ENDDOENDDODO i=1,3 !输出全部元素DO j=1,4WRITE(*,*) arr(i,j)ENDDOENDDO注意:每行输入输出一个元素值(示例)第七讲 数组的使用及Fortran函数7.3 数组的输入输出/使用隐含DO循环7.3 数组的输入输出l使用隐含DO循环输环输 入输输出部分或全部数组组元素。 INTEGER arr1(8),arr2(3,4)READ(*,*) (arr1(I),I=1,8,2) !输入第1、3、5、7数组元素READ(*,*) (arr1(I),I=1,8) !输入全部元素WRITE(*,*) (arr1(I),I=1,8,2) !输出1、3、5、

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

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