第四章__循环结构程序设计.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 循环结构程序设计 DO语句 DO WHILE语句 循环的嵌套 循环结构的程序设计方法 循环结构 循环结构的基本思想是重复,即利用计算机运算速度快以及能进行逻辑控制的特性,重复执行某些语句,以完成大量的计算要求。 4.1 用DO语句实现循环 例如,当X取1,2,3,…,10时,分别计算sinx和cosx的值。 INTEGER X DO X=1,10,1 PRINT *,X,SIN(X*1.0),COS(X*1.0) END DO END 4.1.1 DO循环一般格式 DO i=e1,e2[,e3] …(循环体) END DO 其中i代表循环变量,它可以是整型或实型变量。e1、e2、e3称为循环参数表达式,分别表示循环变量的初值、终值和步长。循环体是在循环过程中被重复执行的语句组。 例 求5! PROGRAM LOOP INTEGER P,K P=1 DO K=5,1,-1 P=P*K END DO PRINT *,P END 说明 (1)当循环变量变化的步长为1时,表达式e3可以省略。即DO K=1,10,1与DO K=1,10等价。 (2)如果循环变量和循环参数表达式的类型不一致,其处理办法与赋值语句一样,先将表达式的最后结果转换成循环变量的类型,然后再进行处理。 (3) DO循环的执行次数 r=MAX(INT((e2-e1+e3)/e3) ,0)。 例 INTEGER X DO X=1.2,5.6,2.4 PRINT *,X END DO END 程序执行后的输出结果为: 3 5 如果循环变量的步长为0,程序在编译和连接时都没有问题,但在执行过程中求循环执行次数时将出现语法错,即进行了除零运算。这是应当避免的。 4.1.2 DO循环执行过程 说明: 循环体指的是DO语句与END DO语句之间的语句,因此循环体并不包括DO语句,执行程序时DO语句也只执行一次。如果循环参数表达式e1、e2、e3中含有变量,那么即便在循环体中改变变量的值,循环参数并不改变。 在循环体内给循环变量赋值,是不允许的。 分析下面的程序: INTEGER X,Y,Z,K X=1 Y=7 Z=2 DO K=X,Y,Z+1 X=2 Y=Y+X Z=Z*K PRINT *, K ,X,Y,Z END DO END 例 INTEGER K DO K=1,5,2 K=K+1 PRINT *,K END DO END 编译时将给出错误信息: error FOR3598: assignment to DO variable K detected between K and = (3) 退出循环后循环变量的值与最后一次循环时循环变量的值不同,前者比后者多一个步长。例如: DO K=1,10,2 L=K END DO PRINT *,K,L END 程序的执行结果为: 11 9 例4.1 求 累加项F的递推式为: Fi=Fi-1*X/I 可用赋值语句F=F*X/I来实现。 READ *,X,N F=1.0 Y=1.0 DO I=1,N F=F*X/I Y=Y+F END DO PRINT *,’Y=’,Y END 例4.2 一个整数的因子(不包括该数本身)之和等于它本身,则称该数为完数。例如6的因子有1,2,3,且1+2+3=6,因此6是完数。输入一个整数,判断它是否完数 根据完数的定义,先求整数的因子之和,然后判断该数本身是否等于因子之和,若是则为完数。 INTEGER M,SUM,I READ *,M SUM=0 DO I=1,M/2 !该循环求因子之和 IF (MOD(M,I)==0) SUM=SUM+I ENDDO IF (M==SUM) THEN PRINT *,M,是完数 ELSE PRINT *,M,不是完数 ENDIF END 例4.3 Fibonacci数列定义如下: ? F1=1 ? F2=1 ? Fn=Fn-1+Fn-2 (n2) ? 求Fibonacci数列的前30项。 ? 设待求项为F,待求项前面的第1项为F1,待求项前面的第2项为F2。首先根据F1和F2推出F,再将F1作为F2,F作为f1,为求下一项作准备。如此一直递推下去。具体过程如下: 1 1 2 3 5 第一次 F2 + F1 → F ↓ ↓ 第二次 F2 + F1 → F

文档评论(0)

血玲珑 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档