FORTRAN循环结构程序设计
Fortran程序设计(第六章-循环结构(下))
【5】为了计算并输出n!,其中n从键盘输入,下 列各FORTRAN程序中正确的是: D) C) READ(*,*)N READ(*,*)N K=1 K=1 S=1.0 S=1.0 10 IF(K.LE.N) THEN 10 IF(K.LE.N)THEN K=K+1 S=S*K S=S*K K=K+1 GOTO 10 GOTO 10 END IF END IF WRITE(*,*)’S=’,S WRITE(*,*)’S=’,S END END
练习:
1、下面关于DO循环的规定,错误的是______。 (A) DO循环的循环控制变量不能在循环体内赋值 (B) DO循环的控制变量表达式,终值和步长可以是整型和实型 (C) DO循环是当型循环 (D) DO循环的循环控制变量不能是双精度型 2、 有如下循环入口语句 INTEGER::I DO I=-0.5,-0.5,-1.0 该循环的执行次数为____________。 (A) 0 (B) 1 (C) 出错 (D) 无限
Do结构可以有多重嵌套,这里介绍二重嵌套的执行过程。 对于多重嵌套,其基本原理相同。
1.当控制进入到外层DO结构后,先计算出外层DO结构的 循环次数Ri,外层循环变量得到初值。 2.若Ri<0,则结束外循环的执行,当然也不能进入内循环; 若Ri>0,执行外层结构的DO块内的语句。 3.当遇到内层DO语句时,控制进入内层DO结构;先算出 内层DO结构的循环次数Rj,内层循环变量得到初值。
第六章 循环结构(下)
§6.5 DO结构嵌套
§6.6 隐含DO循环 §6.7 程序举例
6.5 DO结构嵌套
一个DO结构循环体内可以包含另一个DO循环结构,
这就是DO结构循环嵌套。 注意: 1 内循环必须完全嵌套在外循环体内,不能相互交叉。
fortran循环结构及基本语句
fortran循环结构及基本语句Fortran中的循环结构包括DO循环和DO WHILE循环。
基本语句包括赋值语句、条件语句和IO语句。
1.DO循环结构:DO循环结构用于重复执行一段代码块,语法如下:DO variable = start, end, step!代码块ENDDO在循环开始前,将变量初始化为start的值,然后执行代码块。
然后将变量增加step的值,并检查是否达到end的值,如果没有达到则继续执行代码块,直到达到end的值为止。
2.DOWHILE循环结构:DOWHILE循环结构用于在满足条件时重复执行一段代码块,语法如下:DO WHILE (condition)!代码块ENDDO在每次循环开始前,检查condition是否为真,如果为真则执行代码块,然后再次检查condition。
只有当condition为假时,循环才会结束。
3.赋值语句:赋值语句用于将一个值赋给一个变量,语法如下:variable = expression可以使用算术运算符和函数来计算expression的值,并将结果赋给变量。
4.条件语句:条件语句用于根据条件选择执行不同的代码块,常用的条件语句有IF语句和SELECTCASE语句。
-IF语句的语法如下:IF (condition) THEN!代码块1ELSE IF (condition) THEN!代码块2ELSE!代码块3ENDIF根据condition的值选择执行代码块1、代码块2或代码块3-SELECTCASE语句的语法如下:SELECT CASE (expression)CASE (value1)!代码块1CASE (value2)!代码块2CASEDEFAULT!代码块3ENDSELECT根据expression的值选择执行相应的代码块,如果没有匹配的值,则执行默认的代码块。
5.IO语句:IO语句用于输入和输出数据,常用的IO语句有WRITE和READ语句。
fortran循环结构及基本语句..
假
判定条件 真
计数型ห้องสมุดไป่ตู้
当型
直到型
[例5.1] 求S=1+2+3+…+N的值(N由键盘输入,N>2)。编写程序。 解:求解这一问题,将执行N-1次加法运算。 如果将等式写成S=0+1+2+…+N,则执行N次加法运算。 重复问题易采用循环结构实现。 用S保存和,用N保存最大求和值,用I作计数器。编写程序如下:
真
执行循环体 v+e3 v r-1 r DO循环语句下面一条语句
5.3 使用DO WHILE循环语句实现循环
<DO循环语句>→[<名字>:] DO WHILE (<循环条件>) <语句1>
<语句2>
…… <语句n> ENDDO [<名字>] 说明:
循环体
① 循环条件可以是关系表达式,也可以是逻辑表达式,但不能是算术 表达式或字符表达式。 ②使用DO WHILE语句时要特别注意死循环的产生,要保证循环体中至少 有一条对循环控制条件有影响的语句,否则将产生死循环。
<DO循环语句>→[<名字>:] DO <v>=<e1>,<e2>[,<e3>]
<语句1> <语句2> ……
<语句n>
ENDDO [<名字>] 说明: ①v为循环变量,一般为整型变量,用来控制循环次数。e1、e2和e3为表达式, 其类型与循环变量类型相同。e1代表循环变量v的初值,e2代表循环变量v的 终值,e3代表循环变量v的步长,e3可缺省,e3缺省指e3为1。 ②循环次数计算公式是:MAX((e2-e1)/e3 + 1 ,0)。 ③如果e3>0,则一般要求e1≤e2,否则循环次数为0,即循环体一次也不执行。 ④如果e3<0,则一般要求e1≥e2,否则循环次数为0,即循环体一次也不执行。 ⑤在循环体中可引用循环变量v的值,但不能赋值,即修改它的值。
Fortran程序设计循环结构
循环变量的UM=0. I=1 DO WHILE(1./ I**2>=1E-6) SUM=SUM+1./I**2 I=I+1 ENDDO
例:求两个整数的最大公约数 (DO WHILE 结构程序见DIVISOR.F90) read *, m,n
do while (m/=n) do while (m>n) m=m-n end do
do while (n>m)
n=n-m end do end do print *, '最大公约数=',m
也称“循环变量”
行号
行号
循环终端语句:
循环终端语句为一般的执行语句。 F90 规 定 : 循 环 终 端 语 句 可 以 是 除 了 GOTO 、 块 IF 、 CASE 、 CYCLE 、 DO 、 ELSE 、 ELSE IF 、 END IF 、 END 、 END SELECT 、 EXIT 、 SELECT CASE 、 STOP 和RETURN语句以外的任一可执行语句,如打印语句、赋 值语句、输入语句、逻辑IF语句等都可以作为终端语句。 特殊的循环终端语句是: END DO(常用于无语句标号时 ) 和CONTINUE(常用于有语句标号时 )。END DO语句使老 的CONTINUE语句显得没有什么用处了,虽然F90的向下 兼容性使CONTINUE语句仍然可用,但新编写的程序应该 尽量使用以END DO结束的块DO构造
end
例:打印“九九表”,即 1×1=1
1×2=2
……
Fortran77结构化程序设计2023简版
Fortran77结构化程序设计Fortran77结构化程序设计简介Fortran(Formula Translating System)是一种编程语言,特别适用于科学和工程领域的计算。
Fortran的第一版于1957年发布,至今已经发展到Fortran77版本。
Fortran77引入了结构化程序设计的概念,使得程序更易于编写和维护。
本文将介绍Fortran77结构化程序设计的基本原则、控制结构和常用语法。
基本原则结构化程序设计的目标是编写易读、易维护、易的程序。
为了达到这个目标,Fortran77结构化程序设计遵循以下基本原则:1. 模块化:将程序划分为小块的独立模块,每个模块负责完成特定的功能。
2. 单一入口:每个模块只有一个入口点,使得程序的执行流程清晰可见。
3. 自顶向下设计:从程序的总体结构开始,逐步细化到具体的算法和实现细节。
4. 注重可读性:使用有意义的变量和函数名,添加适当的注释,使得程序易于阅读和理解。
控制结构Fortran77提供了几种常用的控制结构来实现程序的流程控制:顺序结构顺序结构是Fortran77中最基本的控制结构,程序按照代码的顺序依次执行。
例如:fortranPROGRAM mnINTEGER :: i, sumsum = 0DO i = 1, 10sum = sum + iEND DOWRITE(,) 'Sum:', sumEND PROGRAM mn上述代码展示了一个简单的程序,通过循环计算1到10的和,并输出结果。
分支结构Fortran77提供了基本的分支控制结构:- `IF`语句:可以根据条件选择性执行代码块。
例如:fortranPROGRAM mnINTEGER :: iDO i = 1, 10IF (i < 5) THENWRITE(,) i, '小于5'ELSEWRITE(,) i, '大于等于5'END IFEND DOEND PROGRAM mn在上述代码中,根据变量`i`的值判断是否小于5,并分别输出不同的信息。
FORTRAN95第三章循环程序设计
FORTRAN95第三章循环程序设计第三章的内容包括:1.DO循环:DO循环是FORTRAN中最基本的循环结构。
它允许我们指定循环变量的初始值、结束值和步长。
在每次循环迭代时,循环变量都会自动更新,并且在达到结束值时退出循环。
2.嵌套循环:FORTRAN也支持嵌套循环,这是在一个循环内部使用另一个循环。
嵌套循环使得我们能够处理更加复杂和具有分层结构的问题。
3.WHILE循环:FORTRAN还提供了类似于其他编程语言中的WHILE循环。
WHILE循环允许我们在循环前先检查一个条件,并且只要条件为真,就会继续执行循环体。
4.无限循环:有时候需要创建一个无限循环,即一个永远不会结束的循环。
在FORTRAN中,我们可以使用无条件的循环退出语句来跳出循环。
5.循环控制:在循环内部,我们可以使用控制语句来控制循环的执行方式。
这些控制语句包括CONTINUE、EXIT、CYCLE和END。
6.循环的应用:循环结构在许多数学和科学计算问题中都有广泛应用,如求和、求平均值、计算阶乘、寻找最大和最小值等。
循环程序设计是编程中非常重要的一部分,因为它可以帮助我们处理大数据集和执行复杂算法。
FORTRAN95提供了一系列强大的循环结构,使得我们能够更加灵活和高效地处理各种问题。
在循环程序设计中,重点应该放在优化循环的执行。
通过合理地选择循环变量的初始值、结束值和步长,以及使用合适的循环控制语句,可以使循环更加高效。
此外,避免在循环体内进行过多的计算和IO操作,可以减少循环的执行时间。
总之,循环程序设计是编程中一个基本但重要的概念。
FORTRAN95提供了丰富的循环结构和控制语句,使得我们能够更加高效地处理各种问题。
在实际应用中,我们应该根据具体问题的要求,合理选择和优化循环结构,以求得更好的性能和效果。
第四讲 循环结构的Fortran 程序设计
§3 Fortran循环结构程序设计的其它问题 一、do循环与do while循环的互换
Do循环和do while循环是Fortran90中常用的2种基本循环结构, 前者主要用于确定循环次数的问题、而后者则常用来处理事先 无法确定循环次数的问题,但也并非绝对,很多情况下二者可 以互换使用。 比如:输入一个整数,判断是否为素数。 分析:所谓素数指这样的整数:除了 1和本身不能被其它任何 数整除的数。判断一个数是否为素数,可以按照 2 , 3 , … , m-1逐一检查能否除下,但当m很大时检查量太大。 有一个结论:只需检查 2 , 3 , … , m1/2 即可判断 m 是否为素数。
i+e3→i r-1→r
end do下面的语句 5
(2)由于在循环过程 中,循环变量会自动按 循环要求变化,因此不 能在循环体内给循环变 量进行赋值。
Integer i Do i=1,5,2 i=i+1 Print*,i End do End Error for3598: assignment to variable i detected between i and = Integer i,m Do i=1,10,2 m=i End do Print*,i,m End 输出为:11 9
11
(2)cycle语句
Cycle 语句是用来结束本次循环,即跳过循环体中尚未执行的 语句。在循环结构中, cycle 语句将使控制直接转向循环条件 的测试部分,从而决定是否继续执行循环。
Cycle语句与exit语句的区别在于:cycle语句只是结束本次循 环,而不是终止整个循环的执行。Exit语句则是结束所在循环, 跳出所在循环体。 Integer:: x=0,y=0
FORTRAN语言程序设计
n 是一个十进制数字(0~9)序列。
Kind值为:1、2、4、8之一。分别表示1、2、4、8个字节个数。
FORTRAN 90/95标准中整型常量的范围没有明确规定。
例如:122、0、-36、559_2
均为合法的整型常量
100.0、100,000、100 0、1002 均为非法的整型常量
5.6.2.2 实型常量
5.5 程序的书写格式 (1)固定格式:将一个语句行分为若干个区域,如下图所示
:
5.6 数据类型
5.6.1 基本概念 1.内部数据类型 FORTRAN语言将内部数据划分为以下类型: 整型 实型 算术型 数据类型 复型 逻辑型 字符型 2.种别 一个数据在内存中均占有一定字节个数的存储单元。上述每类数据都有 其不同的种别(即Kind)特性,即上述每类数据根据其种别特性(即 Kind值)的不同分别拥有不同字节个数的存储单元。 3.数据对象 1)常量:程序运行时,其值不能改变的量,称为常量。如:5,3等等。 2)变量:程序运行时,其值可以改变的量,如:变量a, a是一个存储单元
第四章 FORTRAN语言开发环境
详见教材:3.3 FORTRAN语言 开发环境
第五章 FORTRAN 语言基础知识
5.1 字符集
FORTRAN语言允许使用的字符集为:
fortran中loop_time的使用方法 -回复
fortran中loop_time的使用方法-回复Fortran是一种古老且广泛使用的编程语言,特别适用于科学计算和数值分析。
在Fortran中,循环结构是编写程序时经常用到的一种重要工具。
循环可以让程序重复执行一段代码块,直到满足特定条件为止。
loop_time 是Fortran中循环结构的一个重要组成部分,它可以用来控制循环的次数。
本文将一步一步地解释loop_time在Fortran中的使用方法并提供一些示例。
首先,让我们了解一下Fortran中的循环结构。
循环结构通常使用do关键字来定义,其基本语法如下:Fortrando index = start, stop, step! 执行的代码块end do其中,index是用于迭代的循环变量,start是循环变量的初始值,stop 是循环变量的结束值,step是循环变量每次迭代的步长。
现在,让我们开始介绍loop_time的使用方法。
loop_time是一个整数变量,用于指定循环的次数。
在循环结构中,可以使用该变量来控制循环的次数。
要使用loop_time,首先需要在程序中声明并初始化该变量。
在Fortran 中,可以使用以下语句来声明和初始化变量:Fortraninteger :: loop_time = 10上述语句将声明一个名为loop_time的整数变量,并将其初始化为10。
接下来,在循环结构中使用loop_time来控制循环的次数。
例如,我们想要重复执行某个代码块10次,可以使用以下代码:Fortrando i = 1, loop_time! 执行的代码块end do在上述代码中,循环变量i的初始值为1,结束值为loop_time的值(即10),每次迭代的步长为1。
因此,代码块将会被执行10次。
需要注意的是,循环变量的类型必须与loop_time的类型相匹配。
在上述示例中,循环变量i被声明为整数类型,与loop_time的整数类型相匹配。
第五章 fortran循环结构
例
INTEGER X DO X=1.2,5.6,2.4 PRINT *,X END DO END 程序执行后的输出结果为: 1 3 5 如果循环变量的步长为0,程序在编译和连接时 都没有问题,但在执行过程中求循环执行次数时 将出现语法错,即进行了除零运算。这是应当避 免的。
计算e1、e2、e3的值 e1→i 计算循环次数r r=0? N 执行循环体 Y
5.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
2. CYCLE语句Fra bibliotekCYCLE语句用来结束本次循环,即跳过循 环体中尚未执行的语句。在循环结构中, CYCLE语句将使控制直接转向循环条件 测试部分,从而决定是否继续执行循环。 CYCLE语句和EXIT语句的区别在于: CYCLE语句只结束本次循环,而不是终 止整个循环的执行。EXIT语句则是结束 所在循环,跳出所在循环体。
例5.13 已知 F 计算M的值。
ij
= Xi2 + Yj2
Si = ∑Fij
j =1
10
M = ∏Si
i=1
5
Xi = 2,4,6,8,10 Yj = 0.1,0.2,0.3,LL,1.0
分析:该问题要求对5个X值,10个Y值,计算出 50个F值。然后每10个F相加得到一个S值,共得 到5个S值。最后这5个S相乘,得到一个M值。可 以用一个二重循环来计算和输出各值。 每个S值是由10个F值累加得到的。累加前S要 清0。M是由5个S值累乘得到的,累乘前M应置1。 X和Y都是有规律的值,可以由循环变量I,J得到。
fortran do while循环语句
fortran do while循环语句Fortran是一种编程语言,它早在1950年代末就被开发出来,用于数值计算和科学计算。
Fortran的全称为Formula Translation,意为公式翻译,它是一种高级语言,用于解决科学和工程问题,尤其是计算密集型问题。
Fortran的语法简单,易学易用,同时也具有高效、可移植性和可靠性等特点,成为了科学计算的标准之一。
在Fortran中,循环语句是一种常用的编程结构之一,Fortran do while循环语句也是其中之一。
Fortran do while循环语句的语法结构如下:``` do while (condition) Statement block end do ```其中,condition是一个逻辑表达式,可以是一个变量或常量的比较结果、逻辑表达式结果,也可以是使用逻辑运算符和比较运算符组合的结果。
当condition为真时,statement block部分的语句将被执行,否则跳过循环。
循环结束后,控制权回到do while语句的开头,重新判断condition是否为真,如果为真,继续执行循环,否则退出循环。
Fortran do while循环语句中的statement block部分可以包含多行语句,可以是任何有效的Fortran语句,例如赋值语句、条件语句、输入输出语句、函数调用等等。
下面是一个Fortran do while循环语句的示例程序:``` program dowhile_example implicitnone ! 显示声明所有变量 integer :: i=0, j=0 do while (i .lt. 10) ! 当i小于10时执行循环i = i + 1 ! 表示i的值每次循环增加1 j = j + i ! 表示j的值等于i的和 end do print*, "j的值:", j ! 输出j的值 end programdowhile_example ```在这个示例程序中,我们定义了两个整型变量i和j,然后使用do while循环语句对i进行循环,只要i小于10就一直执行循环,每次循环i的值都会加1,同时j的值也会增加i的值,最终输出j的值。
fortran中loop_time的使用方法
fortran中loop_time的使用方法Fortran语言是一种广泛用于科学计算和工程计算的编程语言。
在Fortran中,loop_time(循环时间)是指在编写程序时,通过循环结构控制程序的执行次数和循环时间的参数。
使用循环结构可以使程序执行特定的任务多次,从而提高代码的重用性和效率。
本文将介绍Fortran中loop_time的使用方法,以帮助读者更好地理解和使用该语言特性。
在Fortran中,循环结构主要通过do循环语句来实现。
do循环语句有三种常见形式:do循环、do while循环和do until循环。
这些循环结构都可以用来控制loop_time,即循环执行的次数。
1. do循环do循环是Fortran中最常见的循环结构,用于指定循环次数。
其语法形式如下:```fortrando i = start, end, step! 循环执行的语句块end do```其中,start表示循环起始值,end表示循环结束值,step表示每次循环增加或减少的步长,默认为1。
在每次循环执行时,循环变量i会自动递增或递减,直到满足结束条件为止。
示例代码如下:```fortranprogram do_loop_exampleimplicit noneinteger :: ido i = 1, 10, 2print *, iend doend program do_loop_example```上述代码中,do循环从1到10,步长为2,输出结果为1,3,5,7,9。
通过修改start、end和step的值,可以灵活控制循环次数和输出结果。
2. do while循环do while循环是一种在未知循环次数的情况下使用的循环结构,只有在满足一定条件时才进行循环。
其语法形式如下:```fortrando while (condition)! 循环执行的语句块end do```在每次循环执行之前,先判断condition中的条件是否成立,如果成立则继续执行循环,否则立即结束循环。
fortran的循环程序设计(彭国伦95实例PPT)
例6
program ex06 implicit none integer :: dest=9 integer floor do floor=1,dest if ( floor==4) cycle write(*,*) floor end do stop end
这个程序使用了一个计数循环,在每一次的 循环中,都把计数器(变量floor)给显示出 来,程序中第7行的if判断会使得floor==4时 执行cycle命令,程序会略过cycle后面的write 描述,又跑到循环的入口继续执行,floor值 此时也累加到5来进行下一个循环。 在程序中,如果需要略过目前的循环程序模 块,直接进入下一个循环时,就可以使用 cycle命令
加上2.再把计算得到的结果储存回变量ans的 内存所在位置
注意: 循环的增值并没有规定一定要是正数,它可 以是负数,让计数器一直递减下去。不过这 个时候循环的计数器终止值必须是小于计数 器的起始值,递减的循环终止条件会由大于 终止值,改成小于终止值时结束循环。下面 的程序代码同样可以执行循环10次,在循环 中i值会从10递减到1,i=0时结束循环。 do i=10,1,-1 write(*,*)I end do
一开始把guess的初值设置成“0”,这是因为一个变量在声 明之后所“先天存在”的数值无法预料,虽然fortran中通常 会把它设置为“0”,但是建议还是自己来做设置初值的操作。 要是这个先天的数值刚好等于所要猜测的数值时,程序中的 循环就不会执行。 这个程序是一个很典型必须使用do while循环来解决的程序。 因为在设置程序时,根本就不能预测到用户需要猜几次才会 猜对,也就不知道循环要执行几次。所以在此设置的循环执 行条件是: do while(abs(guess-weight)>e) 这个条件基本上可以看成do while(guess/=weight),也就 是guess不等于weight时 ,就继续猜下去。第5章曾介绍过, 使用浮点数时,最好不要直接判断两个数字是否相等,必须 使用abs(guess-weight)>e)这个方法来判断,允许一些 误差。第7行中的判断式意义是,当guess-weight得到的值 和0相差很远时,就把这两个数字视为不相等。Dangguess 不等于weight时,就能继续执行循环。
Fortran基本计算之循环控制结构
第11章 基本计算(三)循环控制结构 上章讨论的控制结构的特点是通过判别条件来对结构内的块进行选择,所对应的算法结构,最简单的例子,就是解一元二次方程,在输入方程所以的参数值之后,需要首先计算一个判别式,然后根据判别式的值,再选择使用哪个公式,也就是计算的途径,才能够给出最终的解。
在本章所讨论的控制结构的特点则是针对结构内的块进行多次的重复运算,每完成一次运算,都判别一下是否需要把此次运算结果作为输入,再进行一次运算。
这种控制结构所对应的算法结构,一个最简单的例子,就是求级数的部分和。
我们知道对于具有通项表达式的级数,求它的部分和的每一项,总是需要进行同样的运算过程,如果使用按照序列形式排列的程序结构,那么需要计算多少项,就需要写下多少条语句,把它们顺序排列下来,才能做到程序走一遍即完成计算。
这样的算法设计显然是没有利用运算过程里所表现的循环结构,如果使用一种控制结构与循环过程对应,让程序的运行能够重复表示通项公式的表达式计算,就能够用一个表达式代替所有项的表达式,显然更加合理。
【例11-1】 设有一个级数:311/ni x i ==∑如果要求级数在N=K 时的值,如果一定要使用序列结构的程序,那么在程序当中肯定会出现如下K 个表达式顺序排列的情形:…I=1SUM=1/I**3I=2SUM=SUM+1/I**3I=3SUM=SUM+1/I**3…I=KSUM=SUM+1/I**3由于这K 个表达式是一样的,因此如果使用如下的一个控制结构,只需要使用一个表达式赋值语句,就可以表示整个循环运算过程:…SUM=0.0DO I=1,KSUM= SUM+1/I**3END DO上面的控制结构,就是本章所要讨论的DO结构。
实际上这是一种基本的计算过程,为很多重要算法的实现提供了基础。
FORTRAN语言提供用来进行循环控制的主要结构就是DO结构,因此本章主要讨论的就是DO结构。
最后还会简略的讨论有关分支转移的实现问题,尽管它们不属于循环控制,但是由于在现代结构性编程风格的要求下,这种分支转移是一种过时的方式,因此简略地附加在本章后面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
( 1 ) CYCLE 语句的执行将改变循环体的执
行顺序,并不终止循环的执行。 ( 2 )当执行 CYCLE 语句后,重新执行下一 轮循环时,循环变量应增加一个步长。
例如:输入一组数据( 100 个),将大与 0 的 数据打印出来。程序为:
IMPLICIT NONE
REAL X
INTEGER I
例: DO I=2,5,1的循环次数为4. DO X=2.2,5.4,1.1的循环次数为3. DO I=2.2,5.4,1.1的循环次数为4. (3)正常出口:从循环的ENDDO语句脱离循环的 称为正常出口,否则称为非正常出口.脱离循环后 DO I=1,5 循环变量保留脱离时的值.例:
DO I=1,5 J=I*I END DO PRINT*,I,J 输出 6,25 IF(I>3)GOTO100 J=I*I END DO 100 PRINT*,I,J 输出
例 : 求 Fibonacci 数列: 1 , 1 , 2 , 3, 5, 8 , …… 的前40个数.
1
1
2
3
5
8
13
程序为:
F1=1;F2=1 PRINT*,F1,F2 DO I=3,40 F=F1+F2 PRINT*,F F1=F2 F2=F END DO END
F1 +F2= F
F1 +F2 = F
§3.1有循环变量的DO循环结构 重复执行一组操作称为循环。算法中构成 循环的结构称为循环结构 。 在FORTRAN中,实现循环结构的最直接方 法就是用 GOTO 语句 , 但这种方法不符合结 构化程序设计的思想,并不值得提倡。 FORTRAN 90一般有两种方法实现循环 控制:DO_ENDDO语句和do While_ENDDO语句。
DO I=1,100
READ*,X
IF(X<=0)CYCLE
PRINT*,X
E复Do循环结构 一般形式: [DO循环结构名:] DO 循环体statements ENDDO [DO循环结构名] 重复Do循环结构一般来说是一个死循环,必须 在其循环体内用逻辑IF语句结合EXIT语句 或GOTO语句等迫使循环中止。
INTEGER::I,K,N=0,S=0 EXAM1:DO I=1,100
READ*,K
IF(K>9000)EXIT EXAM1
IF(MOD(K,2)==0)THEN
N=N+1
S=S+K;ENDIF
ENDDO EXAM1 PRINT*,’N=’,N,’S=’,S END
CYCLE语句使循环体中在它后面的语句不被执 行,而重新执行下一轮循环,格式为: CYCLE [DO循环结构名] 可用IF语句结合CYCLE语句有条件地转移循环。
4,9
END
END
DO循环结构命名方式与块IF结构相仿:
DO循环结构的命名
DO循环结构名: DO 循环变量v= e1,e2[,e3] 循环体statements ENDDO[循环结构名]
Do循环的例题 例:计算n! 例:前n个自然数之和 read(*,*) N S=0 do I = 1,N S = S+I ENDDO Write(*,*) N,S END
注意: (1)循环变量的值在循环体中可以引用 ,不能被重 新赋值.例: 而 DO I=1,20 DO I=1,20
J=I*I
PRINT*,I,J
I=I*I
PRINT*,I
END
是可以的.
END
非法.
(2)E1,E2,E3 的类型与 V 的类型可以相同 , 也可以 不同,当类型不同时,系统自动将E1,E2,E3的类型 转换成V的类型.
格式:DO 循环变量v= e1,e2[,e3] 循环体statements ENDDO 功能 : 对于变量 v 的值从初值 e1 按增量 e3 增 加到终值 e2, 反复执行循环体。 e1,e2,e3 都是 算术表达式,e3的缺省值为1。循环变量v是代 数量(整型/实型)。
例: DO I=10,2,-2 print *,I,I*I ENDDO
循 环次数 r=INT((e2-e1+e3)/e3), 如 果初始 值 表达式 e1, 终止值表达式 e2, 增量表达式 e3 中有 实型表达式 ,循环就可能少做一次。循环次数 至少为零。 例: E3 = 0.1 Do x = 0,50.1,E3 print *,X ENDDO 0.1不能精确表示,50.1/0.1得到500.9几,被INT() 直接截断,循环次数=500。
read(*,*) N
f=1
do I = 2,N
f = f*I
ENDO
Write(*,*) n,f END
例:输入100个数,求其中正数的个数及其平 均值。
S = 0;N = 0 Do K = 1,100 Read(*,*) A IF(A>0) Then N = N+1 S = S+A End If ENDDO If(N>0) Print *, N,S/N End
F1 + F2 = F
DO I=1,19 F1=F1+F2 F2=F1+F2 END DO
§3.2 重复Do循环结构 §3.2.1中断语句(EXIT,CYCLE)
EXIT语句强制退出循环,格式为: EXIT [DO循环结构名]
可用IF语句结合EXIT语句有条件地中断循环。
例如:输入一组整数(个数小于100),求这 组数的偶数个数和偶数之和 。当某数大于 9000时程序结束。程序为:
最好用整型变量来控制循环,以避免少做 一次的问题。 例: X=0 Do K = 0,500 print *,X X = X+0.1 EndDO END
返回
Do 循环执行过程 S1: 求表达式e1,e2,e3的值,编译系统分别用 三个与循环变量v相同类型的临时变量(不妨 记为v1,v2,v3)来存放其值。 S2:循环变量v=v1 S3: 计算循环次数r=INT((v2-v1+v3)/v3) S4: 若r ≯0,则转S9 S5: 执行循环体 S6: 循环变量v增加增量v3 S7: 循环次数r减1 S8:转S4 S9:循环终端语句后第一条可执行语句。
例:判断整数N是否素数 Integer n,a read*,n a=2 Do if(mod(n,a) == 0.or.a>n/2) exit A = a+1 enddo If(a<n/2) then print *,n,'不是素数' Else print *,n,‘是素数’ Endif end