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

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.hqwc.cn/news/674545.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024上半年软考新规,对高级论文科目不太友好

辽宁省发布了《关于2024年上半年计算机技术与软件专业技术资格(水平)考试批次安排的通知》&#xff0c;通知原文如下&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 1.…

QT-TCP通信

网上的资料太过于书面化&#xff0c;所以看起来有的让人云里雾里&#xff0c;看不懂C-tcpsockt和S-tcpsocket的关系 所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端&#xff1a; MainWindow::MainWindow(QWidget *parent) …

(MATLAB)安装指南

参考链接&#xff1a;MATLAB2019a安装教程&#xff08;避坑版&#xff09;

密码学《图解密码技术》 记录学习 第十三章

目录 第十三章 13.1 本章学习的内容 13.2 PGP 简介 13.2.1 什么是 PGP 13.2.2 关于 OpenPGP 13.2.3关于GNU Privacy Guard 13.2.4 PGP 的功能 公钥密码 数字签名 单向散列函数 证书 压缩 文本数据 大文件的拆分和拼合 13.3 生成密钥对 13.4 加密与解密 13.4.1 加密 生成…

安卓开发(二)Android开发基础知识

了解Android Android大致可以分为4层架构&#xff1a;Linux内核层、系统运行库层、应用框架层和应用层。 内核层&#xff1a;Android系统是基于Linux内核的&#xff0c;这一层为Android设备的各种硬件提供了底层的驱动&#xff0c;如显示驱动、音频驱动、照相机驱动、蓝牙驱动…

Star-CCM+分配零部件至区域1-将所有零部件分配至区域

前言 Star-CCM中&#xff0c;在划分网格之前需要将零部件分配至区域&#xff0c;然后才可以划分网格。如下图1所示&#xff0c;分配零部件至区域需要选择创建区域的方式、创建边界的方式以及交界面的类型。 图1 将零部件分配至区域 1 创建区域的方式选择 如下图2所示&#x…

科研学习|可视化——ggplot2版本的网络可视化

ggplot2是R语言中一个非常流行的数据可视化包&#xff0c;它也可以用于网络可视化。以下是三个基于ggplot2并专门用于网络可视化的R包&#xff1a; ggnet2: 这个包的使用方法与传统的plot函数相似&#xff0c;易于使用。更多信息可在其官方页面查看&#xff1a;ggnet2 geomnet…

基于51单片机的ADC0804的电压表设计(仿真+源码+设计资料)

目录 1、前言 2、资料内容 3、仿真图 4、程序 资料下载地址&#xff1a;基于51单片机的ADC0804的电压表设计&#xff08;仿真源码设计资料&#xff09; 1、前言 最近看网上有很少的ADC0804的设计了&#xff0c;都由0809代替&#xff0c;但是有个别因为成本原因和学校课…

一文了解栈

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、栈是什么&#xff1f;二、栈的实现思路1.顺序表实现2.单链表实现3.双向链表实现 三、接口函数的实现1.栈的定义2.栈的初始化3.栈的销毁4.入栈5.出栈6.返回栈…

《Fundamentals of Power Electronics》——示例:Buck-Boost转换器模型变为正则形式

为了说明正则电路模型推导的步骤&#xff0c;让我们将buck-boost转换器的等效电路操作成规范形式。buck-boost转换器的一个小信号交流等效电路如下图所示。 为了将上图所示网络转换成正则形式&#xff0c;需要将所有独立源d(t)转换到左侧&#xff0c;而将所有电感转换到右侧与变…

ldap对接jenkins

ldap结构 配置 - jenkins进入到 系统管理–>全局安全配置 - 安全域 选择ldap - 配置ldap服务器地址&#xff0c;和配置ldap顶层唯一标识名 配置用户搜索路径 - 配置管理员DN和密码 测试认证是否OK

Git命令Gitee注册idea操作git超详细

文章目录 概述相关概念下载和安装常见命令远程仓库介绍与码云注册创建介绍码云注册远程仓库操作关联拉取推送克隆 在idea中使用git集成add和commit差异化比较&查看提交记录版本回退及撤销与远程仓库关联 push从远程仓库上拉取&#xff0c;克隆项目到本地创建分支切换分支将…