fortran语言语法

FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。

 

1 FORTRAN77四则运算符

+ - * / ** (其中**表示乘方)
在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→()

2 FORTRAN77变量类型

2.1 隐含约定:I-N规则

凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。

2.2 用类型说明语句确定变量类型:可以改变I-N规则

INTEGER

整型

REAL

实型

DOUBLE PRECISION

双精度实型

COMPLEX

复型,赋值形式为(实部,虚部),如D=(8.76E+0.5,-67.8E-3),C=(3.0,6.3),如果含表达式则用CMPLX,如C=CMPLX(3.0*A,6.0+B)

LOGICAL

逻辑型,逻辑常量有“T”和“F”,“T”表示“.TRUE.”,“F”表示“.FALSE.”

CHARACTER*N

字符型,N为字符串长度,可以在变量名称后重新指定长度,如CHARACTER*8 STR1,STR2*10 ,赋值形式为STR2='I''M A BOY.'

2.3 用IMPLICIT语句将某一字母开头的全部变量指定为所需类型

IMPLICIT REAL (I,J)
三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。

2.4 数组的说明与使用

使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:
DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3)
REAL IA(10),ND(80:99)
使用隐含DO循环进行数组输入输出操作:例如
WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)
10FORMAT(1X,5(A2,I2,1X,A2,I4))

2.5 使用DATA语句给数组赋初值

变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如
DATA A,B,C/-1.0,-1.0,-1.0/
DATA A/-1.0/,B/-1.0/,C/-1.0/
DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)
DATA CHN/10*'
     '/INTEGER NUM(1000)
DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/

3 FORTRAN77程序书写规则

·  程序中的变量名,不分大小写;

·  变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;

·  一行只能写一个语句;

·  程序的第一个语句固定为PROGRAM 程序名称字符串

·  某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;

·  某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;

·  某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;

·  某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;

·  某行的第73至80字符位为注释区,80字符位以后不能有内容。

4 FORTRAN77关系运算符

.GT. 大于
.GE. 天于或等于
.LT. 小于
.LE. 小于或等于
.EQ. 等于
.NE. 不等于 .AND. 逻辑与
.OR. 逻辑或
.NOT. 逻辑非
.EQV. 逻辑等
.NEQV. 逻辑不等
运算符优先级由高到低顺序为:()→**→*或/→+或-→.GT.或.GE.或.LT.或.LE.或.EQ.或.NE.→.NOT.→.AND.→.OR.→.EQV.或.NEQV

5 FORTRAN77语句

语句

说明

备注

WRITE(*,*) X1,X2

输出语句

第一个*号是指输入输出文件设备号或其它设备,如果不指定则是指显示器或打印机,第二个*号是指表控格式语句的行号,如不指定则用默认格式

PRINT *,X1,X2

输出语句

*号是指表控格式语句的行号,如不指定则用默认格式

READ *,X1,X2

输入语句

*号是指表控格式语句的行号,如不指定则用默认格式

FORMAT(格式符)

请见附录一。

请见附录二。

END

结束程序或子程序

STOP [N]

结束程序并输出信息[N]

[N]为数字或字符串信息

PAUSE [N]

暂停程序执行并输出信息[N],输入回车后继续执行

[N]为数字或字符串信息

PARAMETER (PI=3.14)

参数语句,用来定义常量,在程序中应放在类型说明语句之后

EQUIVALENCE (变量表)

等价语句,()内变量共用一个存储单元。

EQUIVALENCE(X1,X2,…XN),(X1,X2,…XN),…

COMMON X1,……

公用语句,其后变量相等,用来在程序单位间传递数据,同时可以用来说明数组。程序中可有一个无名公用区和多个有名公用区。

无名公用区:在主程序各子程序中相同,均在可执行语句之前,如
COMMON A(5),I
有名公用区:名称放在两个“/”之间,如
COMMON //X1,X2,X3/C1/X4,X5,X6

OPEN (说明项1)

打开旧文件或创建新文件

说明项1中内容:UNIT=N, FILE=NAM, STATUS=STR1, ACCESS=STR2, FORM=STR3, RECL=C, BLANK=STR4, ERR=BH, IOSTAT=M
其中:

1.N=1~99;
2.NAM为文件名,可以是字符常量或变量;
3.STR1='NEW'时新建文件;'OLD'时打开文件;'SCRATCH'时表示临时文件,关闭时自动删除,且不能与FILE=NAM项共存;'UNKNOWN'时由计算机系统规定文件状态;
4.STR2为文件存取方式,'SEQUENTIAL'表示顺序存取,'DIRECT'表示直接存取,省略此项时表示按顺序存取;
5.STR3为记录格式说明,'FORMATTED'表示记录按有格式形式存放, 'UNFORMATTED'表示记录按无格式形式存放。省略此项时,对于顺序文件是有格式的,对于直接存取文件是无格式的;
6.C表示记录长度,以字节为单位,直接存取文件必指定,顺序文件必省略;
7.STR4表示数字值格式输入字段中空格含意,'NULL'时表示忽略不计,'ZERO'时表示按0计。省略此项时按0计;

