大家好,欢迎来到IT知识分享网。
02-Fortran基础–Fortran操作符与控制结构
0 引言
运算符和控制流程对编程语言是必须的,Fortran的操作符和控制流程涉及到各种数学运算符、逻辑运算符以及控制结构。下面是Fortran的运算符和控制流程的基础内容。
1 操作符
1.1 数学运算符
- + 加法
- – 减法
- * 乘法
- / 除法
- 幂运算
a = 10 b = 5 c = a + b ! c = 15 d = a * b ! d = 50 e = a ** 2 ! e = 100
1.2 逻辑运算符
- .and. 逻辑与
- .or. 逻辑或
- .not. 逻辑非
logical :: p, q, r p = .true. q = .false. r = p .and. q ! r = .false.
1.3 关系运算符
关系运算符名称 | 写法1 | 写法2 |
---|---|---|
等于 | == | .eq. |
不等于 | /= | .ne. |
小于 | < | .lt. |
小于等于 | <= | .le. |
大于 | > | .gt. |
大于等于 | >= | .ge. |
integer(4) :: x, y x = 10 y = 5 if (x > y) then continue ! 执行操作 end if if(x .le. y)then ! 判断条件等价于 if(x<=y)then continue ! continue关键字表示继续执行,理解为占位; end if
2 控制流程
2.1 条件结构
IF-THEN:根据条件执行不同的操作。
! 条件判断语句的一般形式 if (condition) then ! 执行操作 end if
示例:
program test2 real(8) :: x call RANDOM_SEED() ! 随机种子 call RANDOM_NUMBER(x) ! 生成[0-1]的随机数赋值给x if(x > 0.5)then ! 判断随机数是否大于0.5 print *,'x>',0.5 else print *,'x<=',0.5 endif end program
2.2 循环结构
Fortran 中的循环结构主要包括 DO 循环和 DO WHILE 循环。
2.2.1 DO循环
DO:执行指定次数的循环。
do index = start, end, step ! 循环体 end do
其中:
index
是循环控制变量,它在每次循环迭代时递增或递减。
start
是循环控制变量的初始值。
end
是循环控制变量的结束值。循环将一直执行,直到 index 达到或超过 end。
step
是循环控制变量的步长。如果 step 为正值,则 index 在每次迭代时递增;如果 step 为负值,则 index 在每次迭代时递减。
在循环体中,你可以执行任意操作,包括数学计算、逻辑判断、数组操作等。例如:
示例:
PROGRAM LoopExample IMPLICIT NONE INTEGER :: i ! 打印从1到10的偶数 DO i = 2, 10, 2 PRINT *, i END DO END PROGRAM LoopExample
在上面的例子中,循环控制变量 i 的初始值为2,结束值为10,步长为2。因此,循环将从2开始,每次递增2,直到达到或超过10。在循环体中,PRINT * 语句用于打印循环变量 i 的值,从而打印出从2到10的所有偶数。
2.2.1 DO WHILE循环
DO WHILE 循环用于在满足条件时重复执行一段代码,其一般形式如下:
DO WHILE (condition) ! 执行的代码 END DO
condition 是一个逻辑表达式,当其为真时循环继续执行,为假时循环结束。
示例:
PROGRAM DoWhileExample IMPLICIT NONE INTEGER(4) :: count count = 0 DO WHILE (count < 5) count = count + 1 PRINT *, "循环次数:", count END DO END PROGRAM DoWhileExample
在这个示例中,当 count 小于 5 时,循环继续执行,每次增加 count 的值,并打印出循环次数。当 count 达到 5 时,循环结束。
这些是 Fortran 中常用的循环结构,它们可以帮助你重复执行特定的代码块,实现各种算法和任务。
2.3 分支结构
Fortran 中的分支结构通常有 IF 语句和 SELECT CASE 语句两种形式。
2.3.1 IF 语句
IF 语句用于根据条件执行不同的代码块。它的一般形式如下:
IF (condition) THEN ! 如果条件为真,则执行此处的代码 ELSEIF (condition2) THEN ! 如果上一个条件为假且条件2为真,则执行此处的代码 ELSE ! 如果所有条件都为假,则执行此处的代码 END IF
其中,condition、condition2 等是逻辑表达式,可以是关系运算、逻辑运算的组合,用于判断是否执行相应的代码块。
示例:
PROGRAM IfExample IMPLICIT NONE INTEGER :: x x = 10 IF (x > 0) THEN PRINT *, "x 是正数" ELSEIF (x < 0) THEN PRINT *, "x 是负数" ELSE PRINT *, "x 是零" END IF END PROGRAM IfExample
在这个示例中,根据 x 的值,打印出不同的消息。
2.3.2 SELECT CASE 语句
SELECT CASE 语句用于根据表达式的值选择执行不同的代码块。它的一般形式如下:
SELECT CASE (expression) CASE (value1) ! 如果表达式的值等于 value1,则执行此处的代码 CASE (value2) ! 如果表达式的值等于 value2,则执行此处的代码 CASE DEFAULT ! 如果表达式的值与所有值都不匹配,则执行此处的代码 END SELECT
示例:
PROGRAM SelectCaseExample IMPLICIT NONE INTEGER :: day day = 3 SELECT CASE (day) CASE (1) PRINT *, "星期一" CASE (2) PRINT *, "星期二" CASE (3) PRINT *, "星期三" CASE DEFAULT PRINT *, "未知" END SELECT END PROGRAM SelectCaseExample
在这个示例中,根据 day 的值,打印出相应的星期几。希望这些示例能够帮助你理解 Fortran 中的分支结构。
通过控制结构,可以实现根据不同条件执行不同的代码块、重复执行一段代码、选择不同的执行路径、以及控制循环的流程。这些控制结构在Fortran编程中起着至关重要的作用,帮助程序实现复杂的逻辑和算法。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144430.html