Fortran学习笔记目录

01 基本格式与变量声明

格式

固定格式(Fixed Format):Fortran77 程序需要满足一种特定的格式要求,具体形式参考教材

自由格式(Free Format):Fortran90之后程序书写形式更为自由

数据类型

Fortran 95包含的数据类型

数据类型 关键词 C中对应
整型 integer int/long ...
浮点型 real float/double ...
复数 complex <complex.h>
字符/字符串 character char ...
逻辑判断 logical bool ...
自定义结构体 type() struct

表达式与逻辑运算

!Fortran 95支持逻辑符号

+、-,*、/:加减乘除

** :乘方

==:等于

/=:不等于

>:大于

>=:大于等于

<:小与

<=:小于等于

逻辑判断式 含义
.AND. 且,两边都成立时,表达式成立
.OR.
.NOT.
.EQV. 两边相等时为true
.NEQV. 两边不等时为true

注意:浮点型的逻辑判断,需要考虑有效位数截断的问题,例如,2.0000001不等于2,需要使用\(abs(a-2)<2e-5\),这种方式来作判定

代码结构

Fortran语言不区分大小写

program main                    !自定义程序名称 main
write(*,*) "Hello World" !输出字符
stop !程序停止
end !main程序结束

输出与输入

输出

    write(*,*) "Hello World"    !输出字符

write(*,*)中,第一个*表示默认输出位置,第二个*表示默认输出格式,完整表述为以下格式

    write(unit=6,fmt=*) "Hello World"

unit=6 表述输出至屏幕,等效于unit=*。

输入

program main
integer a,b,c
write(*,*) "please input 3 number"
read(*,*) a,b,c
write(*,*) a+b+c
end

read(*,*)与write(*,*)表示意义基本一致,read(*,*)等效于

    read(unit=5,fmt=*) a,b,c

unit=5 表示由键盘输入,等效于unit=*。

格式化输入与输出

《Fortran95教程》4-4节

program main
integer a
real b
complex c
logical d
character(len=20) e
a=10
b=12.34
c=(1,2)
d=.true.
e="Fortran"
write(*,"(1X,I5)") a
write(*,"(1X,F6.3)") b
write(*,"(1X,F4.1,F4.1)") c
write(*,"(1X,L3)") d
write(*,"(1X,A10)") e
end

声明常规数据类型

声明整型数据进行运算

program main
integer a,b
a=3
b=4
write(*,*) "a=",a
write(*,*) "b=",b
write(*,*) "a+b=",a+b
write(*,*) "a-b=",a-b
write(*,*) "a*b=",a*b
write(*,*) "a/b=",a/b
write(*,*) "a**b=",a**b
stop
end

注意整型除法的截断问题

integer默认使用长整型进行声明,可以自定义数据类型存储长度,例如:

integer(kind=4) a

定义整型变量存储空间大小为4。

声明浮点型数据进行运算

program main
real :: a ,b
a=2.5
b=3.5
write(*,*) "a=",a
write(*,*) "b=",b
write(*,*) "a+b=",a+b
write(*,*) "a-b=",a-b
write(*,*) "a*b=",a*b
write(*,*) "a/b=",a/b
write(*,*) "a**b=",a**b
stop
end

real自定义数据长度同上

real(kind=8) a

声明复数型数据进行运算

program main
complex :: a ,b
a=(1,1)
b=(1,-1)
write(*,*) "a=",a
write(*,*) "b=",b
write(*,*) "a+b=",a+b
write(*,*) "a-b=",a-b
write(*,*) "a*b=",a*b
write(*,*) "a/b=",a/b
stop
end

复数运算符合相应复数运算规则

声明字符与字符串

声明字符与字符串

program main
character :: a
character(20) :: b
a="H"
b="Hello World"
write(*,*) a
write(*,*) b
stop
end

字符串操作:数组索引、切片操作

program main
character(len=30) :: first,second
first="Good morning"
second=first(1:4)
write(*,*) first
write(*,*) second
first(6:)="evening"
write(*,*) first
write(*,*) first//second
stop
end

字符串相关函数

函数 功能
CHAR(num) 返回num对应的字符
ICHAR(char) 返回char字符对应的字符编号
LEN(string) 返回字符串string声明空间长度
LEN_TRIM(string) 返回字符串除去尾端空格后的字符长度
INDEX(string,key) 返回key在string中第一次出现的位置
Trim(string) 返回清楚尾端空格后的字符串
program main
character(len=20) :: string
character(len=5) :: substring
string="Have a nice day!"
substring="nice"
write(*,*) ichar("A")
write(*,*) char(65)
write(*,*) len(string)
write(*,*) len_trim(string)
write(*,*) index(string,substring)
stop
end

逻辑变量

true与false分别为.true..false.

program main
logical a,b
a=.true.
b=.false.
write(*,*) "a=",a,"b=",b
stop
end

声明变量注意事项

变量名前缀必须是英文字母

IMPLICIT命令

implicit integer(A,B,C)  !A,B,C开头变量视为整型
implicit integer(A-F) !A-F开头变量视为整型
implicit real(M-P) !M-P开头变量视为浮点型
implicit none !关闭默认类型,所有变量都需要声明

其他变量声明

常数声明方法(PARAMETER)

