02-Fortran基础--Fortran操作符与控制结构
- 0 引言
- 1 操作符
- 1.1 数学运算符
- 1.2 逻辑运算符
- 1.3 关系运算符
- 2 控制流程
- 2.1 条件结构
- 2.2 循环结构
- 2.3 分支结构
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) thencontinue ! 执行操作
end if
if(x .le. y)then ! 判断条件等价于 if(x<=y)thencontinue ! continue关键字表示继续执行,理解为占位;
end if
2 控制流程
2.1 条件结构
IF-THEN:根据条件执行不同的操作。
! 条件判断语句的一般形式
if (condition) then! 执行操作
end if
示例:
program test2real(8) :: xcall RANDOM_SEED() ! 随机种子call RANDOM_NUMBER(x) ! 生成[0-1]的随机数赋值给xif(x > 0.5)then ! 判断随机数是否大于0.5print *,'x>',0.5elseprint *,'x<=',0.5endifend 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 LoopExampleIMPLICIT NONEINTEGER :: i! 打印从1到10的偶数DO i = 2, 10, 2PRINT *, iEND DOEND 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 DoWhileExampleIMPLICIT NONEINTEGER(4) :: countcount = 0DO WHILE (count < 5)count = count + 1PRINT *, "循环次数:", countEND 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 IfExampleIMPLICIT NONEINTEGER :: xx = 10IF (x > 0) THENPRINT *, "x 是正数"ELSEIF (x < 0) THENPRINT *, "x 是负数"ELSEPRINT *, "x 是零"END IFEND PROGRAM IfExample
在这个示例中,根据 x 的值,打印出不同的消息。
2.3.2 SELECT CASE 语句
SELECT CASE 语句用于根据表达式的值选择执行不同的代码块。它的一般形式如下:
SELECT CASE (expression)CASE (value1)! 如果表达式的值等于 value1,则执行此处的代码CASE (value2)! 如果表达式的值等于 value2,则执行此处的代码CASE DEFAULT! 如果表达式的值与所有值都不匹配,则执行此处的代码
END SELECT
示例:
PROGRAM SelectCaseExampleIMPLICIT NONEINTEGER :: dayday = 3SELECT CASE (day)CASE (1)PRINT *, "星期一"CASE (2)PRINT *, "星期二"CASE (3)PRINT *, "星期三"CASE DEFAULTPRINT *, "未知"END SELECTEND PROGRAM SelectCaseExample
在这个示例中,根据 day 的值,打印出相应的星期几。希望这些示例能够帮助你理解 Fortran 中的分支结构。
通过控制结构,可以实现根据不同条件执行不同的代码块、重复执行一段代码、选择不同的执行路径、以及控制循环的流程。这些控制结构在Fortran编程中起着至关重要的作用,帮助程序实现复杂的逻辑和算法。