第2章-Fortran程序设计基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第2章-Fortran程序设计基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran 程序设计 基础 课件
- 资源描述:
-
1、第5章数组数组的概念 在实际问题中,往往遇到要处理的数据是一组或一批同类型的数据,而且它们是按一定次序进行排列的。如,某班30名学生的单科成绩:85,79,81,68,(分)某厂3个车间全年各季度的产量:一车间:15.8,12.4,18.2,19.6二车间:8.7,9.6,10,8,9.8 三车间:12.3,14.8,16.7,11.3数组的概念 对上述问题,欲保留学生成绩则需要定义30个变量;保留某厂各车间各季度的产量就需要十二个变量。并且某个变量所表示的数据的顺序也无法确定。若有1个班50人,或一个厂有10个车间,就需要定义大量变量来保存这些数据,显然这会使程序笨长,也不便于阅读。怎样解决
2、这一问题?数组。数组的概念数组:一组带下标的变量如对成绩:定义数组:x(30)x(1),x(2),x(3),x(30)用于存放30名学生的成绩。数组名数组名下标下标数组的概念如:对某厂三个车间的产量。定义数组:q(3,4)q(1,1),q(1,2),q(1,3),q(1,4)q(2,1),q(2,2),q(2,3),q(2,4)q(3,1),q(3,2),q(3,3),q(3,4)用于存放三个车间全年各季度的产量。这里的x(i),q(i,j)称为数组元素(或下标变量)。数组的概念求30名学生的平均成绩:用变量:定义变量x1,x2,x30存放30名学生成绩 sum=0.0 sum=x1+x2+x
3、3+x30 avg=sum/30用数组:定义数组:x(30)存放30名学生成绩 sum=0.0 do i=1,30 sum=sum+x(i)enddo avg=sum/30数组的说明与引用 使用数组必须遵循“先说明,后使用”的原则。说明的目的是通知编译系统为数组分配相应的存贮单元。数组名 数组特性 维数,即下标的个数(17)下标取值范围(上界、下界)类型,由数组名类型决定 用两种方法说明数组:用类型说明语句(“显式说明”)用dimension语句(“隐式说明”)数组的说明与引用一、用类型语句说明数组 一般形式:类型说明 数组说明符,其中,数组说明符的一般形式为:数组名(维说明符,)其中,维说明
4、符由“下标下界:下标上界”组成。数组的说明与引用例:real xn(1:10),w(1:2,1:3),kw(10:20)Integer bc(1:100),py(0:2,0:3,0:5)二、用dimension语句说明数组 一般形式:dimension 数组说明符,数组的说明与引用例1:dimension x1(1:10),nw(1:2,1:3)例2:dimension tk(1:100),imax(1:2,1:3)integer tk real imax例3:real(8),dimension(1:10):a,b,c Integer,dimension(4,5):d,e数组的说明与引用注意一
5、下几点:在数组说明符中,维说明符(下标)的个数称为数组的维数。维数说明符只能使用整型常量或整型符号常量及表达式。例:parameter(i=1,j=10)real kx(i:j+5)read(*,*)n real sum(n)违背了先说明的规则数组的说明与引用维说明符的下标下界为1时,可以省略。例:integer bc(1:100),w(1:2,1:10)integer bc(100),w(2,10)数组说明语句必须写在所有可执行语句之前。数组名与同一程序单位中的变量名不能同名。2022-12-2413数组的说明与引用三、数组元素的引用程序中对数组元素的操作,与同类型的简单变量相同。一般形式:
6、数组名(下标,)即要有确定的数组名和下标值。例:xn(5)=10;w(1,3)=kw(1,2,3)引用数组元素时,下标可用算术表达式。例:bc(i)=py(i+j,k)!i,j,k是维数定义范围的具体值数组的说明与引用注意:下标表达式不能“越界”例如:integer s(10)i=10 s(i+1)=s(i)*2 下标的个数要与对应的数组维说明符相同例如:dimension w(5,12)w(2,10)=123.4 w(4)=567.8 X 数组的逻辑结构和存储结构 数组的逻辑结构数组所表示的实际数据结构。数组的存储结构数组在机内存储时的排列结构。一、一维数组 此逻辑结构为一组依次排列的一串数
7、据。例:a(5)a(1),a(2),a(3),a(4),a(5)此存储结构为一组连续存放的一列数据块。例:a(5)a(1)a(2)a(3)a(4)a(5)16数组的逻辑结构和存储结构二、二维数组 此逻辑结构为一张二维表数据。例:a(3,4)可以看作一张3行4列的二维表数据。即:a(3,4)行 列a(1,1)a(1,2)a(1,3)a(1,4)a(2,1)a(2,2)a(2,3)a(2,4)a(3,1)a(3,2)a(3,3)a(3,4)数组的逻辑结构和存储结构 此存储结构为一组按列连续存放的数据块。例:a(3,4)a(1,1)a(3,2)a(2,4)a(1,4)a(3,3)a(2,3)a(1,
8、2)a(3,1)a(2,1)a(1,3)a(2,2)a(3,4)2022-12-2418数组的逻辑结构和存储结构三、三维数组 此逻辑结构为若干张二维表数据。例:a(2,2,3)2行2列的表,共3页。即:行 列 页a(1,1,1)a(1,2,1)a(2,1,1)a(2,2,1)a(1,1,2)a(1,2,2)a(2,1,2)a(2,2,2)a(1,1,3)a(1,2,3)a(2,1,3)a(2,2,3)第第二二页页第第三三页页第第一一页页2022-12-2419数组的逻辑结构和存储结构此存储结构为一组按页连续存放的数据块。例:a(2,2,3)了解数组的逻辑结构和存储结构,对我们合理地选用数组和对
9、数组进行输入输出有很大好处。a(1,1,1)a(2,1,2)a(1,2,3)a(2,1,3)a(1,1,3)a(2,2,2)a(2,2,1)a(1,2,1)a(2,1,1)a(1,2,2)a(1,1,2)a(2,2,3)2022-12-2420数组的输入和输出有三种方式:用数组名 用do循环 用隐含do循环2022-12-2421数组的输入和输出一、用数组名进行数组的输入输出 在用数组名进行数组的输入输出时,其顺序要与数组元素在机内的存储顺序一致。例如:dimension k(5)read*,k 对数组的整体进行操作等价于:read*,k(1),k(2),k(3),k(4),k(5)2022-
10、12-2422数组的输入和输出例2:试输入以下2名学生3门功课的成绩。integer g(2,3)read*,g等价于:read*,g(1,1),g(2,1),g(1,2),g(2,2),g(1,3),g(2,3)键盘输入(按列输入):86,87,75,70,72,83837087727586制图英语数学2022-12-2423数组的输入和输出二、用do循环进行数组的输入输出例:试输入以下2名学生3门功课的成绩。837087727586制图英语数学数组的输入和输出编程如下:integer g(2,3)do i=1,2 do j=1,3 read(*,*)g(i,j)enddo enddo en
11、d 键盘输入(按行输入):86,75,72,87,70,83837087727586制图英语数学数组的输入和输出 integer g(2,3)read(*,*)(g(i,j),j=1,3),i=1,2)write(*,*)(g(i,j),j=1,3),i=1,2)end do i=1,2 do i=1,2 do j=1,3do j=1,3 read(read(*,*)g()g(i i,j j)enddo enddoenddoenddo内循环内循环外循环外循环等同于:等同于:read(*,*)g(1,1),g(1,2),g(1,3),g(2,1),g(2,2),g(2,3)由于是一个由于是一个r
12、ead语句,所以既可以一行输入,也语句,所以既可以一行输入,也可以分多行输入。键盘输入如下:可以分多行输入。键盘输入如下:86,75,72 87,70,83数组的输入和输出 要记注:一个read语句可以分多行输入,而有多个read语句时,每一个read语句必须从新的一行读数。将若干名学生的学号及五门课程的成绩,编成一个较完整的输入输出程序如下:数组的输入和输出 parameter(m=30,n=5)dimension kd(m,n)character num(m)*5 定义一个字符型数组 read(*,*)(num(i),(kd(i,j),j=1,n),i=1,m)print*,序号 学号 语
13、文 英语 数学 物理 化学 print 100,(i,num(i),(kd(i,j),j=1,n),i=1,m)100 format(1x,i3,3x,a5,2x,5i4)end read(*,*)(num(i),(kd(i,j),j=1,n),i=1,m)数组的输入和输出do i=1,m read(*,*)num(i),(kd(i,j),j=1,n)enddodo i=1,m read(*,*)num(i),kd(i,1),kd(i,2),kd(i,3),kd(i,4),kd(i,5)enddo数组的输入和输出10 format(1x,i3,3x,a5,2x,5i4)print 10,(i,
14、num(i),(kd(i,j),j=1,n),i=1,m)Do i=1,m print 10,i,num(i),(kd(i,j),j=1,n)EnddoDo i=1,m print 10,i,num(i),kd(i,1),kd(i,2),kd(i,3),kd(i,4),kd(i,5)enddo 7.4 数组的输入和输出输出结果的形式为:序号 学号 语文 英语 数学 物理 化学 1 00101 78 84 90 80 91 2 00102 30 00130 给数组赋初值 在Fortran程序中,可用data语句给变量或数组赋初值。一般形式:data 变量表/初值表/,变量表/初值表,功能:在程序
15、编译期间给变量或数组赋初值。其中,变量表可以是变量名、数组名、数组元素、隐do循环;初值表只能是常量,不允许出现任何形式的表达式。2022-12-2432给数组赋初值例1:data x,y,z/15.7,42.4,108.5/例2:data a,b/7.85,9.1/,i,j,k/5,10,15/例3:dimension k(2,3)data(k(i,j),j=1,3),i=1,2)/90,23,20,42,14,32/或:data k/90,42,23,14,20,32/给数组赋初值例4:dimension a(10)data a/10*-1.0/(表示“10个-1.0”)注:data语句属
16、说明语句,但它可以放在end语句之前的任意行。其作用相当于赋值。给数组赋初值 使用数组赋值符赋初值 一般形式:数组名=(/取值列表/)例如:integer m(6)m=(/2,3,4,5,6,7/)给数组赋初值 integer p(-1:8)p=(/3,0,(i,i=1,9,2),45,56,6+2*8/)print 100,(p(i),i=-1,8)100 format(1x,10i5)end给数组赋初值 Fortran 90 中,除了可以对一个一个的元素慢慢来设定初值外,还可以一口气把整个数组内容设置为同一个数值。Integer:A(3)=3!A(1)=A(2)=A(3)=3数组应用举例例
17、:从键盘输入10个整数,然后将最大数与第一个数交换,最小数与最后一个数交换。integer,dimension(10):ainteger m,kdo k=1,10 read(*,*)a(k)enddom=1do k=2,10 if(a(m)a(k)m=k enddo n=a(m);a(m)=a(10);a(10)=n print 100,(a(k),k=1,10)100 format(1x,10i6)end数组应用举例例7.10:设有一个45矩阵。(1)求下面矩阵的所有元素之和及平均值。(2)保留所有大于平均值的元素,其余元素清零59671040128315946232713 integer
展开阅读全文