Fortran90关于变量说明的新功能:
1.在变量说明的同时,可以给变量赋初值。 INTEGER::I=5,J=126
REAL::X=7.2,Z,W=774.2
2.在说明变量的同时也可说明其种别 REAL(KIND=4)::X,Y 或 REAL(4)::X,Y
3.在说明变量的同时,还可说明变量的属性
INTEGER,PARAMETER::I=5,J=123
Ps :PARAMETER 属性
(1)功能:用一个符号代表一个常量,称为符号常量(常数) (2)写法:
Real,Parameter ::G=9.8 &&说明类型时赋值 (3)位置:位于可执行语句之前
REAL,DIMENSION(1:10)::A 2.3.6 派生数据类型
根据需要而由基本数据类型定义新的数据类型。在一个派生类型中可包含多个基本类型。
如:TYPE STUDENT (定义开始)
CHARACTER(LEN=20)::DEPARTMENT CHARACTER(LEN=10)::CLASS CHARACTER(LEN=15)::NAME
INTEGER::NUMBER (成员定义) END TYPE STUDENT (定义结束) 派生类型变量的定义:
TYPE(STUDENT)::PERSON 变量的赋值:
PERSON=(”COMPUTER”,”92_2”,”LI LIN”,21) 成员的表示:
PERSON%CLASS=“92_2” PERSON%NAME=“LI LIN” 主程序其他限制
主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。 程序名对可执行程序是全局的,而且不得于该可执行程序中的任何其它程序单元名、外部过程名或公用块名相同,也不得于主程序内的任何局部名相同。
在主程序的作用范围内的说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语句或它们的等价属性,在主程序内SAVE语句不起作用。
主程序内的任何内部过程的定义必须跟在CONTAINS语句之后。 2.3.2 子程序
子程序是可以完成某一独立算法或功能的程序单元,但它功能的具体体现要通过主程序(或子程序)的调用来实现。
按子程序与主程序的位置关系分为内部过程和外部过程。
2.4.3 模块
模块也是一种在程序单元之外独立编写的程序单元。它有独特的形式,即模块程序单元内没有可执行语句,除了说明语句外,最多包含内部过程。模块的主要作用是供其它程序单元引用。
程序单元引用模块,实际是将模块内的全部语句复制到本程序单元。因此模块起共享及复制的作用。
模块的引用采用语句:
USE 模块1,模块2,? 基本语句概述
程序的最基本的语句主要有四种:类型说明语句、赋值语句、输入语句、输出语句。运用这些基本的语句,就可以编写一些简单的程序。 内在函数
FORTRAN 90配置的函数称为内在函数。内在函数分为三种: 基本函数 : SIGN 符号 函数值:|A1|(若A2>0) -|A1|(若A2<0) SIGN(A1,A2) Eg : SIGN(-3.0,2.0)=3.0 SIGN(3.0,-2.0)=-3.0 某些函数参数只能为实型 如:log(2.0) (loG(2)错) 转换函数
函数名 INT(X) 含义 实型转换整型、 复型的实部转换整型 REAL(X) 整型转换实型、 复型的实部转换实型 COMPLEX(X,Y) 将X,Y合成为复型 FORTRAN举例 INT(2.3)=2 INT((1.2,3.5))=1 REAL(8)=8.0 REAL((1.2,3.5))=1.2 COMPLEX(2.3,1.5)= (2.3,1.5) INT(X,KIND):将X值转换为整型,以KIND的值作为种别参数 REAL(X,KIND):将X值转换为实型,以KIND的值作为种别参数 COMPLEX(X,Y,KIND):将X,Y转换为复型,以KIND的值作为种别参数
查询函数 KIND()
SELECTED_INT_KIND() SELECTED_REAL_KIND PRECISION() RANGE() ??
不轻易使用整型量除整型量 1.0/2 2.0**(-1) 运算对象类型相同时,运算结果的类型为同一类型 注意:5/2=2 1/2=0 !!
运算对象类型不同时,系统一般先转换成相同类型后再运算 转换规则是:较低级的类型转换为较高级的类型 数据类型隐含的高低次序为(由低到高): 整型→实型→ 双精度 →复型 例: 8/5+2.0*5/2=6.0(逐步转化)
赋值语句 1、类型要求
逻辑型、字符型的赋值语句要求“=”两边类型相同 数值型赋值,不区别整型、实型和复型 2、种别方面
字符型要求种别相同
其余类型的e、V种别允许不同 输入输出语句
1、I/O的对象 ——列在中 I/O是相对于内存而言的, 键盘属于输入设备, 显示器属于输出设备, 优盘、硬盘既是输入设备,又是输出设备。 2、I/O的方向及语句 READ (U,f) U:设备(部件) f:格式 WRITE 其中: 输入 READ语句 输出 PRINT语句,只输出到显示器 WRITE语句,适合任何输出设备
U(部件) * : 系统约定设备 某个值: 指定通道号(设备逻辑号、文件号) 表控格式I/O(*): 系统约定的格式。
f(格式) 基本格式(自定格式)I/O:按用户要求的格式组织I/0。 带控制信息表的I/O:
I:碰到回车(ENTER)为一个记录。 O:一行为一个记录。
程序执行过程中按表控格式输入数据 各数据间有分隔符: ,或空格
类型匹配:整型:带小数点只取整数部分; 复数:(实部,虚部);
字符:‘一串字符’:赋值时长度转化或一串字符 即‘’可省略。
逻辑:以T或F作为第一个字母的字符串(点号1个、空格多个在前忽略) 3.输入的数据必须是常数,不能是变量和表达式 如输入2+1,则出错。 4.输入数据个数:
1)不得少于变量的个数; 2)可分行输入;
3)多余的数据不起作用
5.空格可以多个,/表示输入数据结束,后面的数据被取消,没有输入数据的变量值为原值; Read*,A,B,C
输入: 2,1/3 结果: A=2 B=1 C=0
6、如果几个连续变量需要赋同一个值,可以使用重复因子r,即r*[c]: r为重复数 4*0.5,2*3,2*’AB’,3*(1.0,-1.0)
输入输出的三种不同的格式: 1.表控格式的输入输出 2.有格式的输入输出
3.带控制信息表的输入输出
整型编辑符:Iw[.m] 1.I 编辑符控制输出:
功能:用于整型数据的输入输出 格式: Iw Iw.m rIw w—输入输出数据字段总宽度 m—至少m位数字 r—为重复系数
例1.设 J=10, K=-12,L=12 WRITE (*,”(I3,I5,I7)”)J,K,L □10□□-12□□□□123 注意:
1.数字在指定的区域内右端对齐,不足w则左边补空格。 2.负数的符号也包含在字段宽度内
3.如果应输出的列数超过了规定的字段宽度,则不输出有效数据,以w个*填充。 4、BN, BZ :Blank interpretation
Specifies interpretation of blanks in numeric fields (空格是否当0处理)仅用于输入格式语句,如 read “(BN,2I3)”,I,J 例2.如果将格式串改为: “(I3,I5.4,I7.5)” 则输出: □10-0012□□00123
例3.如果L=123456
□10-0012□123456 !!Iw.m :m<位数,则按照实际数输出
实型编辑符 1.编辑符格式 [r]Fw.d 将数据按小数形式输出 [r]Ew.d 将数据按指数形式输出 [r]Gw.d 根据数据大小决定采用E或F格式 r—重复系数
w—字段宽度(总宽度) d—小数部分宽度
F编辑符
功能:用于实数编辑,小数形式的输出(定点数:单精度实数,4个字节,7个有效数字) 当实型数值小于0.0(负数)时,则w>=n+d+2 当实型数值大于或等于0.0时,则w>=n+d+1 用此来确定w的宽度 注意:
1. w包括数符和小数点两位
2. 若数据小于w位,则左边补空格 3. 输出值时舍入,而不是截断
4. 如果是科学计数法则转换小数形式