2 Fortran 程序设计2-顺序结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

♦ 声明1 :整数类型(INTEGER)
声明长整型,即用4个bytes来存放整数:
声明短整型,即用2个bytes来存放整数:
默认为长整型
一行可声明多个变量
♦ 声明2 :浮点数(REAL)
浮点数与整数的最大区别在于可以保存小数,不做说明 (默认)时,通常用占4个bytes的单精度浮点数。
关于有效位数的考虑……
int x
x int x1 x2 x2
x1 当 x2 0
x1 当
x2 0
转换为实型 REAL(I) MAX(I1,I2,I3) 求最大值 求最小值 求平方根
MIN(Xl,X2,X3)
min x1 , x 2 , x3
max i1 , i2 , i3
SQRT(X)
已知A=2,B=3,C=5(REAL);且I=2,J=3(INTEGER),求 下列表达式的值:
(1) A*B+C
(2) A*(B+C)
(3) B/C*A (4) B/(C*A)。 (5) A/I/J (6) I/J/A
(7) A*B**I/A**J*2
(8) C+(B/A)**3/B*2 (9) A**B**I (10) B**A**C (11) J/(I/J)
相当数学上的运算
x
exp(x)
sin x
cos x arcsin x arccosx tan x arctan x
ln x log10 x
常用的算术函数:
函数名 INT MOD SIGN REAL MAX MIN SQRT 含 义 取整 求余 求符号 应用例子 INT(X) MOD(X1,X2) SIGN(Xl,X2) 相当数学上的运算
数学表达式:
FORTRAN 表达式:
cos((A+1)*(A+1))/(N*N+1)
cos ( 1) 2 a n 2 1 x n 1 ( ) y 1 y e . arctan x 2 x a 2 ln x a e st
(x/y)**(N-1)
1.0/2.*exp(y)*atan(x) (sqrt(x+a)+3.14159)/(2*log(x))
注意:
(1) 写除法运算式子时应加上必要的括号。
(2) 乘号不能省略,如 A*SIN(X) (3) Fortran中无大、中、小括号之分,一律用小 括号。 (4) 乘方按“先右后左”原则处理。
(5) 对单项运算符(如-A中的符号)相当于在它前面 有一个运算量“0”,如:-A**2相当于0-A**2而 非(-A)**2 (6) 两整数相除,结果为整数,为切掉小数部分而 不会进行四舍五入
♦ 声明3 :复数(COMPLEX)
唯一能直接提供复数类型的语言。虚部和实部,由两个浮 点数来表示,因此也可分为双精度和单精度
♦ 声明4 :字符及字符串(CHARACTER)
即用来保存一个或一串字符时所使用的类型
♦ 声明5 :逻辑变量(LODICAL)
逻辑变量主要在逻辑判断时使用。两种数值:真和假。所 以存储时用1bit空间足够,通常由编译器自行决定空间大 小。也可以设置,但意义不大。
cos (
3
xy x y
2 2
)
表达式运算中的类型
Fortran中的常量和变量分类型,允许在不同类型的算术量(包括整、 实、双精度、复型)之间进行算术运算,不允许在算术量和非算术量
(如逻辑型、字符型)之间进行算术运算。F77作如下规定:
同类型的算术量之间运算的结果仍保持原类型。 注意:两个整数相除的商也是整数。 例如,5/2的值是2而不等于2.5,4**(-1)等于0 不同类型两个算术量运算,低向高转换后进行运算。 类型的级别如下:整型(低)→实型(高)。 类型的转换是从左向右进行的,在遇到不同类型的算术量 时才进行转换。 例如:1/2*1.0等于0,而1./2*1对于0.5。
运算的误差
实型量的运算会出现一些误差 写表达式时应尽量使每一次运算结果都在有效位数范围 之内,避免使两个相差很大的数值直接相加或相减。 判断两个实数是否相等,……
赋值语句
赋值语句的作用是将一个确定的值赋给一个变量
其一般格式为: V=e V:一个变量名,e:表达式
赋值语句有三类:算术赋值语句、逻辑赋值语句、字符 赋值语句。算术赋值语句是将一个算术量赋予一个算术 型变量。 赋值语句中的“=”号是“赋值”的符号,而不是等号, 将右边表达式的值赋给左边的变量。因此在阅读程序时 对赋值号的理解应是带方向的。赋值语句“N=N十l”的 作用是将N的原值加1再送回变量N中。 算术赋值语句兼有计算和赋值双重功能。即先计算出表 达式的值;然后将该值赋给一个变量。在Fortran程序中 的求值计算主要是用赋值语句来实现的。 赋值号左边只能是变量名(或数值元素名),而不能是表 达式,赋值号右边可以是常量、变量或表达式。 “X+Y=3.0”语句是不合法的,因为在内存中找不到一个 “X+Y”的单元来存放3.0这个数值。
不同的运算符按以下优先级次序:
1、加,减 < 乘,除 < 乘方,括号( )中优先。
2、同一优先级的两个运算,乘方按“先右后左”, 其它按“先左后右”原则。
例: x + y*z → x + (y*z) x*y**2 → x*(y**2) x/y/z → (x/y)/z x**y**z → x**(y**z) 3+5-6.0*8.0/4**2 → 3+5-48.0/16.0 = 5 例: 4b分之a → a/(4*b) 或 a/4/b,而a/4*b 和 a/4b错误 如无自信时可用括号( ),对运算时间几乎无影响。
Fortran中有六个类型说明语句:
(1)INTEGER语句(整型说明语句)
(2)REAL语句(实型,或浮点数说明语句)
(3)DOUBLE PRECISION语句(双精度说明语句)
(4)COMPLEX语句(复型说明语句)
(5)LOGICAL语句(逻辑型说明语句)
(6)CHARACTER语句(字符型说明语句)
• 运算的误差
算术运算符和运算优先级 FORTRAN提供五种算术运算符号: + 表示“加”(或正号) - 表示“减”(或负号) * 表示“乘” / 表示“除” ** 表示“乘方”
请注意:乘号用“*”表示,不能写成“×”,以免与字 母“X”混淆,也不能用“.”代替乘号。除号不能用“÷” 号。 两个运算符不能紧邻,如A*-B是不合法的,应写成A*(-
一个内在函数可要求一个或多个自变量
例如,SQRT函数只能有一个自变量,而MOD函数要求 两个自变量,MAX和MIN函数要求两个以上自变量。 注意当自变量个数规定为2个时,自变量的顺序不应任 意颠倒,如MOD(8,3)表示8被3除的余数,其值为2,而 MOD(3,8)则表示3被8除的余数,其值为3。当自变量个 数为>2时,自变量的顺序无关
变量的说明(声明,定义)
对变量类型的说明。在程序代码中,程序员向编译器要求预
留一些存放数据的内存空间。
3种方式: 1)类型说明语句 2)隐含说明语句 3)隐含约定
1)类型说明语句
格式: 类型说明符 变量名1,变量名2… 类型说明符:: 变量名1,变量名2…
例:
INTEGER X,Y
REAL:: AREA, AVERAGE, STUDT
1.285E-12表示1.285×10-12
1E2和1.0E2都表示100.0
其它直接常量,如复型、逻辑型字符型等
符号常量:用一个标识符来表示一个常量
通常用PARAMETER语句来定义
例如:
PARAMETER (PI=3.14159, M=10)
FORTRAN变量
变量的概念:程序运行过程中其值可以改变的量 (实际上代表的是一个内存单元,程序通过变量 名来访问存储单元,如:N=N+1) 变量名 :用标识符来命名。同一个程序单元中不 能用同一个标识符代表不同的变量 标识符由字母、数字和下划线组成,开头必须 是字母。
每一种数据类型决定该类型数据在计算机中的存
储方式和作用于其上的操作。
FORTRAN常量
直接常量:数据本身是一个常量 不同类型的常量有不同的表示方法: 整型常量 :正数、负数和0 实型常量 ,两种表现形式:小数和指数 小数如:5.3 ; 5. ; .3 ; -8. ; .6378
指数如:1.32E5表示1.32×105
3)隐含约定:(I-N规则)
90 以 上 不 提 倡 使 用 , 一 般 在 程 序 变 量 说 明 前 加 : IMPLICIT NONE取消I-N规则
注意:
!优先级:1->2->3
!IMIPLICIT为非执行语句,应放在所有可执行 语句之前
FORTRAN内部函数
FORTRAN内部函数(内在函数), 也称库函数
四、顺序结构程序设计

