第四章循环结构程序设计
11/11/2017
1
课前思考
现实生活中,如果一件事情重复去做,你会有什么感受?
对于循环结构,fortran中提供了几种形式?
每种形式各适用于什么场合?
每种形式的注意事项是什么?
怎样选择循环的形式?
编写程序时应考虑哪些问题?
第四章循环结构程序设计
DO 循环
DO循环的一般形式与执行过程
DO循环中循环次数的计算
DO while 循环
DO while循环的一般形式
DO WHILE循环的执行过程
循环的嵌套
11/11/2017
3
DO循环的一般形式与执行过程
DO循环的一般形式
DO i=e1,e2[,e3]
(循环体)
END DO
计算e1、e2、e3的值
e1→i
计算循环次数r
r=0?
执行循环体
i+e3→i
r-1→r
END DO下面的语句
Y
N
如何计算循环次数?
DO循环的循环次数计算公式:
CONT=INT((e2-e1+ e3)/ e3)
DO循环的循环次数的计算:
循环控制变量可为整型、实型
先将e1,e2,e3转换成与循环控制变量类型一致,再计算循环次数
当计算循环次数为负数时,则循环次数为0
FORTRAN对DO循环结构的一些规定:
e1、e2与e3在循环体内可以被引用,但不能被赋值
在DO循环结构中,可从循环体内转到外,但不允许从外转到内
求
累加项f的递推式为: fi=fi-1*x/i
可用赋值语句f=f*x/i来实现
read *,x,n
f=
y=
do i=1,n
f=f*x/i
y=y+f
end do
print *,’y=’,y
end
思考(举一反三)
类似这样的连加或连乘的式子如何处理?
一个整数的因子(不包括该数本身)之和等于它本身,则称该数为完数。例如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
i数列定义如下: F1=1 F2=1 Fn=Fn-1+Fn-2 (n>2) i数列的前30项。
设待求项为F,待求项前面的第1项为F1,待求项前面的第2项为F2。首先根据F1和F2推出F,再将F1作为F2,F作为f1,为求下一项作准备。如此一直递推下去。具体过程如下:
1 1 2 3 5
第一次 F2 + F1 → F
↓↓
第二次 F2 + F1 → F
↓↓
第三次 F2 +F1 → F
与循环有关的控制语句
1、EXIT语句
迫使循环立即终止。通常与IF语句配合使用:
IF (e) EXIT
hh-fortran-04-1循环结构 来自淘豆网www.taodocs.com转载请标明出处.