program main
implicit none
real pi
parameter(pi=3.1415926535)
write(*,"(F6.4)") sin(pi/6)
end

还可以等效成以下声明语句

real,parameter :: pi=3.14159

::表示类型申明的形容词已经添加完毕,后面紧随变量名称

设置变量初始值

Fortran95 可以直接在变量声明后进行赋值,而Fortran77需要使用DATA命令进行赋值

program main
implicit none
integer :: a=1
real :: b=2.0
complex :: c=(1,2.0)
character(len=20) :: str="Fortran95"
write(*,*) a,b,c,str
end

等价申明(EQUIVALENCE)

两个以上的变量使用同一块内存,类似于多个指针指向同一块内存,可以用来精简代码,节省内存。

    integer :: a,b
equivalence(a,b) !a,b两个变量名共享同一块内存

声明语句在程序中的位置

声明语句必须放置在可执行操作语句之前,也就意味着,程序中所有使用的变量必须首先声明。

变量类型转换

program main
implicit none
integer :: a=1,b=2
write(*,*) a/b
write(*,*) real(a)/b
end

real()函数可以将变量转化为浮点型变量

自定义数据类型

结构体,type定义结构体,%获得结构体数据成员

program main
implicit none
type:: person
character(len=30) :: name
integer :: age
real :: weight
end type type(person) :: a
write(*,*) "name:"
read(*,*) a%name
write(*,*) "age:"
read(*,*) a%age
write(*,*) "weight:"
read(*,*) a%weight write(*,100) a%name,a%age,a%weight
100 format(/,"name:",A10/,&
&/,"age:",I10/,&
&/,"weight:",F5.2)
end

Fortran学习笔记:01 基本格式与变量声明的更多相关文章

  1. [Golang学习笔记] 04 程序实体1 变量声明

    变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...

  2. python学习笔记01 --------------hello world 与变量。

    1.第一个程序: print('hello world') 输出结果: hello world 2.变量 2.1 变量的作用: 把程序运算的中间结果临时存到内存里,以备后面的代码继续调用. 2.2 变 ...

  3. Fortran学习笔记:02 流控制语句

    Fortran学习笔记目录 书接上回:Fortran学习笔记:01 基本格式与变量声明 流控制语句 IF语句 IF (逻辑表达式) THEN ... ELSE ... END IF SELECT-CA ...

  4. Fortran学习笔记4(循环语句)

    Fortran学习笔记4 Fortran学习笔记4 逻辑运算 循环 Do语句 Do-While循环 循环控制 循环应用实例 逻辑运算 if命令需要和逻辑运算表达式搭配才能起到很好的效果.下面分别列出F ...

  5. SaToken学习笔记-01

    SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...

  6. (目录)Fortran学习笔记:开坑!!!

    前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...

  7. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

  8. Fortran学习笔记:03 数组(Array)

    Fortran学习笔记目录 书接上回:Fortran学习笔记:02 流控制语句 数组(Array) 定义数组 一维数组 program main implicit none integer :: i ...

  9. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

随机推荐

  1. Javascript - 异步操作和读取文件

    node.js读取文件 node.js内置了异步读取文件的模块,可以很方便地读取文件的数据.先创建三个txt文档,在根目录下创建一个readFile.js 输入以下代码,然后在vscode的终端中输入 ...

  2. Servlet常见问题

    时间:2016-12-6 23:18 java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMapcommo ...

  3. Alibaba cloud 3 安装docker

    最近因为公司买阿里服务器装的 Alibaba cloud Linux 系统,在部署环境的时候也是遇到各种坑,网上教程大多都是其他系统的,今天就来分享一下自己安装Docker的步骤,同时也是给自己记录一 ...

  4. springcloud超时重试机制的先后顺序

    https://blog.csdn.net/zzzgd_666/article/details/83314833

  5. Ecplise项目导入IDEA(纯小白名词解释)

    1. Module 模块 一个大的项目不仅仅是只有Java的源文件,还有数据库,服务器,web等等文件一起使用,将类似于这样分类的文件定义为 module 例如 core Module(核心).web ...

  6. DDL和客户端ip监控

    DDL触发器监控脚本部署步骤 以下操作请使用sys用户: --第一步:创建表(此表主要保存ddl触发器产生的信息),可以根据不同的业务,使用相关的监控用户,在此监控用户为c##upctest 从可维护 ...

  7. Python3-sqlalchemy-orm 多对多关系建表、插入数据、查询数据

    现在来设计一个能描述"图书"与"作者"的关系的表结构,需求是 一本书可以有好几个作者一起出版 一个作者可以写好几本书 此时你会发现,用之前学的外键好像没办法实现 ...

  8. Spring源码浅析之bean实例的创建过程(二)

    在上一篇内容中,介绍了doGetBean方法的源码内容,知道了bean在创建的过程中,有三个范围,单例.多例.Scope,里面都使用到了createBean.下面本篇文章的主要内容,就是围绕creat ...

  9. linux centos7 移动文件到指定目录

    2021-08-26 在 centos7 环境下怎么移动一个文件到其他的目录下呢? 使用命令  mv 文件名 指定目录  即可完成该操作. 那么怎么将一个文件夹下的内容移动到另一个文件夹下呢?比如有时 ...

  10. Pytest 系列(26)- 清空 allure 历史报告记录

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 背景 pytest 运行 测试用例 ...