• • • •
数据概念,常量,变量及其说明
FORTRAN内部函数 运算符和表达式 赋值语句 简单的输入输出语句

程序执行控制语句
数据的概念
1.从表现形式上,数据有常量、变量、表达式、 函数之分 2.从数据类型上,有整型、实型、字符型、复型 和逻辑型等基本类型,以及数组、结构体等复杂 的数据类型
x

内在函数的执行方法:
Fortran将这些内在函数分别编成单个子程序,组成函数 库,存在于外部介质(如磁盘)上。在完成源程序的编译之 后,用LINK命令实现连接,即将已翻译成二进制指令的 目标程序与函数库连接。
例如程序中出现一个SIN函数,在连接时就将一组求正弦 值二进制指令直接插入到程序中出现SIN的地方。由于是 插入到程序内部的,所以称为“内在函数”。
内部函数指系统本身带有的能完成一定功能的 程序单位。可供用户直接使用,必须遵守其使 用规则。
常用的算术函数:
函数名 ABS EXP SIN COS ASIN ACOS TAN ATAN LOG LOG10 含 义 求绝对值 指数运算 正弦值 余弦值 反正弦 反余弦 正切 反正切 自然对数 常用对数 应用例子 ABS(X) EXP(X) SIN(X) XCOS() ASIN(X) ACOS(X) TAN(X) ATAN(X) LOG(X) LOG10(X)
应用,在流程控制中……
2)隐含说明语句 IMPLICIT
IMPLICIT说明语句将某个或某些字母开头的变量指定为所 需类型。可以用一个IMPLICIT语句同时指定几种类型 例: IMPLICIT INTEGER (A, C, T-V) 将A和C及T到V开头的变量规定为INTEGER类型 IMPLICIT INTEGER (A,B),REAL(I,K),INTEGER (X-Z) ?
注意:
1 FORTRAN不区分字母的大小写;
2 标识符的长度因FORTRAN版本不同而有差异; 77为1-6个字符,90以上为1-31个 3 标识符尽量做到“见名知义”; 如AREA,PI,STN
4 避免用一些特定意义的语句名和函数名
FORTRAN没有规定的“保留字”,但一般为避免 混淆,实际中应尽量避免用一些特定意义的语句名和函 数名等作变量名,如PRINT,WRITE,SIN
abs(a)*exp(-s*t)
练习:
将下列数学表达式写成相应的FORTRAN表达式
(3)
b b 2 4ac 2a
(4)
x2 x3 1 x 2! 3!
(5)
3 a3 b 3 cosarctan 2 c 1

e
ax 2 bx c
算术表达式的含义和表示方法
将常量、变量、函数等运算元素用运算符和括号连接起来 的一个有值的式子称为表达式。 FORTRAN中四种表达式,即:算术表达式,关系表达式, 逻辑表达式,字符表达式 算术表达式中各运算元素都是算术量,使用的运算符只 能是算术运算符,表达式的值也是一个算术量(即数值)。 Fortran算术表达式的求值运算的优先次序为: ① 括号 > ② 函数 > ③ ** > ④ * / > ⑤ + -,即括号内 的运算级别最高,加减最低。例如,SQRT(3.*2)**2 →
函数的自变量是有类型的,函数值也是有类型的
例如: MOD(8,3)中自变量8和3是整型,函数MOD(8,3)的值
“2”也是整型,
如果写成MOD(8.0,3.0),自变量是实型的,函数值也是 实型的,其值为2.0
运算符与表达式
• 算术运算符和运算优先级 • 算术表达式的含义和表示方法 • 表达式运算中的类型
相关文档
最新文档