8.BH表示出错时处理语句行标号,可以省略此项;
9.M为整数,出错时返回该整数,可以省略此项。

CLOSE (说明项2)

关闭已打开文件

说明项2中内容:UNIT=N,STATUS=STR5,ERR=BH,IOSTAT=M
其中STR5为文件关闭状态,'KEEP'时保留,'DELETE'删除,省略此项时为保留;

ERR=BH,IOSTAT=M可以省略。

REWIND (说明项3)

将文件读写指针置于文件开头

说明项3中内容:UNIT=N,ERR=BH,IOSTAT=M
ERR=BH,IOSTAT=M可以省略

BACKSPACE (说明项3)

将文件读写指针回退一行

6 FORTRAN77选择判断语句

6.1 逻辑IF语句

IF (逻辑表达式) 程序语句

6.2 无ELSE块

IF (逻辑表达式) THEN
程序块

END IF

6.3 标准选择

IF (逻辑表达式) THEN
程序块1
ELSE
程序块2
END IF

6.4 多重选择块

IF (逻辑表达式1) THEN
程序块1
ELSE IF (逻辑表达式2) THEN
程序块2
ELSE IF (逻辑表达式2) THEN
程序块2
......
ELSE IF (逻辑表达式N) THEN
程序块N
ELSE
程序块N+1
END IF

7 FORTRAN77循环语句

7.1 GO TO语句

标号程序行
程序块
GO TO 标号

7.2 DO语句

DO 标号,记数变量=起始值,终止值,步距”语句,如
DO 标号,N=1,100,1
程序块

标号CONTINUE

7.3 DO WHILE 语句

DO 标号,WHILE(PI.EQ.3.14159)
程序块

标号CONTINUE

7.4 DO UNTIL语句

DO 标号,UNTIL (逻辑表达式)”语句,如
DO 标号,UNTIL(PI.GT.3.14159)
程序块

标号CONTINUE

8 FORTRAN77内部函数

INT(X)

将数字串或数值X转换为整型数

REAL(X)

将数字串或数值X转换为实型数

DBEL(X)

将数字串或数值X转换为双精度型数

CMPLX(X)

将数字串或数值X转换为复型数

CHAR(X)

将数值X转换为字符(0≤X≤255)

ICHAR(X)

将字符X转换为整数

AINT(X)

截去X的小数部分

ANINT(X)

将X舍入到最接近的整数

NINT(X)

将X舍入到最接近的整型数

ABS(X)

返回X的绝对值

MOD(X1,X2)

返回X1/X2的余数

SIGN(X1,X2)

取X2的符号,取X1的绝对值

DIM(X1,X2)

当X1>X2时,等于X1-X2,当X1≤X2时,等于0

DPROD(X1,X2)

双精度乘(X1,X2均为实数)

AIMAG(X)

返回字符串X的虚部

CONJG(X)

返回字符串X的共轭

MAX(X1,X2,X3,...,XN)

返回X1,X2,X3,...,XN中最大值

MIN(X1,X2,X3,...,XN)

返回X1,X2,X3,...,XN中最小值

SQRT(X)

返回X的平方根(X≥0)

EXP(X)

返回E的X次方

LOG(X)

返回以E为底的X的对数即自然对数(X>0)

LOG10(X)

返回以10为底的X的对数即常用对数(X>0)

SIN(X)

返回弧度值X的正弦值

COS(X)

返回弧度值X的余弦值

TAN(X)

返回弧度值X的正切值

ASIN(X)

返回弧度值X的反正弦值

ACOS(X)

返回弧度值X的反余弦值

ATAN(X)

返回弧度值X的反正切值

SINH(X)

返回X的双曲正弦值

COSH(X)

返回X的双曲余弦值

TANH(X)

返回X的双曲正切值

LEN(X)

返回字符串X的长度

INDEX(X1,X2)

返回字符串X2在字符串X1中的位置,不包含时返回0

LGE(X1,X2)

如果字符串X1≥X2则等于.TRUE.,否则等于.FALSE.

LGT(X1,X2)

如果字符串X1>X2则等于.TRUE.,否则等于.FALSE.

LLE(X1,X2)

如果字符串X1≤X2则等于.TRUE.,否则等于.FALSE.

LLT(X1,X2)

如果字符串X1<X2则等于.TRUE.,否则等于.FALSE.

9 FORTRAN77函数与子程序

9.1 FORTRAN77语句函数

