02-Fortran基础--Fortran操作符与控制结构

embedded/2024/12/20 0:02:30/

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! 打印从110的偶数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编程中起着至关重要的作用,帮助程序实现复杂的逻辑和算法


http://www.ppmy.cn/embedded/36728.html

相关文章

超详细——集成学习——Adaboost实现多分类——附代码

资料参考 1.【集成学习】boosting与bagging_哔哩哔哩_bilibili 集成学习——boosting与bagging 强学习器&#xff1a;效果好&#xff0c;模型复杂 弱学习器&#xff1a;效果不是很好&#xff0c;模型简单 优点 集成学习通过将多个学习器进行结合&#xff0c;常可获得比单一…

2024.05.07作业

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//窗口相关设置this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWindowTitle…

HTML_CSS学习:尚硅谷——尚品汇

一、index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>荣耀</title> <!-- 引入页签图标--><link rel"shortcut icon" href"./HONOR%20.ico" type&qu…

ASP.NET小型企业办公耗材库存管理软件的设计与实现

摘 要 库存管理系统是将企业的存和转等企业的经营业务有机的结合起来&#xff0c;达到数据共享、降低成本、提高效率。本系统前台采用.NET,后台数据库采用SQL Server 2000&#xff0c;语言采用C#。本系统实现的主要功能有库存查询、进货作业、领料作业、库存盘点、损坏处理等…

vue入门-项目目录详解

your-vue-project/ ├── node_modules/ # 项目依赖的npm包 ├── public/ # 公共资源和配置 │ ├── index.html # 项目的入口html文件 │ └── ... # 其他公共资源文件&#xff0c;如favicon.ico等 ├── src/ # 项目的源代码目录 │ ├── assets/ # 静态资源目录&a…

【机器学习系统的构建】从模型开发的过程讲清楚K-Fold 交叉验证 (Cross-Validation)的原理和应用

0、前言 最近在学习集成学习的时候了解到了k折交叉验证&#xff0c;其实在之前学习吴恩达老师的课程中也学过交叉验证&#xff0c;但是当时也不是很明白。这次借着自己的疑问以及网上搜找资料&#xff0c;终于把交叉验证给弄明白了。 在弄清楚前&#xff0c;我有这样几个疑问…

【强训笔记】day11

NO.1 思路&#xff1a;枚举&#xff0c;设一号大礼包的数量为x&#xff0c;二号大礼包的数量为y&#xff0c;用循环枚举一号大礼包的个数得到二号大礼包的数量&#xff0c;使得某一时刻axby的值最大。 代码实现&#xff1a; #include<iostream>using namespace std;lo…

速卖通新卖家测评攻略:从入门到精通

在电商行业中&#xff0c;测评被广泛认为是提升产品转化率和销量的有效手段。对于速卖通的卖家而言&#xff0c;测评的必要性更是显而易见。测评&#xff0c;本质上与国内电商的补单行为相似&#xff0c;是一种通过增加销量来提升产品权重的方法。 特别是在竞争激烈的类目中&a…