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

news2024/11/28 18:39:07

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) 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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1650092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习云计算亚马逊云科技AWS的6大教科书神级别免费网站

亚马逊☁️(AWS)是全球云行业最&#x1f525;火云平台&#xff0c;云行业的就业机会和市场前景都非常巨大&#xff0c;现在通过学AWS去转云会是个千载难逢的好机会。小李哥这次来盘点学习AWS的6大教科书级免费官方网站(免费课程&#xff0b;动手实验)。欢迎大家点击图片左下角加…

栈的实现以及c语言解决括号匹配问题

一、栈的实现 1、头文件 typedef int STDataType; typedef struct Stack {STDataType* _a;int _top; // 栈顶int _capacity; // 容量 }Stack; // 初始化栈 void StackInit(Stack* ps); // 入栈 void StackPush(Stack* ps, STDataType data); // 出栈 void StackPop(S…

C语言内存函数memcpy与memmove

一.memcpy的使用和模拟实现 1.函数原型 void* memcpy(void* destination, const void* source, size_t num); destination是目标内存块的指针 source是源内存块的指针 num是要复制的字节数 .函数memcpy从source的位置开始向后复制 num个字节 的数据到destination指向的内存位置…

无人零售,重塑购物新纪元

在这个快节奏的时代&#xff0c;科技的每一次跃进都在悄无声息地改变着我们的生活方式。而今&#xff0c;无人零售正以雷霆之势&#xff0c;颠覆传统购物模式&#xff0c;为我们带来前所未有的便捷与智能体验。想知道无人零售如何彻底改变我们的购物方式吗&#xff1f;跟随我&a…

2024五一劳动节活动策划方案

2024五一劳动节打工人青松游园大会&#xff08;劳动节放青松主题&#xff09;活动策划方案-51P.pptx 活动策划信息&#xff1a; 方案页码&#xff1a;51页 文件格式&#xff1a;PPT 方案简介&#xff1a; 劳动是世界上最伟大的事 所以我们该把一些劳动留给明天&#xff0…

Offline:IQL

ICLR 2022 Poster Intro 部分离线强化学习的对价值函数采用的是最小化均方bellman误差。而其中误差源自单步的TD误差。TD误差中对target Q的计算需要选取一个max的动作&#xff0c;这就容易导致采取了OOD的数据。因此&#xff0c;IQL取消max,&#xff0c;通过一个期望回归算子…

【Stable Diffusion本地部署简易教程】从入门到实践

Stable Diffusion 本地部署指南&#xff1a;简单易懂的图文教程 引言 Stable Diffusion是一种深度学习模型&#xff0c;用于生成高质量的图像。本地部署意味着你可以在自己的计算机上运行这个模型&#xff0c;从而无需依赖于在线服务。本教程将循序渐进地指导你如何在自己的计…

勾股定理 口诀

def t_o(a):t int(a/2)b t*t-1c t*t1f (a*ab*bc*c)print(f,ou,a,b,c,a*ab*b,c*c)def t_j(a):t a*abint(t/2)c t-bf (a*ab*bc*c)print(f,j-,a,b,c,f,a*ab*b,c*c)for i in range(2,100,2):t_o(i)t_j(i1) 奇数平方写连续 偶数半方加减一

Java 框架安全:Spring 漏洞序列.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

【网络编程】http协议

预备知识 什么是http协议 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一个应用层的协议&#xff0c;用于在网络中传输超文本&#xff08;如HTML文档&#xff09;。HTTP协议建立在TCP/IP协议之上&#xff0c;是Web浏览器和Web服务器…

数据结构之链表深度讲解

小伙伴们&#xff0c;大家好呀&#xff0c;上次听我讲完顺序表想必收获不少吧&#xff0c;嘿嘿&#xff0c;这篇文章你也一样可以学到很多&#xff0c;系好安全带&#xff0c;咱们要发车了。 因为有了上一次顺序表的基础&#xff0c;所以这次我们直接进入正题&#xff0c;温馨…

Meta最新研究: Flash Attention 为何是系统性能瓶颈?

I. 引言 随着机器学习趋向于更大和更复杂的模型,模型训练过程变得越来越计算和资源密集。生成式AI的出现进一步推动了模型开发的边界,大型语言模型(LLMs)通常在数百或数千个GPU上训练数月。以LLaMA2的70-B参数模型为例,需要1,720,320 GPU小时来训练。对于如此长的训练作业,训练…

2024-05-07 商业分析-赚钱之前怎么预估风险-记录

摘要: 2024-05-07 商业分析-赚钱之前怎么预估风险-记录 赚钱之前怎么预估风险 好&#xff0c;大家好&#xff0c;今天我们来讲的是叫什么赚钱之前怎么评估风险啊&#xff0c;这个问题啊提的很好啊&#xff0c;我们待会儿来讲啊。呃&#xff0c;首先呢今天这个主题呢来自于昨天…

腾讯云服务器之ssh远程连接登录

一、创建密钥绑定实例 创建密钥会自动下载一个私钥&#xff0c;把这个私钥复制到c盘 二、设置私钥权限 1、删除所有用户权限 2、添加当前用户权限 查看当前用户名 echo %USERNAME%三、ssh远程连接到服务器 ssh ubuntu175.xxx.xxx.112 -i C:\Crack\cs2.pem四、修改root密码 s…

2024年荆州中级工程师报名开始了吗?

2024年荆州中级工程师职称报名已经开始了 2024年荆州中级职称报名时间&#xff1a; &#xff08;一&#xff09;网上报名时间&#xff1a; 4月26日9时至5月10日16时。超过时间将不能操作。 &#xff08;二&#xff09;网上缴费时间&#xff1a; 4月26日9时至5月10日24时 网上…

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分&#xff0c;且大部分出在选择题&#xff0c;填空最多一两个 (仅供参考) 第十章 (理解概念为主&#xff0c;无需看推导过程) 第十一章

常用算法汇总

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;算法思维逻辑&#x1f43e; 文章目录 1.判断闰年2.计算从某天到某天的天数3.二分4. 前缀和5.差分6.图论6.1dfs6.2走迷宫 7.最短路7.1dijkstra7.2foly 8.并查集9.数论9.1gcd lcm9.2判断素数(质数)9.3分解质因…

TCP经典异常问题探讨与解决

作者&#xff1a;kernelxing TCP的经典异常问题无非就是丢包和连接中断&#xff0c;在这里我打算与各位聊一聊TCP的RST到底是什么&#xff1f;现网中的RST问题有哪些模样&#xff1f;我们如何去应对、解决&#xff1f;本文将从RST原理、排查手段、现网痛难点案例三个板块自上而…

AIGC技术带给我们什么?基于AIGC原理及其技术更迭的思考

AIGC技术带给我们什么&#xff1f;基于AIGC原理以及技术更迭的思考 前言 AI&#xff0c;这个词在如今人们的视野中出现频率几乎超过了所有一切其他的事物&#xff0c;更有意思的是&#xff0c;出现频率仅次于这个词的&#xff0c;几乎都会加上一个修饰亦或是前缀——AI&#…

【刷题篇】双指针(一)

文章目录 1、移动零2、复写零3、快乐数4、盛最多水的容器 1、移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 class Solution { pub…