资源描述:
《循环结构的Fortran程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2021/9/21第四讲循环结构程序设计循环结构在程序设计中广泛使用,是一种非常重要的程序结构。其基本思想是重复,即重复执行某些语句、以完成大量的计算要求。但是,循环不是简单的重复,因为尽管每次都执行相同的语句,但是在循环过程中变量在变化,而且完成了循环次数或在一定的条件下能退出循环。本讲介绍Fortran90实现循环结构的2种方法:1、do循环结构;2、dowhile循环结构。循环次数事先可以确定下来,用do语句实现循环,非常方便。比如,当x=1、2、3、…、10时,分别计算lnx和sinx的值,用do循环实现的程序如下:2021/9/22§1用d
2、o语句实现循环IntegerxDox=1,10,1Print*,x,log(x*1.0),sin(x*1.)EnddoEnd2021/9/23一、do循环的一般格式doi=e1,e2,e3(do语句)循环体(执行的操作)enddo(结束语句)其中:(1)i代表循环变量(可为整型或实型);(2)e1,e2[,e3]称为参数表达式,分别为循环变量的初值、终值和步长;(3)循环体是循环过程被重复执行的语句组;(4)enddo是循环结束的终端语句,其与do语句配合使用。比如,计算5!Integerm,nm=1Don=1,5,1m=m*nEnddoPrint*
3、,mend2021/9/24说明:(1)步长为1时,表达式e3可以省略。比如“doi=1,10,1”与“doi=1,10”相同。(3)参数表达式“i=e1,e2,e3”表示循环次数为:r=max(int((e2-e1+e3)/e3),0)比如:doi=10,1,-2的循环次数r=5,而doi=10,1,2的r=0(即不循环),注意:1、步长不能为0;2、循环次数不能为0。(2)循环变量与参数表达式数据类型不一致时,其处理方法与赋值语句相同,即先计算参数表达式、并把结果转换成循环变量类型,然后进行处理。比如,“doi=1.3,5.9,2.6”相当于“d
4、oi=1,5,2”IntegeraDoa=1.3,5.9,2.6Print*,aEnddoEnd输出为:1352021/9/25二、do循环的执行过程Do循环的执行过程可示意为右图,说明如下:计算e1,e2,e3的值e1→i计算循环次数rr=0?执行循环体i+e3→ir-1→renddo下面的语句是否(1)循环体指do语句和enddo语句之间的语句,不包括do语句,因此do语句在循环过程中只执行一次。如果循环参数表达式中含变量,那么即使在循环体中改变变量的值,循环参数并不改变。比如:Integera,b,c,Ia=1;b=7;c=2Doi=a,b,c
5、+1a=2;b=b+a;c=c*iPrint*,i,a,b,cEnddoEnd输出为:129242118721356进入do循环后,首先计算出循环变量i的初值1、终值7、步长3(即执行do语句),尽管在循环体中改变了变量a、b、c的值,但是循环变量的初值、终值、步长不再变化。2021/9/26(2)由于在循环过程中,循环变量会自动按循环要求变化,因此不能在循环体内给循环变量进行赋值。IntegeriDoi=1,5,2i=i+1Print*,iEnddoEndErrorfor3598:assignmenttoDovariableidetectedbet
6、weeniand=(3)由于每循环一次循环变量自动增加一个步长的值,因此退出循环后循环变量的值,比最后一次循环时循环变量的值多1个步长。Integeri,mDoi=1,10,2m=iEnddoPrint*,i,mEnd输出为:119三、do循环举例例1:输入x、n,计算输出:分析:累加项可表示为递推Fi=Fi-1*x/i,用赋值语句F=F*x/i来实现。重复加是循环操作,程序为:2021/9/27Integern,iRealx,F,yRead*,x,nF=1.0Y=1.0Doi=1,nF=F*x/iY=Y+FEnddoPrint*,’x=’,x,’n
7、=’,nWrite(*,*)’y=’,yEnd从键盘输入:3,3↙输出为:x=3.0n=3y=13.02021/9/28例2:输入一个整数,判断并输出是否为完数(除自身外所有因子之和等于本身的数),比如6=1+2+3,所以6是完数。分析:因为找一个整数的因子及求它们的和可以用循环来实现,而用选择结构可进行判断与输出其是否为完数,程序为:Integerm,i,sumRead*,mSum=0Doi=1,m/2!求除本身之外的因子及之和If(mod(m,i).eq.0)sum=sum+iEnddoif(m.eq.sum)thenWrite(*,*)m,”是
8、完数”ElsePrint*,m,’不是完数’Endifend2021/9/29例3:找出3位整数中全部的水仙