Fortran学习记录1(Fortran数据类型)
Fortran中的字符
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9,+,-,*,/,(z左括号),(右括号),(撇号),(逗号),(小数点),(空格)
共47个。
Fortran中的常量
Fortran语言中有6种常量:整型常量、实型常量、双精度型常量、复型常量、逻辑型常量、字面常量。
整型常量没有误差。
实型常量有小数形式 和指数形式两种。小数形式有(10. ),(10.1), (.11)这三种形式。指数形式1.2E4.
双精度形式用指数表示,1.2D4。双精度常量0表示为:(0.0D0),(0.D0)
复型常量(-4.2,2.3)表示-4.2+2.3i;复型常量在内存中占两个实型常量的内存。实部和虚部各占一个。
双精度复型常量,实部和虚部都是双精度的实数。(1.44D+1,0.D0)
逻辑型常量:(.ture.),(.false.);逻辑型常量占内存的一个存储单元。
字面常量:Fortran规定字面常量中字符的个数不得大于计算机一个内存单元所能存放的最大字符的个数,在满足这个条件的时候,字面常量在内存中靠左存放,后面跟空格。字面常量的形式为:
4Hx1x2⋯xnn
Fortran中的变量
Fortran中的变量其实指的是内存中的一块存储单元,变量名是这块单元的名称(地址标记),在参加运算的时候,只能是内存中的数值或者内存的地址参加运算,内存本身不参加运算。可以理解如下:变量就是一间屋子,变量名就是房间编号,这间屋子今天可以住这个人,明天可以住那个人,但是同一时间只能有一个人住在房子里面。所以,任何时候,房子里的状况都是清楚地,住了人,是哪一个人,或者没有住人。这些信息对于店主(程序员)都是很清楚地。
对于房间的命名——变量名的命名,Fortran要求第一个必须是字母,后面紧跟字母或数字组成的6个以内的字符串。在Fortran中,变量不但有名,而且有不同的类型。有整型变量、实型变量、双精度型变量、复型变量、双精度复型变量、逻辑型变量。(共6种)
Fortran的I-N规则
Fortran规定变量的第一个字母是I-N中的字母时,该变量为整型变量,其他字母时为实型变量。这是隐性说明的。可以通过implicit none语句去掉这条规则。
- 整型变量 :integer y1,xvar,e47b
- 双精度型变量 :double precision
- 复型变量 :complex
- 双精度复型变量 :double precision complex
- 逻辑型变量 :logical
Fortran中的有效位数
- 单精度浮点数的有效位数为6位。双精度浮点数的有效位数为15位。
- 整型在Fortran中是严格精确地储存的。
Fortran中的申明
申明就是指在程序代码中,程序员向编译器要求预留一块存放数据的内存空间。
有下面面的三种方式来申明整型变量
integer(kind=4) a ! Fortran 90添加
integer(4) a ! fortran77
integer*4 a ! fortran77
下面是申明字符变量的方法
character(len=10) a ! fortran90
character(10) a ! fortran90
character*10 a ! fortran90
character*(10) a ! fortran90
Fortran申明时要注意的原则
- 变量名可使用字母,数字,下划线,但是开首字符必须是字母
- 变量名的长度:Fortran77为6个字符,Fortran90为31个字符。
- 变量名要避开关键字,保留字和函数名。
- Fortran程序不区分大小写。建议使用小写字母。
Fortran中的表达式
Fortran中有3类表达式:算术表达式、关系表达式、逻辑表达式
算数表达式的基本元素
常量、变量、数组元素、函数引用、运算符、括号。
Fortran中的算数运算符 有:+,-,,/,*
Fortran中的关系运算符:(.GT.)、(.GE.)、(.LT.)、(.LE.)、(.EQ.)、(.NE.)。Fortran规定关系表达式的两端数据类型必须一致。关系表达式的优先级低于算术表达式。
Fortran中的逻辑运算符:(.AND.)、(.OR.)、(.NOT.)优先级为:先.NOT.次.AND.后.OR.。
分析:
已知A=3.5,B=4.0,C=4.5,求:A+B.EQ.C.AND.B+C.GT.A-B
Fortran中的语句、注解、行和标行
- Fortran语句有可执行语句和非执行语句
- Fortran语句写在一行内,一行不能写几个语句。行是72个字符的序列。
- Fortran的行分为:始行、续行、注解行、结束行。Fortran77规定有19个续行。注解行的开始写星号或者字母C。注释行不能插在始行和续行的中间。
- Fortran规定在一行的前1-5列用1-5个数字的序列来标记,成为语句标号。
Fortran中的过程和过程引用
Fortran中过程包括函数和子程序。有四种过程:内在函数、语句函数、外部函数、子程序。
- 这部分的内容比较繁杂,等以后补充
Fortran语句详解
Fortran中的可执行语句:
- 算数、逻辑、字符赋值语句,语句标号赋值语句
- 无条件goto、赋值goto、计算goto语句
- 算数if和逻辑if
- 块if、else if、 else、end if语句
- continue语句
- stop和pause语句
- do语句
- read和write语句
- rewind、backspace、endfile、open语句
- call、return语句
- end语句
Fortran中的非执行语句
- program、function、subroutine语句
- dimension、common、equivalence、implicit、external、intrinsic、save语句
- integer、real、complex、logical语句
- data语句
- format语句
- 语句函数语句
说明语句
说明语句是非执行语句,他们是:
- DIMENSION语句
- EQUIVALENCE语句
- COMMON语句
- INTEGER\REAL\COMPLEX\LOGICAL语句
- IMPLICIT语句
- EXTERNAL语句
- INTRINSIC语句
- SAVE语句
类型语句的一边形式:
typ V[,v]...
例子:
COMPLEX COMPA,COMPB
REAL*8:: I(15,20,30),IJIM,NET
INTEGER:: AT(10,10,20),HIT,OTT(10,20)
LOGICAL SWITCH,CODE,LIGHT
DOUBLE COMPLEX Z12,23
CHARACTER[*LEN[,]]NAM[,NAM]...
IMPLICIT语句
Fortran标准中有一项看起来不太好的功能(个人之见),它的变量不经定义就可以使用,编译器会根据变量名的首字母来判断变量的类型。第一个字母是I、J、K、L、M、N的变量会被自动认为是整型变量,其他的变量会被认为是实数型。
implicit命令的功能是设置默认类型。如:
implicit integer(a,b,c) !将以A,B,C开头的变量认为是整形变量
implicit real*8(a-z) !将所有变量都认为是双精度实型变量
implicit none !关闭默认类型功能,所有变量都要事先申明
Fortran中的格式控制
Fortran命令中可以使用很多的格式控制描述,下面列出了所有格式命令的表格,括号( [ ] )中的东西可以省略。
Aw | 以w个字符宽度来输出字符串 |
---|---|
BN | 定义文本框中的空位为没有东西,在输入时才需要使用 |
BZ | 定义文本框中的空位代表0,在输入时才需要使用 |
Dw.d | 以w个字符宽度来输出指数型的浮点数,小数部分占d个宽度 |
Ew.d[Ee] | 以w个字符宽度来输出指数型的浮点数,小数部分占d个宽度,指数部分占e个字符 |
ENw.d[Ee] | 以指数类型来输出浮点数 |
Fw.d | 以w个字符宽度来输出浮点数,小数部分占d个宽度 |
Gw.d[Ee] | 以w个字符来输出任何类型的数据 |
Iw[.m] | 以w个字符宽度来输出整数,最少输出m个数字 |
Lw | 以w个字符宽度来输出T或F的真假值 |
nX | 把输出的位置向后跳n个位置 |
/ | 代表换行 |
: | 在没有更多的数据的时候结束输出 |
kP | K值控制输入输出的SCALE |
Tn | 输出的位置移动到本行的第n列 |
TLn | 输出的位置相左相对移动n个 |
TRn | 输出的位置相右相对移动n个 |
SP | 在数字值为正时加上正号 |
SS | 取消SP |
Bw[.m] | 把整数转换成二进制来输出,输出会占w个字符宽度,固定输出m个数字。m值可以不给定 |
Ow[.m] | 把整数转换成八进制来输出,输出会占w个字符宽度,固定输出m个数字。m值可以不给定 |
Zw[.m] | 把整数转换成十六进制来输出,输出会占w个字符宽度,固定输出m个数字。m值可以不给定 |
Fortran学习记录1(Fortran数据类型)的更多相关文章
- Fortran学习记录3(选择语句)
流程控制语句 if的基本用法 if-else语句块 多重判断if-elseif语句 if语句嵌套 Select case语句 Goto语句 PAUSE CONTINUE STOP 流程控制语句 if的 ...
- FORTRAN学习记录
WHERE statement http://scv.bu.edu/computation/bluegene/IBMdocs/compiler/xlf-10.1/html/xlflr/where.ht ...
- Erlang学习记录(二)——基本数据类型
Erlang可以说和我以前接触过的语言都大不相同,这个从它的类型定义就可以看出来...反正学起来觉得既不熟悉,也不亲切,我估计在用Erlang写应用的时候,整个编程思路都要变一下了.不过存在即是合理的 ...
- Fortran学习笔记4(循环语句)
Fortran学习笔记4 Fortran学习笔记4 逻辑运算 循环 Do语句 Do-While循环 循环控制 循环应用实例 逻辑运算 if命令需要和逻辑运算表达式搭配才能起到很好的效果.下面分别列出F ...
- Fortran学习笔记:01 基本格式与变量声明
Fortran学习笔记目录 01 基本格式与变量声明 格式 固定格式(Fixed Format):Fortran77 程序需要满足一种特定的格式要求,具体形式参考教材 自由格式(Free Format ...
- (目录)Fortran学习笔记:开坑!!!
前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...
- Fortran学习笔记:03 数组(Array)
Fortran学习笔记目录 书接上回:Fortran学习笔记:02 流控制语句 数组(Array) 定义数组 一维数组 program main implicit none integer :: i ...
- Fortran学习笔记:02 流控制语句
Fortran学习笔记目录 书接上回:Fortran学习笔记:01 基本格式与变量声明 流控制语句 IF语句 IF (逻辑表达式) THEN ... ELSE ... END IF SELECT-CA ...
- Python学习记录day5
title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
随机推荐
- 51nod 1051 最大子矩阵和(DP)
题意 略 分析 一道经典的DP题,但是我弱到差点做不出来,真的垃圾 设置\(sum(i,j)代表1-i行第j列的前缀和\),然后枚举行i和行j,再枚举列k,做一遍类似一维的最大子段和即可 #inclu ...
- POJ2366【二分】
题意: 给两个序列,问两个序列中是否有两个数加起来=1e4: 思路: 直接先排序好b序列,然后枚举a序列,二分查找b序列就好了: 贴一发挫code-. //#include <bits/stdc ...
- IT兄弟连 Java Web教程 Servlet的生命周期
JavaWeb应用的生命周期由Servlet容器来控制,而Servlet作为JavaWeb应用的最核心的组件,其生命周期也由Servlet容器来控制.Servlet的生命周期可以分为3个阶段:初始化阶 ...
- 【POJ - 2376】Cleaning Shifts(贪心)
Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...
- Luogu P1613跑路【倍增】By cellur925
题目传送门 开始的思路:直接跑一遍最短路,得到最短路的那个值.然后把那个值进行一下二进制拆分,看能拆几次.(可能是受到了刚做过的题影响) ;i>=;i--) { <<i)>qw ...
- [NOIP2018校模拟赛]T1 阶乘
题目: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. 输入 共两行. 第一行一个正整数n. 第二行n个正整数a[i]. 输出 共 ...
- Ilya And The Tree CodeForces - 842C
((半个)智商题,主要难度在于实现) 题意:有一棵n个结点组成的树,其根是编号为1的结点.对于每一个结点,生成从根结点走到这个结点的路径(包括自身),选择路径上的一个点或者不选择任何点,使得其它点的最 ...
- git导出代码
1.快速查询 $git archive --format zip --output "./output.zip" master -0 ./output.zip 是生成的文件 mas ...
- web 另类方法实现“另存为”功能
HTML5 的 FileReader 带给我们很强大的文件只读访问能力,可是在 HTML5 新增的 JS 中却没有发现有方便的另存到本地文件的相关 API,以往的办法要么调用浏览器的 save as ...
- (021)VMWare副虚拟磁盘和子虚拟磁盘id不匹配
问题:因为某种原因,修改了VM虚拟机的父磁盘内容,导致开机时出现如下错误: 父虚拟磁盘在子虚拟磁盘创建之后被修改过.父虚拟磁盘的内容 ID 与子虚拟磁盘中对应的父内容 ID 不匹配打不开磁盘“***. ...