循环结构的Fortran程序设计.ppt
《循环结构的Fortran程序设计.ppt》由会员分享,可在线阅读,更多相关《循环结构的Fortran程序设计.ppt(25页珍藏版)》请在三一办公上搜索。
1、2023/9/10,1,第四讲 循环结构程序设计,循环结构在程序设计中广泛使用,是一种非常重要的程序结构。其基本思想是重复,即重复执行某些语句、以完成大量的计算要求。但是,循环不是简单的重复,因为尽管每次都执行相同的语句,但是在循环过程中变量在变化,而且完成了循环次数或在一定的条件下能退出循环。本讲介绍Fortran90实现循环结构的2种方法:1、do循环结构;2、do while循环结构。,循环次数事先可以确定下来,用do语句实现循环,非常方便。比如,当x=1、2、3、10时,分别计算lnx和sinx的值,用do循环实现的程序如下:,2023/9/10,2,1 用do语句实现循环,Integ
2、er xDo x=1,10,1Print*,x,log(x*1.0),sin(x*1.)End doEnd,2023/9/10,3,一、do循环的一般格式,do i=e1,e2,e3(do语句)循环体(执行的操作)end do(结束语句),其中:(1)i代表循环变量(可为整型或实型);(2)e1,e2,e3称为参数表达式,分别为循环变量的初值、终值和步长;(3)循环体是循环过程被重复执行的语句组;(4)end do是循环结束的终端语句,其与do语句配合使用。,2023/9/10,4,说明:,(1)步长为1时,表达式e3可以省略。比如“do i=1,10,1”与“do i=1,10”相同。,(3
3、)参数表达式“i=e1,e2,e3”表示循环次数为:r=max(int(e2-e1+e3)/e3),0)比如:do i=10,1,-2的循环次数r=5,而do i=10,1,2的r=0(即不循环),注意:1、步长不能为0;2、循环次数不能为0。,2023/9/10,5,二、do循环的执行过程,(1)循环体指do语句和end do语句之间的语句,不包括do语句,因此do语句在循环过程中只执行一次。如果循环参数表达式中含变量,那么即使在循环体中改变变量的值,循环参数并不改变。比如:,Integer a,b,c,Ia=1;b=7;c=2Do i=a,b,c+1a=2;b=b+a;c=c*iPrint
4、*,i,a,b,cEnd doEnd输出为:1 2 9 2 4 2 11 8 7 2 13 56,进入do循环后,首先计算出循环变量i的初值1、终值7、步长3(即执行do语句),尽管在循环体中改变了变量a、b、c的值,但是循环变量的初值、终值、步长不再变化。,2023/9/10,6,(2)由于在循环过程中,循环变量会自动按循环要求变化,因此不能在循环体内给循环变量进行赋值。,Integer iDo i=1,5,2i=i+1Print*,iEnd doEndError for3598:assignment to Do variable i detected between i and=,(3)由
5、于每循环一次循环变量自动增加一个步长的值,因此退出循环后循环变量的值,比最后一次循环时循环变量的值多1个步长。,Integer i,mDo i=1,10,2m=iEnd doPrint*,i,mEnd输出为:11 9,三、do循环举例,例1:输入x、n,计算输出:,分析:累加项可表示为递推Fi=Fi-1*x/i,用赋值语句F=F*x/i来实现。重复加是循环操作,程序为:,2023/9/10,7,Integer n,iReal x,F,yRead*,x,nF=1.0Y=1.0Do i=1,nF=F*x/iY=Y+FEnd doPrint*,x=,x,n=,nWrite(*,*)y=,yEnd从键
6、盘输入:3,3 输出为:x=3.0 n=3 y=13.0,2023/9/10,8,例2:输入一个整数,判断并输出是否为完数(除自身外所有因子之和等于本身的数),比如6=1+2+3,所以6是完数。,分析:因为找一个整数的因子及求它们的和可以用循环来实现,而用选择结构可进行判断与输出其是否为完数,程序为:,Integer m,i,sumRead*,mSum=0Do i=1,m/2!求除本身之外的因子及之和If(mod(m,i).eq.0)sum=sum+iEnd doif(m.eq.sum)thenWrite(*,*)m,”是完数”ElsePrint*,m,不是完数End ifend,2023/9
7、/10,9,例3:找出3位整数中全部的水仙花数。,分析:利用do循环逐一判断3位整数100,999中哪些是水仙花数,并输出,程序为:,Integer m,m1,m2,m3,nDo m=100,999 m1=m/100m2=mod(m/10,10)m3=mod(m,10)n=m1*3+m2*3+m3*3)Print*,m,是水仙花数End doend,2023/9/10,10,比如:求两个整数m和n的最大公约数和最小公倍数。,分析:最大公约数在1,min(m,n)范围内,且同时能被m和n整除,因此利用do i=min(m,n),1搜寻,一旦mod(m,i)=0、mod(n,i)=0则此时的i就是
8、最大公约数,并利用exit退出循环。然后利用最大公约数,求出最小公倍数。程序为:,2023/9/10,11,Integer a,b,t,iread*,a,bif(ab)thent=aa=bb=tend ifDo i=a,1,-1if(mod(a,i)=0.and.mod(b,i)=0)thenprint*,g=,iexitend ifend doprint*,l=,a*b/i!求最小公倍数End比如:12,9 g=3,l=36,注意:在程序中,do语句中的内容省略,表示循环条件永远成立。当x为偶数时执行cycle语句-直接执行下一次循环。当x大于100时,执行exit语句-跳出循环体。,202
9、3/9/10,12,(2)cycle语句,Cycle语句是用来结束本次循环,即跳过循环体中尚未执行的语句。在循环结构中,cycle语句将使控制直接转向循环条件的测试部分,从而决定是否继续执行循环。,Cycle语句与exit语句的区别在于:cycle语句只是结束本次循环,而不是终止整个循环的执行。Exit语句则是结束所在循环,跳出所在循环体。,例如:求1100中全部奇数之和。,Integer:x=0,y=0dox=x+1if(mod(x,2)=0)thencycleelse if(x100)thenexitelsey=y+xend ifend doprint*,yEnd,2023/9/10,13
10、,2 用do while语句实现循环,对于循环次数确定的循环问题,使用do循环是比较方便的。但是,有些循环问题事先是无法确定循环次数的,只能通过给定的条件来决定是否继续循环。这时可以使用do while语句来实现循环。,一、do while循环的一般格式,do while(条件表达式)(do while语句)循环体(执行的操作)end do(结束语句),其中:(1)表示循环的条件表达式,要用括号括起来;(2)循环体是在循环过程中被重复执行的语句组;(3)end do是循环结束的终端语句,do while语句与end do语句要配合使用。,2023/9/10,14,比如:real:p=1.0do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 Fortran 程序设计
链接地址:https://www.31ppt.com/p-5975582.html