数组的使用及Fortran函数.ppt
《数组的使用及Fortran函数.ppt》由会员分享,可在线阅读,更多相关《数组的使用及Fortran函数.ppt(44页珍藏版)》请在三一办公上搜索。
1、1.数组引用方法 2.数组逻辑结构和存储结构 3.数组的输入输出 4.Fortran 子程序概述 5.语句函数 6.外部函数子程序 7.内部函数子程序 8.应用举例 9.作业,第七讲 数组的使用及Fortran函数,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/概述,7.1 数组引用方法,数组声明只是确定了一个数组的类型、维数和元素个数。在程序中需要引用数组的某个元素、某些元素和全部元素,或者给数组元素赋予新的值,数组元素可参与某种运算,可作为操作数放在表达式中。示例程序:INTEGER:num(-2:2),sum=0.0 num(-2)=100;num(-1)=200;num
2、(0)=300;num(1)=400;num(2)=500 av1=(num(-2)+num(-1)+num(0)+num(1)+num(2)/5.0 DO I=-2,2 sum=sum+num(I)ENDDO av2=sum/5.0 WRITE(*,*)av1=,av1 WRITE(*,*)av2=,av2 END,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/格式,7.1 数组引用方法,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/检测,7.1 数组引用方法,数组引用要保证下标值落在下界和上界之间,否则将产生严
3、重后果。使用内部函数(UBOUND、LBOUND)分别检测数组的上界和下界。UBOUND(数组名,DIM=)LBOUND(数组名,DIM=)可检测某一维(指定维数,有第二参数),结果为整数。也可检测所有维(不指定维数,缺第二参数),结果为一维整型数组。例:INTEGER num(-5:-1,11,15,-2:2)LBOUND(num,1)等于-5 UBOUND(num,1)等于-1 LBOUND(num)等于(/-5,11,-2/)UBOUND(num)等于(/-1,15,2),概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.1 数组引用方法/示例,7.1 数组引用方法,I
4、NTEGER 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,DIM=2)数组arr第2维的下标上界
5、是:,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所有维的下标下界依次是:,lbEND(运行结果),概述 格式 检测 示例,第
6、七讲 数组的使用及Fortran函数,7.1 数组引用方法/示例/运行结果,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维的下标
7、上界是:,ub1WRITE(*,*)函数UBOUND(arr,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(*,*)函数LBOUN
8、D(arr)求数组arr所有维的下标下界依次是:,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(ar
9、r)求数组arr所有维的下标下界依次是:-5 100 1,概述 格式 检测 示例,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/概述,7.2 数组的逻辑结构和存储结构,数组是复杂数据结构,有逻辑结构和存储结构两大特征。数组逻辑结构:数组是一个与计算机实现无关的抽象的数据表。数组存储结构:数组是一个与计算机实现有关的具体的数据表(线性表),连续存储在若干存储单元中。对于一维数组,其逻辑结构是一个线性表。存储结构是一个线性表。对于二维数组,其逻辑结构是矩阵,存储结构是一个线性表。对于三维数组,其逻辑结构是三维实体,存储结构是一个线性表。,概述 一维 二维 三维 位置,第
10、七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/一维,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(9)。逻辑结构、存储结构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/二维,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(3,4)。逻辑结构、存储结构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/三维,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(3,2,4)。逻辑结构、存储结
11、构、相互关系:,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.2 数组的逻辑结构和存储结构/位置,7.2 数组的逻辑结构和存储结构,数组说明:INTEGER a(L1:U1,L2:U2,Ln:Un)。逻辑结构数组元素a(i,j,k,r,s)对应存储结构第几个元素计算:(U1-L1+1)(U2-L2+1)(Un-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+1例:三维数组声明 INTEGER a(-5:8,-3:
12、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=400,概述 一维 二维 三维 位置,第七讲 数组的使用及Fortran函数,7.3 数组的输入输出/使用DO循环语句,7.3 数组的输入输出,使用DO循环语句 使用隐含DO循环 使用数组名片段,使用DO循环语句输入输出部分或全部数组元素。INTEGER arr(3,4)DO i=1,3!输入全部元素 DO j=1,4 READ(*,*)arr(i,j)ENDDOEN
13、DDODO i=1,3!输出全部元素 DO j=1,4 WRITE(*,*)arr(i,j)ENDDOENDDO注意:每行输入输出一个元素值,(示例),第七讲 数组的使用及Fortran函数,7.3 数组的输入输出/使用隐含DO循环,7.3 数组的输入输出,使用隐含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、7数组元素WRITE(*,*)(
14、arr1(I),I=1,8)!输出全部元素READ(*,*)(arr2(I,J),J=1,4),I=1,3)!输入全部元素WRITE(*,*)(arr2(I,J),J=1,4),I=1,3)!输出全部元素,注意:每行可输入输出一 个或多个数组元素值,(示例),使用DO循环语句 使用隐含DO循环 使用数组名片段,第七讲 数组的使用及Fortran函数,7.3 数组的输入输出/使用数组名数组片段,7.3 数组的输入输出,使用数组名、数组片段输入输出部分或全部数组元素。INTEGER arr1(8),arr2(3,4)READ(*,*)(arr1(I:I),I=1,8,2)!输入第1、3、5、7数组
15、元素READ(*,*)arr1!按存储结构输入全部元素WRITE(*,*)(arr1(I:I),I=1,8,2)!输出1、3、5、7数组元素WRITE(*,*)arr1!按存储结构输出全部元素READ(*,*)arr2!按存储结构输入全部元素WRITE(*,*)arr2!按存储结构输出全部元素,注意:每行可输入输出一 个或多个数组元素值,(示例),使用DO循环语句 使用隐含DO循环 使用数组名片段,第七讲 数组的使用及Fortran函数,使用DO循环语句输入输出数组示例,第七讲 数组的使用及Fortran函数,使用隐含DO循环输入输出数组示例,输入数据:以行为主输入 12 个矩阵数据,每行输入
16、一个数据:12.5 23.8 54.2 78.992.4 45.3 0 24.484.2 32.8 72.8 43.2输出结果:输出转置后数组:12.5 92.4 84.2 23.8 45.3 32.8 54.2 0.0 72.8 78.9 24.4 43.2,第七讲 数组的使用及Fortran函数,使用数组名数组片段输入输出数组示例,输入数据:按存储结构输入 12 个矩阵数据:12.5,23.8,54.2,78.9,92.4,45.3,0,24.4,84.2,32.8,72.8,43.2输出结果:输出转置后数组:12.5 92.4 84.2 23.8 45.3 32.8 54.2 0.0 7
17、2.8 78.9 24.4 43.2,第七讲 数组的使用及Fortran函数,7.4 Fortran子程序概述/概述,使用顺序结构、选择结构和循环结构可设计和编写一些比较复杂的程序。使用函数和子例行程序能编写编写结构清晰、层次分明、短小简洁的好程序,是编写高质量、高水平、高效率程序的有效手段。通常在设计和编写程序时,会遇到以下三种情况:同一程序内多次出现相同或相似的运算或处理过程。不同程序内多次出现相同或相似的运算或处理过程。程序复杂。在设计和编写程序时,不同程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码)。,概述 说明 标准函数,7.4 Fortran 子程序概述,PROGRA
18、M QR_schmidt!QR法求矩阵特征值 Real,allocatable:A(:,:),Q(:,:),R(:,:),AT(:,:)Complex,allocatable:T(:)Character*20 filename_A,filename_T Filename_A=matrix_A.dat Filename_T=vector_T.dat Call read_number(filename_A,n)Allocate(A(n,n),Q(n,n),R(n,n),AT(n,n),T(n)Call read_matrix(n,A,filename_A)Call Get_AT(n,AT,Q,R)
19、Call Get_eigenvalue(n,AT,T)Call write_vector(n,A,AT,T,filename_T)deallocate(A,Q,R,AT,T)END program,第七讲 数组的使用及Fortran函数,7.4 Fortran子程序概述/说明,7.4 Fortran 子程序概述,FORTRAN 90子程序,也称过程,划分为两类:函数和子例行程序。函数是指产生一个运算结果且通过操作数调用执行的子程序。子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。每类子程序又划分为标准子程序和用户自定义子程序。用户自定义子程序又划分为内部子程序、外部子程序和
20、模块子程序。FORTRAN 90的子程序分类如图7-1所示。,概述 说明 标准函数,第七讲 数组的使用及Fortran函数,概述 说明 标准函数,7.4 Fortran子程序概述/说明/分类图示,FORTRAN 90子程序,也称过程,划分为两类:函数和子例行程序。函数是指产生一个运算结果且通过操作数调用执行的子程序。子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。每类子程序又划分为标准子程序和用户自定义子程序。用户自定义子程序又划分为内部子程序、外部子程序和模块子程序。FORTRAN 90的子程序分类如图7-1所示。,7.4 Fortran 子程序概述,第七讲 数组的使用及
21、Fortran函数,7.4 Fortran子程序概述/标准函数,标准函数有时称系统函数、内部函数,FORTRAN 90的编译系统提供130多个标准函数。有以下几大类:三角函数计算数值计算数据类型转换数据类型查询随机数生成日期时间处理字符串处理地址计算位运算,标准函数可作为表达式中操作数进行调用,并参与表达式运算。调用标准函数时,只需写出函数名,后面括号中给出符合要求的所要计算的变元值。例如:已知:x=3.0,y=4.0,计算表达式2.5*SQRT(x*x+y*y)+ABS(-8.5*3),结果为38.0。,使用标准函数需要注意以下几点:标准函数对变元的个数和类型有明确的规定和要求。要求有一个变
22、元,如函数SIN(x),要求两个变元,如函数MOD(m,n),要求多个变元,如函数MAX(x1,x2,xn)。要求变元类型为整型,如函数MOD(m,n),要求变元类型为实型,如SIND(x),要求变元类型为整型、实型、双精度、复型等多种类型,如ABS(x)。标准函数的函数值只有一个,且有明确的类型规定。多数函数函数值类型与变元类型相同,如函数SQRT(9.0D0)=3.0D0,类型都为双精度,也有函数函数值类型与变元类型不相同,如函数INT(8.5)=8,变元类型为实型,而函数值类型为整型。对于“弧度”和“角度”单位,使用不同的三角函数。函数变元必须写在函数名后括号内,变元可是常数、变量或表达
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 使用 Fortran 函数
链接地址:https://www.31ppt.com/p-5986265.html