资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第五讲 循环结构及基本语句5.1 循环结构概述对于问题规模较大的重复问题适宜采用循环结构。如:从键盘输入50个数,求50个数之和,并输出。求解算法: 求解程序:(1)初始化:0.0sum。(2)1I。(3)如果I50,则执行步骤(7)。(4)输入一个数x,并累加到sum中。(5)I+1I。(6)转步骤(3)。(7)输出结果sum。(8)结束。对于上述算法和程序,不管程序规模多大,长度不变。Program ex1sum=0.0DO I=1,50,1READ(*,*) xsum=sum+xENDDOWRITE(*,*)sum=, sumEND循环结环结 构分为为两类类: l循环体的循环次数事先确定(如例5.1中循环结构),这类循环结 构称为确定性循环,或称“计数型”循环,使用计数型循环语句( 如DO循环语句)实现这类循环结构。循环环次数为为:MAX(终值终值 -初 值值)/步长长+1,0)。 l循环体的循环次数事先不确定(如例5.2中循环结构),这类循环 结构称为非确定性循环,或称“条件型”循环,使用条件型循环语 句(如DO WHILE循环语句)实现这类循环结构。条件型循环又分“ 当型”循环和“直到型”循环。初值循环变量vv终值v+步长v假真计数型判定条件判定条件循环体假真循环体假真 当型直到型例5.1 求S=1+2+3+N的值(N由键盘输入,N2)。编写程序。解:求解这一问题,将执行N-1次加法运算。如果将等式写成S=0+1+2+N,则执行N次加法运算。重复问题易采用循环结构实现。用S保存和,用N保存最大求和值值,用I作计计数器。编编写程序如下: Program ex2INTEGER S,N,IREAD(*,*)NS=0DO I=1,N,1S=S+IEDNDOWRITE(*,*) S=,SEND例5.2 读读入某班级级考试试成绩绩(人数不定),计计算其平均成绩绩,并输输出。解:由于学生人数不定,所以输入的学生成绩个数不确定,以输入-1作 为结束标志(因为成绩不可能为负数),从而动态确定学生人数n。平均成绩计算公式是:av=(x1+x2+xn)/n Program ex3INTEGER sum,n,xREAL avsum=0n=0READ(*,*)xDO WHILE (x/=-1)n=n+1sum=sum+xREAD(*,*)xENDDOav=sum/nWRITE(*,*) 平均成绩为:,avEND5.2 使用DO循环语句实现计数型循环: DO =,ENDDO 说明:v为循环变量,一般为整型变量,用来控制循环次数。e1、e2和e3为表达式, 其类型与循环变量类型相同。e1代表循环变量v的初值,e2代表循环变量v的 终值,e3代表循环变量v的步长,e3可缺省,e3缺省指e3为1。 循环次数计算公式是:MAX(e2-e1)/e3 + 1 ,0)。如果e30,则一般要求e1e2,否则循环次数为0,即循环体一次也不执行。 如果e3: DO WHILE ()ENDDO 说明: 循环条件可以是关系表达式,也可以是逻辑表达式,但不能是算术 表达式或字符表达式。 使用DO WHILE语句时要特别注意死循环的产生,要保证循环体中至少 有一条对循环控制条件有影响的语句,否则将产生死循环。循环体DO WHILE循环语环语 句在每次循环环体执执行前都要计计算表示循环环控 制条件的逻辑逻辑 表达式,其计计算结结果决定循环环体是否继续执继续执 行,循环环 体的执执行过过程必须对须对 循环环控制条件产产生影响。计算表示循环控制条件的逻辑表达式 结果赋予loglog=.TRUE.循环语句下面一条语句真假执行循环体PROGRAM cycle2sum=0READ(*,*)xDO WHILE (0=9) EXIT ENDDO END!示例程序二:输出奇数1,3,5,7,9 I=1 DO WHILE (I=9) EXITI=I+2 ENDDO END!示例程序三:输出奇数1,3,5,7,9 I=1 DO write(*,*)IIF (I=9) EXITI=I+2 ENDDO ENDCYCLE功能:在循环体执行过程中强制性终止本次循环的执行,转循环开 始语句(DO语句)执行。只能在DO和DO WHILE循环语句内使用CYCLE语句 。 DO I=2,5write(*,“(1X,I3)“)IIF (I3) CYCLEwrite(*,“(1X,I3)“)I END DO Write(*,*)结束! END !执行结果:2 2 3 3 4 55.6 特殊DO循环语句与EXIT语句: DOENDDO 说明: 特殊DO循环语句必须与EXIT语句配合使用。 使用特殊DO循环语句可使循环变得短小、简洁、清晰。执行过程:(1)按顺序依次执行循环体语句。(2)循环执行过程中,若满足循环结束条件,则执行EXIT语句退出循环。(3)无条件转转(1)。 循环体 循环体: DOENDDO 说明: 特殊DO循环语句必须与EXIT语句配合使用。 使用特殊DO循环语句可使循环变得短小、简洁、清晰。执行过程:(1)按顺序依次执行循环体语句。(2)循环执行过程中,若满足循环结束条件,则执行EXIT语句退出循环。(3)无条件转转(1)。 (示例)循环体Program INTEGER M,N,R1,R2,R3,gcd,lcm Write(*,*)输入两个自然数: READ(*,*)M,N R1=M;R2=N DO IF (R2=0) EXITR3=MOD(R1,R2) !求R1除以R2的余数R1=R2;R2=R3 END DO gcd=R1;lcm=M*N/gcd Write(*,“(1X,I3,和,I3,的最大公约数为:,I3)“)M,N,gcd Write(*,“(1X,I3,和,I3,的最小公倍数为:,I3)“)M,N,lcm END5.7 循环嵌套l前面介绍的循环结构和循环语句 都是一层循环,许多实际问题的 求解算法和程序往往具有多重循 环结构。l多重循环结构称为循环嵌套,循 环嵌套是指在一个循环结构或循 环语句的循环体中又含有循环结 构或循环语句。对于n层循环嵌 套称为n重循环。嵌套的循环层 数原则上不限,但不易太多。l计数型、当型、直到型循环结构 都可相互嵌套,DO语句、DO WHILE语句、特殊DO循环语句都 可相互嵌套。根据实际问题的求 解需要决定循环嵌套的形式和层 数。l如果有n重循环,且循环次数分别 为r1、r2、rn,则一般最内层 循环体的循环总次数为: r1r2rn。一层循环二层循环二层循环三层循环三层循环四层循环例5.8求 。 解:求解这一问题的算法结构具有“计数型”循环结构与“计数型”循 环结构嵌套的二重循环结构。程序中用两个DO循环语句嵌套来实现二重 循环结构。Program INTEGER : i,j,fac,fac_sum=0 !循环嵌套 DO i=1,10 !用外层循环控制求和次数fac=1DO j=1,i !用内层循环控制阶乘fac=fac*jENDDOfac_sum=fac_sum+fac ENDDO Write(*,*)前10个自然数的阶乘和=, fac_sum END !赋值语句fac=fac*j被执行55次 !赋值语句fac_sum=fac_sum+fac被执行10次例5.12根据下面泰勒级级数求x的正弦值值。解:我们们已经经熟悉FORTRAN 90提供的SIN(x)、COS(x)、EXP(x)等内部函数, 我们们可直接使用这这些内部函数计计算正弦、余弦、指数等值值。那么这这些函数 是如何计计算的呢?一般都是通过过其泰勒级级数计计算。下面我们们不用内部函数 ,自己编编写程序计计算正弦值,然后与内部函数计计算值进值进 行比较较。 遇到这类问题这类问题 ,必须须将泰勒级级数用通项项公式表示,然后得出迭代公式。其中:n=1,2,3,。设:Tn=(-1)n+1x2n-1/(2n-1)!=Tn-1(-1)x2/(2n-2)(2n-1), n=1,2,3,sinxT1+T2+Tn,Tn+110-7,10-7决定了计算精度。上述计算问题变成了一个求和问题,可用一个DO WHILE语句实现。根据分析,设计算法,编写程序。PROGRAM Sin_x PARAMETER(pi=3.14159278,eps=1E-7) INTEGER :n=1,maxterms=10 REAL x,T,sinx WRITE(*,“(A)”,ADVANCE=NO) 输入一个度数值: READ(*,*)x x=x*pi/180 !转换为弧度值 T=x;sinx=T DO WHILE(ABS(T)eps).AND.(neps)THENwrite(*,*)发散级数,不能得到结果。 ELSEwrite(*,*)程序计算得到的正弦值:,sinxwrite(*,*)FORTRAN 90内部函数值:,SIN(x) END IF END计算T和sinx将x转换为弧度开始不满足精度吗?真假结束输入xn+1n初始化T和sinx判定收敛或发散,并输出相应结果输入数据:输入一个度数值:45输出结果为:程序计算得到的正弦值: 0.7071068Fortran 90内部函数值: 0.70710681 输入x值(x1),按下列公式计算s。精度要求5位有效数字,最后一项10-5。编 写程序实现之。 2输入x,用迭代法按下列迭代公式求 的值。初始值y0=x,精度要求4位有效 数字。编写程序实现之。 P194页 9,10题5.8 习题
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号