1.行的书写(行的长度、分行、续行)
一行可以是0~132个字符,空格有意义, 语句最长不超过2640个字符 一行可以有多个语句,用“;”分隔
一个语句可分行写,读行标记为&(放在尾部),但如为关键字,首尾均加&。 最多可有511个续行。
2.说明语句必须出现在可执行语句之前,格式说明语句(FORMAT语句)除外。 3.注释标志符: 自由格式:! 固定格式:C *
语句分隔符:分号;(仅自由格式可以使用) 续行符: 自由格式:&
申明标号: 1到5位无符号整数
空格:关键字、变量、常量内部不能用空格,但相邻两者之间须用空格
4.信息处理的分类:数值处理和信息处理
现代计算机工作原理:程序存储和程序控制 (冯·诺依曼) 1、运算器——算术运算、逻辑运算 2、控制器——根据指令控制计算机工作
运算器、控制器和寄存器称为中央处理器CPU 3、I/O设备——提供数据传输服务 4、总线——数据传输的公共通道
1.机器语言:二进制代码形式,可以被计算机直接执行,不可移植 2.汇编语言:用助记符来代替机器指令,容易记忆,不可移植
3.高级语言:接近自然语言(英语)的程序设计语言,又称算法语言,易学、易用、易维护,可移植性好例:FORTRAN、BASIC、PASCAL、C、LISP、PROLOG等 5.FORTRAN90程序是一种分块结构,由若干个程序单元块组成:
主程序、外部子程序、模块、块数据单元 无论是主程序单元,还是子程序单元,都是独立的程序单位,应该独立编写,它们的形式相似。 非语句行:注释语句:!后的所有字符都被编译器忽略。 可独占一行,也可在其它语句之后,空行为注释行(固定格式用C和*)
6.常量的定义:常量是程序执行过程中不能变化的量。
基本数据类型有五种: 整型、实型、复型、字符型和逻辑型
前三种属于数值类型,后两种为非数值类型,主要用于文字处理和控制。 FORTRAN 90通过KIND值确定整数的存储开销、最大位数和取值范围,如表所示。缺省KIND值则取默认值4。
KIND值 字节数 二进位数 取值范围 1 1 8 -128~127 2 2 16 -32768~32767
4 4 32 -2147483648~2147483647 格式:SELECTEND_INT_KIND(N) :
功能:返回范围在-10N~10N的整数的kind-Value
在FORTRAN90中,也可以表示二进制、八进制、十六进制形式的无符号整数。其形式如下: 二进制数:B’101101’ 或 B”101101” 八进制数:O’76210’ 十六进制数:Z’1FA2’
1
实型常量 指数形式
⑴数字部分:小数形式实数或整数
⑵指数部分:只能为整数 错例:4E5.6
⑶数字部分不能丢;例:10-4: E-4(错) 1E-4(正确)
⑷以标准化形式(规格化指数)输出(<1或>=1,此处分为两类) 1。数字部分的值小于1,且小数点后的第一位数字非0
例:0.743643E-12 (正确) 21.835E-12 (错) 2。数字部分有且仅有一位非零的整数。
例:7.43643E-12 (正确) 0.21835E-12 (错)
一般实数范围:-1038~+1038,有效位7~8位也有的系统允许数的范围更大,可以超过10100。
上溢:overflow 下溢:当0处理
为了能得到理想的范围和有效数字,要求说明种别类型参数值。(书上有误) 例:INTEGER,PARAMETER::long=SELECTED_REAL_KIND(8,88)
则符号常数long提供了至少8位精度,以及-1088~+1088的值的范围。 以此说明的实型常量:
1、PRECISION(4.37_long) 精度至少为8
2、RANGE(4.37_long) 范围至少88次冪 常用实数一般分为两种: real(4)单精度(默认) real(8)双精度
实数种别为8时常量的表示(双精度数)
有效位:15位; 数字部分D±指数 例:1.2D2
字符常量长度:字符串内字符的个数空格算一个,起止界不算,长度可为0。(空串’’或\)
用于标识一个程序成分,例如符号常量、变量、派生类型等。对于名字有下列要求: 1.名字的长度不能超过31个字符
2.名字的组成成分可以是字母、数字和下划线 3.名字的第一个字符必须是字母 4.在名字中不能出现空格
提倡使用具有一定含义的名字,提高程序的清晰度和可读性。 变量字母、数字、下划线组成 字母开头 长度1-31个
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
2
REAL,DIMENSION(1:10)::A
程序单元概念
程序单元是FORTRAN语言的基本成分。程序单元可以是主程序、子程序、模块或块数据程序单元。子程序可以是函数子程序或子例行子程序。模块包含的说明是对其它的程序单元形成可访问性。块数据单元用来对有名公用区中的数据对象赋初值。(F90中不提倡使用)
? 主程序是不包含SUBROUTINE、FUNCTION、MODULE或BLOCK DATA语句作为其第
一条语句的程序单元。主程序其他限制
? 主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。
? 程序名对可执行程序是全局的,而且不得于该可执行程序中的任何其它程序单元
名、外部过程名或公用块名相同,也不得于主程序内的任何局部名相同。
? 在主程序的作用范围内的说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语
句或它们的等价属性,在主程序内SAVE语句不起作用。
? 主程序内的任何内部过程的定义必须跟在CONTAINS语句之后。
? 子程序是可以完成某一独立算法或功能的程序单元,但它功能的具体体现要通过主
程序(或子程序)的调用来实现。
? 按子程序与主程序的位置关系分为内部过程和外部过程。 ? 内部过程可以出现在主程序、外部过程或模块内。
? 模块也是一种在程序单元之外独立编写的程序单元。它有独特的形式,即模块程序
单元内没有可执行语句,除了说明语句外,最多包含内部过程。模块的主要作用是供其它程序单元引用。
程序单元引用模块,实际是将模块内的全部语句复制到本程序单元。因此模块起共享及复制的作用。
块数据程序单元对有名公用块内的数据对象提供初值。
? 支持程序的最基本的语句主要有四种:类型说明语句、赋值语句、输入语句、输出
语句。
? 整型数据运算速度快,在机内存储没有误差,但能表达的值的范围较小;
实型数据能表示小数、分数及不同的精度,表达的值的范围大,但数的外部表示和机器存储会有误差。 例,10.2,在机内表示可能为10.999998。
使用实数时,尽量避免作相等或不相等的比较例:A是实型变量,对其与10.2作相等与否比较,不能写成 :IF(A==10.2) PRINT *,A应改写为:IF(ABS(A-10.2)<1.0E-6)PRINT*,A
? 有关种别的函数 ? KIND(X)
? SELECTED_INT_KIND(N) ? SELECTED_REAL_KIND(N,M) ? 测试标准种别:
? KIND(0) 4(整型) ? KIND(0.0) 4(实型) ? KIND(.FALSE.) 4(逻辑类型)
? KIND(‘A’) 1(字符类型)
? ?
3
? 各种基本类型种别可取值 ? INTEGER:1,2,4(默认) ? REAL:4(单精度,默认),8(双精度) ? LOGICAL:1,2,4(默认) ? COMPLEX:4(单精度,默认),8(双精度) ? CHARACTER:1
? PARAMETER 属性
? (1)功能:用一个符号代表一个常量,称为符号常量(常数) ? (2)写法:Real,Parameter ::G=9.8 &&说明类型时赋值 ? (3)位置:位于可执行语句之前 ? 使用规则
? ① 程序中不得改变其值
? ② 与普通常量的区别:不作语句标号和FORMAT中重复系数 ? ③ 类型:一般采用I-N规则,否则,需先定义其类型 ? 例:parameter(n=5) ? ** * /
+-(正,负,加,减) 3.5+2*A/B+V**2
④②③⑤ ① ?
FORTRAN 90配置的函数称为内在函数。内在函数分为三种:
? 基本函数 ? 转换函数 ? 查询函数
? ? ? ? ? ? ? ? ? ? ? ? ? ?
⑴三角函数单位为弧度sinD cosD TAND 可以为度(F90) (2)某些函数参数只能为实型如:log(2.0) (loG(2)错)
(4)自变量可以是有值的常量、变量、表达式 例: ABS(B**2+SIN(A+B)) INT(X,KIND):将X值转换为整型,以KIND的值作为种别参数 REAL(X,KIND):将X值转换为实型,以KIND的值作为种别参数 CMPLX(X,Y,KIND):将X,Y转换为复型,以KIND的值作为种别参数 对于连续的乘方运算,采用先右后左的方式
例:3**2**3,先计算2**3=8,再进行3**8=6561
运算对象类型相同时,运算结果的类型为同一类型注意有效位数的限制引起的误差 注意:5/2=2 1/2=0 !!
计算机存储数据的有效位数是有限的 一般为十进制数的6至7位
例:1.0/3.0的结果在内存中不是0.3333333333333…,而是0.3333333 注意溢出
计算结果超出了存储单元所允许的数的范围
4