Fortran学习笔记:01 基本格式与变量声明
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 基本格式与变量声明的更多相关文章
- [Golang学习笔记] 04 程序实体1 变量声明
变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...
- python学习笔记01 --------------hello world 与变量。
1.第一个程序: print('hello world') 输出结果: hello world 2.变量 2.1 变量的作用: 把程序运算的中间结果临时存到内存里,以备后面的代码继续调用. 2.2 变 ...
- Fortran学习笔记:02 流控制语句
Fortran学习笔记目录 书接上回:Fortran学习笔记:01 基本格式与变量声明 流控制语句 IF语句 IF (逻辑表达式) THEN ... ELSE ... END IF SELECT-CA ...
- Fortran学习笔记4(循环语句)
Fortran学习笔记4 Fortran学习笔记4 逻辑运算 循环 Do语句 Do-While循环 循环控制 循环应用实例 逻辑运算 if命令需要和逻辑运算表达式搭配才能起到很好的效果.下面分别列出F ...
- SaToken学习笔记-01
SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...
- (目录)Fortran学习笔记:开坑!!!
前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...
- Redis:学习笔记-01
Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...
- Fortran学习笔记:03 数组(Array)
Fortran学习笔记目录 书接上回:Fortran学习笔记:02 流控制语句 数组(Array) 定义数组 一维数组 program main implicit none integer :: i ...
- 软件测试之loadrunner学习笔记-01事务
loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...
随机推荐
- python画循环圆
import turtle for i in range(100,0,-5): # 从100到0循环递减每次减5 turtle.circle(i,90) 不懂为啥第一次运行会出错,错了再运行一遍for ...
- JDBC中的元数据——3.结果集元数据
package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...
- Learning ROS: Running ROS across multiple machines
Start the master ssh hal roscore Start the listener ssh hal export ROS_MASTER_URI=http://hal:11311 r ...
- Flask - 访问返回字典的接口报错:The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a dict.
背景 有一个 Flask 项目,然后有一个路由返回的是 dict 通过浏览器访问,结果报错 关键报错信息 TypeError: 'dict' object is not callable The vi ...
- python-request 实现企业微信接口自动化-1(DDT)
环境准备 python+requests 读取企业微信api开发文档,得知调用企业微信接口必须先获取企业微信的accesstoken是通过 ("corpid","&quo ...
- 第三课:GDB 常用的调试命令概览
先给出一个常用命令的列表,后面会结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 ...
- C#中的“等待窗体”对话框
这篇文章向您展示了如何在c#.net Windows窗体应用程序中创建一个等待窗体对话框.创建一个新表单,然后输入您的表单名称为frmWaitForm.接下来,将Label,Progress Bar控 ...
- C# List集合类常用操作:三、查找
List集合查询数据 List<Employees> employees = new List<Employees>(); employees.Add(new Employee ...
- Git:为Git Bash.exe设置默认起始目录的两种方式(start in、~/.bashrc)
在协作开发的过程中,我们经常要进行一些项目的上传拉取操作. 在无数次不厌其烦的打开关闭 Git Bash 后,我实在忍受不了作为一个程序员还要每次都要进行如下的小白操作了 cd /d/my-proje ...
- 显示锁lock
一.内置锁sync 和 显示锁lock概念 1.synv锁又叫内置锁,不能中断,拿不到无限等待即阻塞: java自带关键字: 隐式可重入: 重入锁:锁对应对象要多次调用对应方法,如递归 2. lock ...