·  当函数十分简单,用一条语句足以定义时(允许使用继续行)才用;

·  应该放在所有可执行语句之前和有关类型说明语句之后,是非执行语句;

·  只在其所在程序单位中有意义;

·  语句函数中的虚参就是变量名,不能是常量、表达式或数组元素等;

·  语句函数定义语句中的表达式可以包含已经定义过的语句函数、外部函数或内部函数。

·  语句函数通过表达式得一个函数值,此数值类型必须与函数名的类型一致。语句函数的使用同内部函数相同。
语句函数例子:
YMJ(R)=3.14159265*R*R
ZMJ=YMJ(5)

9.2 FORTRAN77自定义函数

定义格式:
类型说明 FUNCTION 函数名(虚拟参数1,虚拟参数2,……,虚拟参数N)
程序块(可以含有RETURN)
函数名=函数值

END
调用格式与内部函数相同。

9.3 FORTRAN77子程序

定义格式:
SUBROUTINE 子程序名(虚拟参数1,虚拟参数2,……,虚拟参数N)
程序块(可以含有RETURN)
END
调用格式:

CALL 子程序名(实在参数1,实在参数2,……,实在参数N)
数据块子程序:只是用来给有名公用区中的变量赋初值,格式如下:

BLOCK DATA 子程序名
DATA语句块
END


附录一、FORTRAN77控制输入输出格式
1.在打印输出时,每一行第1个字符不显示,用来控制纵向走纸或显示行。

第1个字符

作用

空格

正常回车换行

0

回车并跳过1行

1

换页

+

只回车不换行

其它

通常是回车换行

2.输入小数时,自带小数点优先。
3.输出字段宽度不够时用*号填充。

附录二、FORTRAN77控制输入输出格式语句

1

IW或IW.M

整数型

W为字段宽度,M为最少数字位数

2

FW.D

实数型

D为小数位数

3

EW.D或EW.DEE

指数实数型

E为指数位数,通常为3或4

4

GW.M

自动实数型

5

DW.D

双精度型

6

LW

逻辑型

7

A或AW

字符型

不指定W时自动

8

'字符串'

插入字符串

两个'表示一个字符'

9

NH字符串

插入长度为N的字符串

10

NX

插入N个空格

11

RIW,R(NX,IW.M)

R个IW,R个(NX,IW.M)

R为重复系数

12

/

换行

13

,$

禁止换行

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

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

相关文章

北漂Java程序员入职五个月的收获总结

👨‍💻博主主页:小尘要自信 👨‍💻本文专栏:Java程序员的成长 👨‍💻上一篇文章:告别过去,拥抱未来:一个Java开发者的成长之路 👨‍&a…

LRU缓存淘汰算法详解与实现

目录 1.什么是LRU算法 2.LRU算法原题描述 3.LRU算法设计 4.LRU算法细节分析 5.代码实现 1.什么是LRU算法 就是一种缓存淘汰策略。 计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。但问题是,删除哪些内容呢&#…

tinkerCAD案例:31. 3D 基元形状简介

tinkerCAD案例:31. 3D 基元形状简介 1 将一个想法从头脑带到现实世界是一次令人兴奋的冒险。在 Tinkercad 中,这将从一个新的设计开始。 在新设计中,简单的原始形状可以通过不同的方式组合成更复杂的形状。 在这个项目中,你将探索…

Openstack等私有云

1 OpenStack 计算:部署管理虚拟机存储:块存储 Cinder 和 对象存储 Swift网路:管理网络身份:管理用户和权限镜像:管理镜像用于快速部署新的虚拟机仪表盘:Web界面 2 RAID 如果使用的软件已经在多个硬件设备…

【Lua语法】字符串操作、字符串中的方法

1.对字符串的操作 --声明一个字符串 str "我是一个字符串"--1.获取字符串的长度 -- 前面加个#即可(注意:Lua中字母占1个长度,汉字占3个长度) print(#str)--2.字符串多行打印 -- 方法1.Lua中是支持转义字符的 print("哈哈\n嘻嘻&q…

【个人笔记】Linux 服务管理两种方式service和systemctl

service命令与systemctl 命令 service 命令与传统的 SysVinit 和 Upstart 初始化系统相关。较早期的 Linux 发行版(如早期的 Ubuntu、Red Hat 等)使用了这些初始化系统。service 命令用于启动、停止、重启和查询系统服务的状态。虽然许多现代 Linux 发行…

IDEA中配置pom文件时对annotationProcessorPaths作修改后Lombok不起作用

IDEA中配置pom文件时对annotationProcessorPaths作修改后Lombok不起作用 问题:在学习MyBatis-Flex框架时,要求在pom文件中配置 annotationProcessor,官方说这样的好处是:mybatis-flex-processor提供APT服务,可以配置到…

