说明:
本笔记是读书笔记, 记录了本人认为书本的精华, 和简单代码的自行敲击只用于学习交流, 其它违法行为, 与本人无关若有版权冲突, 本人立即删除.
第一编
略
本笔记从第5章开始
第二编
第5章
字符集
fortran 中可以使用的字符串
注意: fortran 的字符命名是不区分大小写的, 只有在早期的版本中才不允许小写, 现在都可以了.
保留字(也叫关键字)
保留字分为 语句保留字 和 变元保留字
语句保留字:
变元保留字:
特别注意
1. fortran 中的保留字, 函数名等都可以用作 变量名 , 但是这是要避免的, 因为计算机对于输入内容的阅读性也是需要考虑的.
基本数据类型
总体简介
fortran 中的数据类型
数据类型有四个性质: 数据类型有四个性质:
下方性质很重要(我认为)
常量
简介图
整型(要求和不同进制的表示)
实型
小数形式
数字的右下角一定要有 点 . 小数点 '. ' , 前后可以不出现数字, 但是不允许小数点前后都不出现数字, 且 小数点不可以少
正确的例子
指数类型
例子:
解读:
指数形式表示的实数由两部分组成,即数字部分和指数部分.E将数字部分和指数部分分隔,E的右边是指数部分,E的左边是数字部分,表示方式是用E表
注意点:(很重要)
额外: 书中介绍了计算机存储形式和存储位数(感觉受益匪浅)
https://blog.51cto.com/u_15936127/6097551(这篇笔记不断更新中)
复型常量
用括号 和 逗号表示. 左边代表实部 , 右边代表虚部 , 左右两边的数字都用实数来表示.
字符型常量
1. 用成对的单引号, 或者双引号括起来的
2. 单引号和双引号要交替使用(里面是单引号, 外面就用双引号, 反之亦然)
3. 一个空格表示一个字符
逻辑型
1.就是 .TRUE. 和 .FALSE. , 注意两侧的点都是不能省略的!!!
2.Fortran 中 .TRUE. 和 .FALSE. 都能用于整数计算,其中:
.TRUE. 代表数值为 -1 ,存储字节每位为1
.FALSE.代表数值为 0 ,存储字节每位为 0
符号常量
永远不会改变的常数, 例如: π, g(重力加速度) 等, 我们无法取到它们的精确值, 但是可以设置近似值. 设置完了以后, 在程序运行的过程中, 它的值是不会改变的. 这些设置的符号常量只能被parameter设置一次,之后不可改变 , 否则报错
最终程序运行得到的结果就是 0.500000
变量
定义要求:
- FORTRAN中规定须以字母开头,后可接多达30个字母,数字或下划线。, 注意一定是 字母数字下划线!!!
- 变量命令可以 是保留字 或者关键字, 但是为了避免冲突, 所以一般不这样做
变量类型
和常量一样, 变量有整型, 实型, 复型, 字符型, 逻辑型
整型变量
只能取整数 进行整数的四则运算
注意: 当我们声明变量的时候, 变量的存储空间就已经被开辟了, 只是多少大小没有确定, 而指定变量类型和位数后, 变量的最大和最小就确定了.
如果没有指定 kind , 那就叫kind的缺省 , 如果没有编译器的影响, 32位的操作系统, 它的缺省值为 4 . 也就是说人们常用的windows 缺省一般为 4
实型变量
有小数点的数
复型变量
和上面一样 ,
kind是为了规定变量的存储大小的, kind 可以不写, 可以写
: : 表示赋初值
n 在复型变量中取 4 或者 8
字符型变量
注意: 下方的 n 指定的是字符的长度, 一个字节存储一个字符.
逻辑变量
用于逻辑判断
变量声明注意点
1.隐式声明和显示声明
变量声明分为隐式声明和显示声明, 显示声明如同上方那些例子中那样生声明, 隐式声明采用I-N规则.
I-N规则:
凡是变量以字母 I,J,K,L,N ,i,j,k,l,m,n 开头的, 默认改变量为整型(integer)
如果不是上边这些字母开头的变量默认为实型(real)
2.implicit 语句 和 声明的优先级
人们通过 implicit 来重新定义变量的规则
变量命名的优先级:
显示声明 > implicit > I-N规则
implicit 不是执行语句 和 其它注意事项
下面的内容很重要!!!!!!!!!!!!!!!!!!!!!!!!!!!11
1. 类型说明语句 和 implicit 语句都是非执行语句
2. 类型说明语句只在本程序单位内有效.
3.implicit 语句要置于 program 命令下面的下一行, 不能把它放在其他位置上
data 赋值语句
在 fortran77中的一种变量声明形式
注意点:
1.当有几个连续相同的变量时候, 可以用 n* 常量
- 前面的变量 和 赋值的数一定是一一对应的.
- 如果程序中出现了 多个 data 给同一个变量赋值的情况, 那么以最后写上去的那个为准
stop语句
作用和辨别
当执行到任何一个STOP语句处时,程序立即停止运行。在子程序中如果有STOP语句,它将使整个程序停止运行,而不是使控制返回到调用程序。
fortran 中可以使用多个stop
FORTRAN规定, STOP语句中n可以是一个不超过5位的无符号整数或字符串,并且它是可有可无的。 STOP语句是使程序停止运行,即结束程序的运行。
pause 语句
用法和 stop 相同, 但是 作用不同
pause语句用于 程序的暂停, 暂停后, 按一下 回车键 , 程序就可以继续运行了
GOTO语句
不提倡这种语句, 了解即可
打个比方, 我们写的代码正在吃饭, 吃饭是一件事情吧? 但是使用 goto 后, 程序回去干 goto 指定的事情. goto 会破坏程序的机构, 所以不提倡, 人们通常提上的是 专心做事.
运算符
算术运算符 |
+,- , * , **(幂运算) , / |
|
字符运算符 |
// |
拼接字符串的 |
关系运算 |
.EQ. 等于, .NE. 不等于 .GT. 大于 .GE. 大于等于 .LT. 小于 .LE. 小于等于 == , 也表示等于 /= 也表示不等于 数学中正常的大于, 小于在这里都是一样的了 |
|
逻辑运算符 |
.NOT. 一元算符 .AND. , .OR. , .EQV. 表示逻辑等价 .NEQV. 表示逻辑不等价 |
A.EQV.B A和B值为同一逻辑常量时,A.EQV.B为真 A.NEQV.B A和B的值为不同的逻辑常量,则A.NEQV.B为真 |
运算符优先级(很重要)
2.
一般运算都是 从左现右 , 如果运算式子中某个部分有乘方, 那就按照从右向左进行
最底下的括号的数字就是顺序.
运算规则 和 类型转换
允许 不同类型 包括 整型, 实型 , 复型 进行混合运算,
这也叫做 混合算数表达式
运算的时候,
1.不同类型的变量会进行转换, 低级的变量类型会被转变成高级的
2.同类型直接仍然 保持原来的类型
我的经验是 integer 类型向下取整 , real 正常的数学计算, 只不过结果结果
带着小数点. 还要注意的是 integer 类型 低于 real 类型
也就是说 , integer , real , character都能使用 , 但是 complex 只能用于比较等于还是不等于, 此外, 字符串的比较大小, 其实比较的是 字符串比的是第一个字节的ASCII码,第一个相同则比第二个.
运算的时候的注意事项
1.不同运算符之间最好用括号隔开,
2.结果为 逻辑型( .TRUE. 或者 .FALSE) 不能在参与运算
3.使用 等号和 不等号要非常小心, 因为计算机得到的是近似值而不是精确值, 所以存在误差.
4.逻辑运算符有优先级别规定, 由高到低次序为:
.NOT.,.AND.,.OR.,XOR.,.EQV.,NEQV.,其中:XOR.,.EQV.,.NEQV.的优先级相同。运算符的运算次序是按照优先级由高到低运算。
例如:
表达式“a.OR.b.AND.NOT.c”是按照先.NOT.运算,其次.AND.运算,最后.OR.运算。
当两个逻辑运算符处于相同优先级时,运算按照从左到右的顺序进行。
执行语句和非执行语句
执行语句:
编译时将被译成机器的操作指令,使计算机产生实际动作。
包括 赋值语句、输入语句、输出语句、控制转移语句等。
非执行语句
提供给编译器编译信息。编译器获得这些信息给变量或工作单元分配合适的存储空间。
类型说明语句、输入输出格式语句、数组说明语句等。 FORTRAN中一般非执行语句除输入输出格式语句外,都出现在程序模块的开始位置,即执行语句之前,并且语句有一定的先后顺序排列。例如:设定隐含类型语句IMPLICIT要求放在其他类型语句之前。
赋值时候的注意点
- 赋值的时候右边不能是 算数运算 和 逻辑运算
- 字符赋值语句在执行过程如果发现:
- .当右边字符串的表达式长度小于左边变量长度,将表达式运算后的结果长度强制转换为左边变量长度,不足补空格,并将转换后的字符串赋予左边变量;
- 当右边表达式长度大于左边变量长度,将表达式运算后的结果左侧部分赋予变量的多余截去。
3.逻辑复制语句赋值的时候必须进行变量的显式说明.
未完, 持续更新中