Fortran学习笔记——2.流程控制
第一部分基本内容包括了变量的声明,输入输出语句,接下来是条件语句和循环语句等运算的流程控制。
if 条件语句
无需多言,例子即可:
1 | if(a > 10) then |
在 if 后面必须接 then,if 和 end if 构成一个标准的条件结构。支持 if 结构的嵌套。可以使用简单的单行 if,不需要 end 和 then。
1 | if(a>10) b=a |
逻辑语句和逻辑运算
在 if 语句之后,顺便介绍逻辑类型和运算。逻辑类型:.true.,.false.。0 被视作 false,1 被视作 true。
1 | logical var |
逻辑运算:
- Fortran 77:.EQ.,.NE.,.GT.,.GE.,.LT.,.LE.。
- Fortran 90:==,/=,>,>=,<,<=。 注意不等号和 c 语言不同。
集合运算:优先级比上面的逻辑运算更低,.AND.,.OR.,.NOT.,.EQV.,.NEQV.。例如
1 | if(a>=80 .and. a<90) then |
select 语句
例如
1 | select case(a) |
相当于 c 语言的 switch,每个分支自带 break。select 判断的变量 a 只能是整数,字符或者逻辑变量,不允许实数复数。case 里面只支持常量,支持语法糖(3:5),表示在这两个值的闭区间内均可。
特殊命令
- pause: 程序暂停,等待用户按下 enter 键后继续执行。
- stop: 程序直接退出。
- continue: 不大有用,相当于无效语句。
- goto: 强制跳转(垃圾语句)。
- cycle: 在循环中相当于 c 语言的 continue;
- exit: 在循环中相当于 c 语言的 break。
do 循环语句
例如
1 | do count=1,10,2 |
相当于 c 语言的 for 循环,其中最后的步长可缺省,默认为 1,步长可以为负数。Fortran 77 更麻烦,它的 do 循环不使用 end do 而需要指定行号来标记循环块的结束行。
1 | do 12138,counter=1, b, 2 |
行号称作行的标记更合适,不是第几行的含义。
do while 循环语句
例如
1 | do while(a<10) |
类比到 c 语言中,不是 do-while 语句,而是 while 语句,在第一次进入代码块之前就会进行逻辑判断。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment