第10章语句函数 语句函数是用一个语句定义的的函数。 【引例】求函数fx)=x2+x+1在x=1,2,3时的值。 以前的方法: x=1.0 1=x*x+x+1.0 x=2.0 f2=x*x+x+1.0 x=3.0 f3=x*x+x+1.0 write(*, *)f1, f2, f3 end 2021/2/24
1 语句函数的方法: f(x)=x*x+x+1.0 write(* , *) f(1.0), f(2.0), f(3.0) end 2021/2/24 第10章 语句函数 语句函数是用一个语句定义的的函数。 【引例】求函数f(x)=x 2+x+1在x=1, 2, 3时的值。 以前的方法: x=1.0 f1=x*x+x+1.0 x=2.0 f2=x*x+x+1.0 x=3.0 f3=x*x+x+1.0 write(* , *) f1, f2, f3 end
语句函数的定义 2 1.定义形式:∫(x1,x2,…,xn)=e 其中:(④)f既是语句函数的函数名又代表该函数的函数值 其类型既可隐式说明也可显式定义。 如: real i ip(x1/x (2)函数名f后一对括号中的x1,x2,…,xn代表语句函数 的自变量,称为虚拟参数(虚参形式参数形参,哑元) 虚参的特点: 语句函数定义时虚参自变量是没有具体数值的,只 有在调用语句函数时将实参赋给虚参,虚参才有具体的值。 2021/2/24
2 2021/2/24 一、语句函数的定义 1. 定义形式:f (x1 , x2 ,…, xn )=e 其中:⑴ f 既是语句函数的函数名又代表该函数的函数值, 其类型既可隐式说明也可显式定义。 如: ⑵ 函数名 f 后一对括号中的x1 , x2 , …, xn代表语句函数 的自变量,称为虚拟参数(虚参,形式参数,形参,哑元)。 虚参的特点: 语句函数定义时虚参(自变量)是没有具体数值的,只 有在调用语句函数时将实参赋给虚参,虚参才有具体的值。 real ip ip(x)=1/x
◆当语句函数没有虚参(自变量)时,括号不能省。 3 如:f()=0.0 ◆语句函数中的虚参自变量可以与程序中的变量同名, 但它们彼此独立、无任何关系。 如:f(X) x*x+X+10 x=3.0 y=f(x) ◆虚参的类型既可隐式说明也可显式定义。 如: integer x 当程序中有与虚参同名的变量 ip(x=1/x 时,则类型定义语句对两者均 x=3.0 起作用。 2021/2/24
3 2021/2/24 当语句函数没有虚参(自变量)时,括号不能省。 如: 语句函数中的虚参(自变量)可以与程序中的变量同名, 但它们彼此独立、无任何关系。 如: 虚参的类型既可隐式说明也可显式定义。 如: f( )=0.0 f(x)=x*x+x+1.0 x=3.0 y=f(x) integer x ip(x)=1/x x=3.0 当程序中有与虚参同名的变量 时,则类型定义语句对两者均 起作用
2定义语句函数应遵循的规则 ()一般当函数用一条语句足以完成时才使用语 句函数的形式定义函数。 ()语句函数定义语句属于非执行语句,放在所 有可执行语句之前和所有的说明语句之后。 (3)语句函数定义时右边的表达式中除包含虚参 (自变量)外,还可以包含常数、变量、数组元素、 外部函数、内部函数和已定义过的语句函数。 当包含变量时,程序在调用语句函数之前,变 量应被赋值。 2021/2/24
4 2021/2/24 2. 定义语句函数应遵循的规则 ⑴ 一般,当函数用一条语句足以完成时才使用语 句函数的形式定义函数。 ⑵ 语句函数定义语句属于非执行语句,放在所 有可执行语句之前和所有的说明语句之后。 ⑶ 语句函数定义时右边的表达式中除包含虚参 (自变量)外,还可以包含常数、变量、数组元素、 外部函数、内部函数和已定义过的语句函数。 当包含变量时,程序在调用语句函数之前,变 量应被赋值
如: 5 sum(a, b, c=a+b+c aver(a, b, c=sum (a, b, c)/3.0 irid=mod(id, 3) logical xor, x1, X2 xor(x1, X2=not x1and X2 sS(i,x,y=a(0+x+y 二、语句函数的引用 即语句函数的调用,与使用 Fortran系统内部函 数的方式一样。 注意语句函数只能在定义它的程序单元使用。 2021/2/24
5 2021/2/24 如: 二、语句函数的引用 即语句函数的调用,与使用Fortran系统内部函 数的方式一样。 注意:语句函数只能在定义它的程序单元使用。 sum(a, b, c)=a+b+c aver(a, b, c)=sum(a, b, c)/3.0 ir(id)=mod(id, 3) logical xor,x1,x2 xor(x1,x2)=.not.x1.and.x2 ss(i,x,y)=a(i)+x+y
【例】求出各小题中x的值。 6 ①ina(a)=50+exp(a*a)④f(b,x)=ab+X a=-1.0 a=20 x=2.0 h=10.0 x=10+ha(x)60+e4 t16.0 ②fun(a)=1+a 4.0 X=f(h/4, sqrt(t)9.0 xfun(fun(fun (1.0)) s(x=a*x+b e f(x=a*x+b f(d=(e)ld a=3.0 p=4.0 b=6.0 a=3.0 c=7.0 b=60 X=f(c+60) 45.0 e=50 525 X=f(p) 2021/2/24
6 2021/2/24 【例】求出各小题中x的值。 ① fna(a)=5.0+exp(a*a) a=-1.0 x=2.0 x=1.0+fna(x) ② fun(a)=1+a x=fun(fun(fun(1.0))) 6.0+e4 4.0 ③ f(x)=a*x+b a=3.0 b=6.0 c=7.0 x=f(c+6.0) 45.0 ④ f(b, x)=a*b+x a=2.0 h=10.0 t=16.0 x=f(h/4, sqrt(t)) 9.0 ⑤ s(x)=a*x+b f(d)=s(e)/d p=4.0 a=3.0 b=6.0 e=5.0 x=f(p) 5.25
7 Sheeny 2021/2/24
7 2021/2/24