小红书2020校招测试开发后端笔试题卷三

//完全背包求组合数 #include <iostream> #include<vector> #include<set> #include<map> #include<algorithm> using namespace std; int value[300]; // vector<int>vis; // vector<int>vis1; map<vector<int>,int>m…

web前端开发工程师工作的岗位职责(合集)

web前端开发工程师工作的岗位职责1 职责&#xff1a; 1、根据设计图进行前端页面开发并设计编写业务交互脚本 2、优化前端页面&#xff0c;保证良好的用户体验以及不同浏览器的兼容性 3、web前沿技术研究和新技术调研&#xff0c;将主流的特效应用到业务场景中 4、配合后台…

cocoscreator中tween详细用法

基本方法&#xff1a; to&#xff1a;对属性进行绝对值计算&#xff0c;最终的运行结果即是设置的属性值&#xff0c;即改变到某个值 by&#xff1a;对属性进行相对值计算&#xff0c;最终的运行结果是设置的属性值加上开始运行时节点的属性值&#xff0c;即变化值 cc.tween(t…

SQL面试题

下列语句部分是Mssql语句&#xff0c;不可以在access中使用。 SQL分类&#xff1a; DDL—数据定义语言(CREATE&#xff0c;ALTER&#xff0c;DROP&#xff0c;DECLARE) DML—数据操纵语言(SELECT&#xff0c;DELETE&#xff0c;UPDATE&#xff0c;INSERT) DCL—数据控制语言…

关于单体架构缓存刷新实现方案

背景 如果各位看官是分布式项目应该都采用分布式缓存了&#xff0c;例如redis等&#xff0c;分布式缓存不在本次讨论范围哈&#xff1b;我个人建议是&#xff0c;如果是用户量比较大&#xff0c;建议采用分布式缓存机制&#xff0c;后期可以很容易前后到分布式服务或微服务。 …

安装Apache遇到的问题

安装Apache服务 httpd -k install -n Apache2.4 #-n后面表示自定义访问名称 问题1&#xff1a; 此时去 windows 的开始摁扭里找到控制器右键管理员运行 问题2&#xff1a; 命令行没用对 应该用&#xff1a; .\httpd -k install -n Apache2.4 #-n后面表示自定义访问名称

kafka常用命令

目录 Kafka通用命令 进入Kafka 1.进入kafka容器 2.进入kafka目录 查看Topic信息 1.查看所有Topic的列表 2.查看单个Topic的信息 查看ConsumerGroup信息 1.查看所有ConsumerGroup的列表 2.查看单个ConsumerGroup的信息 读取Topic中的数据 向Topic写入数据 Kafka通用…

快速响应,上门维修小程序让您享受无忧生活

随着科技的不断发展和智能手机的普及&#xff0c;上门维修小程序成为了现代人生活中越来越重要的一部分。上门维修小程序通过将维修服务与互联网相结合&#xff0c;为用户提供了更加便捷、高效的维修服务体验。下面将介绍上门维修小程序开发的优势。   提供便捷的预约方式&am…

驱动开发相关内容复盘

并发与竞争 并发 ​ 多个“用户”同时访问同一个共享资源。 竞争 并发和竞争的处理方法 处理并发和竞争的机制&#xff1a;原子操作、自旋锁、信号量和互斥体。 1、原子操作 ​ 原子操作就是指不能再进一步分割的操作&#xff0c;一般原子操作用于变量或者位操作。 ​ …

神经网络原理概述

文章目录 1.神经元和感知器1.1.什么是感知器1.2.什么是单层感知器1.3.多层感知机&#xff08;Multi-Layer Perceptron&#xff0c;MLP&#xff09; 2.激活函数2.1.单位阶跃函数2.2.sigmoid函数2.3.ReLU函数2.4.输出层激活函数 3.损失函数4.梯度下降和学习率5.过拟合和Dropout6.…

Vue3使用vxetable进行表格的编辑、删除与新增

效果图如下: vxetable4传送门 一、引入插件 package.json中加入"vxe-table": "4.0.23",终端中执行npm i导入import {VXETable, VxeTableInstance

docker容器的基本操作

一、查看Docker的版本信息 [roothuyang1 ~]# docker version 二、查看docker的详细信息 [roothuyang1 ~]# docker info 三、Docker镜像操作 Docker创建容器前需要本地存在对应的镜像&#xff0c;如果本地加载不到相关镜像&#xff0c;Docker默认就会尝试从镜像仓库https://hu…

vue3 封装一个事件方法,支持所有页面调用

我做的是路由跳转&#xff0c;因为需要支持跨项目使用&#xff0c;所以才使用这个方法 在router.js中 import { createRouter, createWebHistory } from vue-router;// 创建路由实例和路由配置... export const router createRouter({history: createWebHistory(),routes: [/…